summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2017-02-24 14:32:42 +0100
committerJarek Kobus <jaroslaw.kobus@qt.io>2017-03-09 08:37:44 +0000
commit7f8c49d3dd0d4bd06ab57a71c7e2957aa5c224aa (patch)
tree3ead2537a41539caec0db0cb1cc0747ed5882ed7
parent060b9c9528971951b379785cb771c17ed7a50696 (diff)
downloadqttools-7f8c49d3dd0d4bd06ab57a71c7e2957aa5c224aa.tar.gz
Remove clucene sources
Change-Id: I636e5c5d64955af60614684d71d220cda34758d7 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
-rw-r--r--src/assistant/3rdparty/clucene/APACHE.license201
-rw-r--r--src/assistant/3rdparty/clucene/AUTHORS22
-rw-r--r--src/assistant/3rdparty/clucene/COPYING30
-rw-r--r--src/assistant/3rdparty/clucene/ChangeLog0
-rw-r--r--src/assistant/3rdparty/clucene/LGPL.license475
-rw-r--r--src/assistant/3rdparty/clucene/LICENSES.txt705
-rw-r--r--src/assistant/3rdparty/clucene/README92
-rw-r--r--src/assistant/3rdparty/clucene/qt_attribution.json22
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene.h38
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/CLBackwards.h87
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/CLConfig.h304
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/CLMonolithic.cpp115
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/LuceneThreads.h72
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/StdHeader.cpp136
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/StdHeader.h509
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.cpp200
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.h234
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.cpp389
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.h309
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.cpp46
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.h47
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.cpp58
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.h37
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.cpp446
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.h88
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizerConstants.h30
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/CompilerAcc.h166
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/CompilerBcb.h68
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/CompilerGcc.h175
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/CompilerMsvc.h136
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/PlatformMac.h19
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/PlatformUnix.h12
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/PlatformWin32.h11
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/compiler.h259
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/define_std.h113
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.cpp386
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.h11264
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_lltot.cpp47
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_tchar.h126
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcscasecmp.cpp21
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcslwr.cpp15
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstod.cpp23
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstoll.cpp46
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_tprintf.cpp153
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/repl_wchar.h121
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h74
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/threadPthread.h59
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp173
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/config/utf8.cpp237
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/condition.cpp80
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/condition.h64
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/error.cpp73
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/error.h74
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/lucenebase.h75
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/mem.h130
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/debug/memtracking.cpp371
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/document/DateField.cpp60
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/document/DateField.h64
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/document/Document.cpp237
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/document/Document.h158
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/document/Field.cpp315
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/document/Field.h261
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.cpp380
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.h219
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.cpp571
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.h107
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfo.h16
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.cpp236
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.h171
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.cpp231
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.h60
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.cpp186
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.h49
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.cpp254
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.h316
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.cpp668
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.h485
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.cpp697
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.h425
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.cpp722
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.h202
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentHeader.h314
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.cpp259
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.h128
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.cpp104
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.h47
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.cpp74
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.h38
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.cpp723
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.h169
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentReader.cpp816
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermDocs.cpp216
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.cpp389
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.h138
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermPositions.cpp101
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermVector.cpp188
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/Term.cpp182
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/Term.h146
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.cpp53
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.h61
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.cpp443
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.h106
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.cpp185
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.h89
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermVector.h418
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorReader.cpp393
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorWriter.cpp349
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/index/Terms.h174
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.cpp371
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.h67
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.cpp215
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.h136
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.cpp509
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.h165
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.cpp369
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.h204
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.cpp73
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.h76
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.cpp79
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.h38
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/BooleanClause.h90
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.cpp363
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.h126
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.cpp248
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.h99
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.cpp86
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.h80
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.cpp213
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.h86
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Compare.h161
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.cpp144
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.h50
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.cpp93
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.h59
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.cpp85
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.h31
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.cpp133
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.h66
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.cpp55
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.h182
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.cpp529
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.h144
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldDoc.h70
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.cpp171
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.h159
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.cpp212
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.h216
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Filter.h46
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.cpp136
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.h61
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.cpp357
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.h156
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.cpp107
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.h55
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Hits.cpp174
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.cpp362
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.h73
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.cpp227
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.h95
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.cpp98
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.h62
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.cpp116
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.h41
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.cpp463
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.h127
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQueue.h36
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.cpp225
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.h65
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.cpp273
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.h75
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.cpp73
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.h44
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.cpp150
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.h51
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.cpp204
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.h71
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Scorer.h80
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.cpp141
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.h456
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.cpp233
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.h268
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.cpp106
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.h34
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Sort.cpp345
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/Sort.h356
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.cpp213
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.h81
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.cpp120
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.h53
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.cpp147
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.h69
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.cpp150
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.h67
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/Directory.h108
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.cpp662
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.h216
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.cpp233
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.h190
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.cpp163
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.h152
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/InputStream.h21
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/Lock.cpp27
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/Lock.h106
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/MMapInput.cpp203
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/OutputStream.h23
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.cpp446
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.h195
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.cpp212
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.h76
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Arrays.h164
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.cpp119
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.h62
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Equators.cpp180
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Equators.h274
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.cpp107
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.h55
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Misc.cpp295
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Misc.h75
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/PriorityQueue.h177
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Reader.cpp186
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/Reader.h138
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.cpp335
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.h77
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.cpp158
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.h61
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.cpp55
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.h143
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/VoidList.h174
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/VoidMap.h269
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/bufferedstream.h157
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/dirent.cpp221
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/dirent.h105
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp103
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.h38
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/inputstreambuffer.h126
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/jstreamsconfig.h9
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/streambase.h148
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/stringreader.h124
-rw-r--r--src/assistant/3rdparty/clucene/src/CLucene/util/subinputstream.h141
-rw-r--r--src/assistant/clucene/clucene.pro33
-rw-r--r--src/assistant/clucene/fulltextsearch.pri161
-rw-r--r--src/assistant/clucene/license.txt503
-rw-r--r--src/assistant/clucene/qanalyzer.cpp242
-rw-r--r--src/assistant/clucene/qanalyzer_p.h175
-rw-r--r--src/assistant/clucene/qclucene-config_p.h586
-rw-r--r--src/assistant/clucene/qclucene_global_p.h154
-rw-r--r--src/assistant/clucene/qdocument.cpp202
-rw-r--r--src/assistant/clucene/qdocument_p.h123
-rw-r--r--src/assistant/clucene/qfield.cpp194
-rw-r--r--src/assistant/clucene/qfield_p.h142
-rw-r--r--src/assistant/clucene/qfilter.cpp80
-rw-r--r--src/assistant/clucene/qfilter_p.h98
-rw-r--r--src/assistant/clucene/qhits.cpp117
-rw-r--r--src/assistant/clucene/qhits_p.h109
-rw-r--r--src/assistant/clucene/qindexreader.cpp192
-rw-r--r--src/assistant/clucene/qindexreader_p.h138
-rw-r--r--src/assistant/clucene/qindexwriter.cpp214
-rw-r--r--src/assistant/clucene/qindexwriter_p.h147
-rw-r--r--src/assistant/clucene/qquery.cpp381
-rw-r--r--src/assistant/clucene/qquery_p.h211
-rw-r--r--src/assistant/clucene/qqueryparser.cpp199
-rw-r--r--src/assistant/clucene/qqueryparser_p.h132
-rw-r--r--src/assistant/clucene/qreader.cpp124
-rw-r--r--src/assistant/clucene/qreader_p.h127
-rw-r--r--src/assistant/clucene/qsearchable.cpp226
-rw-r--r--src/assistant/clucene/qsearchable_p.h158
-rw-r--r--src/assistant/clucene/qsort.cpp120
-rw-r--r--src/assistant/clucene/qsort_p.h107
-rw-r--r--src/assistant/clucene/qterm.cpp157
-rw-r--r--src/assistant/clucene/qterm_p.h123
-rw-r--r--src/assistant/clucene/qtoken.cpp173
-rw-r--r--src/assistant/clucene/qtoken_p.h135
-rw-r--r--src/assistant/clucene/qtokenizer.cpp140
-rw-r--r--src/assistant/clucene/qtokenizer_p.h120
-rw-r--r--src/assistant/clucene/qtokenstream.cpp90
-rw-r--r--src/assistant/clucene/qtokenstream_p.h118
-rw-r--r--src/assistant/help/qhelpcollectionhandler.cpp2
-rw-r--r--src/assistant/help/qhelpsearchengine.h2
278 files changed, 3 insertions, 59612 deletions
diff --git a/src/assistant/3rdparty/clucene/APACHE.license b/src/assistant/3rdparty/clucene/APACHE.license
deleted file mode 100644
index 261eeb9e9..000000000
--- a/src/assistant/3rdparty/clucene/APACHE.license
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/src/assistant/3rdparty/clucene/AUTHORS b/src/assistant/3rdparty/clucene/AUTHORS
deleted file mode 100644
index 4a7904b6d..000000000
--- a/src/assistant/3rdparty/clucene/AUTHORS
+++ /dev/null
@@ -1,22 +0,0 @@
-As with most development projects, contributions come from many people and in
-many forms. The CLucene project would like to thank it's many contributors.
-Omissions are merely accidental, please e-mail ustramooner@users.sourceforge.net
-if you have been left out or a contribution is not mentioned.
-
-CLucene was originally ported to C++ by Ben van Klinken (ustramooner@users.sourceforge.net)
-from Doug Cutting's popular java search engine, Lucene (see http://lucene.apache.org).
-
-Here is a list of contributors. Please send me an email at ustramooner@users.sourceforge.net
-if I have left you out.
-
-Doug Cutting cutting@users.sourceforge.net
-John Wheeler j_wheeler@users.sourceforge.net
-Robert G. Ristroph rgristroph@users.sourceforge.net
-David Rushby woodsplitter@users.sourceforge.net
-Jimmy Pritts jpritts@sdf.lonestar.org
-Peter Edwards peter@dragonstaff.co.uk
-Jorge Sabater Redondo jsabater@elderecho.com
-Daniel Glassey danglassey@ntlworld.com
-Peter Gladkikh batyi@mail.ru
-Pedja amigo@max3d.com
-Peter Hodges hodges.peter@gmail.com
diff --git a/src/assistant/3rdparty/clucene/COPYING b/src/assistant/3rdparty/clucene/COPYING
deleted file mode 100644
index 0e32bb4f3..000000000
--- a/src/assistant/3rdparty/clucene/COPYING
+++ /dev/null
@@ -1,30 +0,0 @@
-License
-
-The CLucene Core Library uses a dual license strategy for the source code.
-These licenses are the GNU Lesser General Public License (LGPL) and the Apache
-License (Version 2.0). Users can choose the license they wish to distribute
-their software under. This means that you do not need to abide by *both*
-licenses, but rather than you can choose the license which most suits your
-needs.
-
-To rephrase this and to make it perfectly clear:
-CLucene is distributed under the GNU Lesser General Public License (LGPL)
- *or*
-the Apache License, Version 2.0
-
-However, we are an open source project, and we encourage users to use the LGPL
-license and participate fully in the free software community. Dual licensing
-of the CLucene source code provides open and free access to the technology both
-for the GPL community and for other developers or companies that cannot use the
-GPL.
-
-You can freely modify, extend, and improve the CLucene source code. The only
-question is whether or not you must provide the source code and contribute
-modifications to the community. The GNU and Apache licenses allow different
-ranges of flexibility in this regard, but in the end, regardless of the license
-used, we highly recommend that you submit any bugs, incompatibilities or
-added features.
-
-Note that this same license does *not* apply to the CLucene Contributions
-package. You should read the COPYING file in that directory or package for
-more information. \ No newline at end of file
diff --git a/src/assistant/3rdparty/clucene/ChangeLog b/src/assistant/3rdparty/clucene/ChangeLog
deleted file mode 100644
index e69de29bb..000000000
--- a/src/assistant/3rdparty/clucene/ChangeLog
+++ /dev/null
diff --git a/src/assistant/3rdparty/clucene/LGPL.license b/src/assistant/3rdparty/clucene/LGPL.license
deleted file mode 100644
index 422c76072..000000000
--- a/src/assistant/3rdparty/clucene/LGPL.license
+++ /dev/null
@@ -1,475 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 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.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-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 and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
--------------------------------------------------------------------------------
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
--------------------------------------------------------------------------------
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, 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 library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete 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 distribute a copy of this License along with the
-Library.
-
- 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 Library or any portion
-of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-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 Library, 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 Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
--------------------------------------------------------------------------------
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you 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.
-
- If distribution of 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 satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
--------------------------------------------------------------------------------
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be 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.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
--------------------------------------------------------------------------------
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library 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.
-
- 9. 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 Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-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 with
-this License.
-
--------------------------------------------------------------------------------
-
- 11. 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 Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library 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 Library.
-
-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.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library 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.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser 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 Library
-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 Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
--------------------------------------------------------------------------------
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-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
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "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
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. 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 LIBRARY 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
-LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
diff --git a/src/assistant/3rdparty/clucene/LICENSES.txt b/src/assistant/3rdparty/clucene/LICENSES.txt
deleted file mode 100644
index 3459edb5f..000000000
--- a/src/assistant/3rdparty/clucene/LICENSES.txt
+++ /dev/null
@@ -1,705 +0,0 @@
-The CLucene Core Library uses a dual license strategy for the source code.
-These licenses are the GNU Lesser General Public License (LGPL) and the Apache
-License (Version 2.0). Users can choose the license they wish to distribute
-their software under. This means that you do not need to abide by *both*
-licenses, but rather than you can choose the license which most suits your
-needs.
-
-To rephrase this and to make it perfectly clear:
-CLucene is distributed under the GNU Lesser General Public License (LGPL)
- *or*
-the Apache License, Version 2.0
-
-However, we are an open source project, and we encourage users to use the LGPL
-license and participate fully in the free software community. Dual licensing
-of the CLucene source code provides open and free access to the technology both
-for the GPL community and for other developers or companies that cannot use the
-GPL.
-
-You can freely modify, extend, and improve the CLucene source code. The only
-question is whether or not you must provide the source code and contribute
-modifications to the community. The GNU and Apache licenses allow different
-ranges of flexibility in this regard, but in the end, regardless of the license
-used, we highly recommend that you submit any bugs, incompatibilities or
-added features.
-
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 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.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-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 and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
--------------------------------------------------------------------------------
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
--------------------------------------------------------------------------------
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, 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 library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete 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 distribute a copy of this License along with the
-Library.
-
- 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 Library or any portion
-of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-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 Library, 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 Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
--------------------------------------------------------------------------------
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you 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.
-
- If distribution of 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 satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
--------------------------------------------------------------------------------
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be 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.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
--------------------------------------------------------------------------------
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library 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.
-
- 9. 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 Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-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 with
-this License.
-
--------------------------------------------------------------------------------
-
- 11. 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 Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library 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 Library.
-
-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.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library 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.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser 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 Library
-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 Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
--------------------------------------------------------------------------------
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-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
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "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
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. 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 LIBRARY 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
-LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
diff --git a/src/assistant/3rdparty/clucene/README b/src/assistant/3rdparty/clucene/README
deleted file mode 100644
index ee4f49369..000000000
--- a/src/assistant/3rdparty/clucene/README
+++ /dev/null
@@ -1,92 +0,0 @@
-CLucene README
-==============
-
-------------------------------------------------------
-CLucene is a C++ port of Lucene.
-It is a high-performance, full-featured text search
-engine written in C++. CLucene is faster than lucene
-as it is written in C++.
-------------------------------------------------------
-
-CLucene has contributions from many, see AUTHORS
-
-CLucene is distributed under the GNU Lesser General Public License (LGPL)
- *or*
-the Apache License, Version 2.0
-See the LGPL.license and APACHE.license for the respective license information.
-Read COPYING for more about the license.
-
-Installation
-------------
-* For Linux, MacOSX, cygwin and MinGW build information, read INSTALL.
-* Boost.Jam files are provided in the root directory and subdirectories.
-* Microsoft Visual Studio (6&7) are provided in the win32 folder.
-
-Mailing List
-------------
-Questions and discussion should be directed to the CLucene mailing list
- at clucene-developers@lists.sourceforge.net
-Find subscription instructions at
- http://lists.sourceforge.net/lists/listinfo/clucene-developers
-Suggestions and bug reports can be made on our bug tracking database
- (http://sourceforge.net/tracker/?group_id=80013&atid=558446)
-
-The latest version
-------------------
-Details of the latest version can be found on the CLucene sourceforge project
-web site: http://www.sourceforge.net/projects/clucene
-
-Documentation
--------------
-Documentation is provided at http://clucene.sourceforge.net/doc/doxygen/html/
-You can also build your own documentation by running doxygen from the root directory
-of clucene.
-CLucene is a very close port of Java Lucene, so you can also try looking at the
-Java Docs on http://lucene.apache.org/java/
-
-
-Performance
------------
-Very little benchmarking has been done on clucene. Andi Vajda posted some
-limited statistics on the clucene list a while ago with the following results.
-
-There are 250 HTML files under $JAVA_HOME/docs/api/java/util for about
-6108kb of HTML text.
-org.apache.lucene.demo.IndexFiles with java and gcj:
-on mac os x 10.3.1 (panther) powerbook g4 1ghz 1gb:
- . running with java 1.4.1_01-99 : 20379 ms
- . running with gcj 3.3.2 -O2 : 17842 ms
- . running clucene 0.8.9's demo : 9930 ms
-
-I recently did some more tests and came up with these rough tests:
-663mb (797 files) of Guttenberg texts
-on a Pentium 4 running Windows XP with 1 GB of RAM. Indexing max 100,000 fields
-• Jlucene: 646453ms. peak mem usage ~72mb, avg ~14mb ram
-• Clucene: 232141. peak mem usage ~60, avg ~4mb ram
-
-Searching indexing using 10,000 single word queries
-• Jlucene: ~60078ms and used ~13mb ram
-• Clucene: ~48359ms and used ~4.2mb ram
-
-Platform notes
---------------
-
-'Too many open files'
-Some platforms don't provide enough file handles to run CLucene properly.
-To solve this, increase the open file limit:
-
-On Solaris:
-ulimit -n 1024
-set rlim_fd_cur=1024
-
-Acknowledgments
-----------------
-
-The Apache Lucene project is the basis for this software, so the biggest
-acknoledgment goes to that project.
-
-We wish to acknowledge the following copyrighted works that
-make up portions of the CLucene software:
-
-CLucene relies heavily on the use of autoconf and libtool to provide
-a build environment.
diff --git a/src/assistant/3rdparty/clucene/qt_attribution.json b/src/assistant/3rdparty/clucene/qt_attribution.json
deleted file mode 100644
index 8b2430b05..000000000
--- a/src/assistant/3rdparty/clucene/qt_attribution.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "Id": "clucene",
- "Name": "Clucene Core Library",
- "QDocModule": "qthelp",
- "QtUsage": "Used in the Qt Help module and in Qt Assistant.",
-
- "Description": "CLucene is a C++ port of Lucene. It is a high-performance, full- featured text search engine written in C++. CLucene is faster than lucene as it is written in C++.",
- "Homepage": "http://clucene.sourceforge.net/",
- "License": "GNU Lesser General Public License v2.1 only or Apache License, Version 2.0",
- "LicenseId": "(LGPL-2.1 OR Apache-2.0)",
- "LicenseFile" : "LICENSES.txt",
- "Copyright": "Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-Copyright (C) 1999 Tom Tromey
-Copyright (C) 2000 Red Hat, Inc.
-Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-Copyright (C) 2003-2006 Jos van den Oever
-Copyright (C) 2003-2006 Matt J. Weinstein
-Copyright (C) 2003-2006 The Apache Software Foundation
-Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
-Copyright (C) 2015 The Qt Company Ltd.
-"
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene.h b/src/assistant/3rdparty/clucene/src/CLucene.h
deleted file mode 100644
index 1eac800fd..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-//Includes some standard headers for searching and indexing.
-#ifndef _lucene_CLucene_
-#define _lucene_CLucene_
-
-#include "CLucene/StdHeader.h"
-#include "CLucene/debug/condition.h"
-#include "CLucene/debug/mem.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/IndexWriter.h"
-#include "CLucene/index/MultiReader.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/search/IndexSearcher.h"
-#include "CLucene/search/MultiSearcher.h"
-#include "CLucene/search/DateFilter.h"
-#include "CLucene/search/WildcardQuery.h"
-#include "CLucene/search/FuzzyQuery.h"
-#include "CLucene/search/PhraseQuery.h"
-#include "CLucene/search/PrefixQuery.h"
-#include "CLucene/search/RangeQuery.h"
-#include "CLucene/search/BooleanQuery.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/document/Field.h"
-#include "CLucene/document/DateField.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/FSDirectory.h"
-#include "CLucene/queryParser/QueryParser.h"
-#include "CLucene/queryParser/MultiFieldQueryParser.h"
-#include "CLucene/analysis/standard/StandardAnalyzer.h"
-#include "CLucene/analysis/Analyzers.h"
-#include "CLucene/util/Reader.h"
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/CLBackwards.h b/src/assistant/3rdparty/clucene/src/CLucene/CLBackwards.h
deleted file mode 100644
index ffaf42824..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/CLBackwards.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _clucene_backwards_h
-#define _clucene_backwards_h
-
-//In light of the recent major changes to clucene,
-//this file should help to maintain some backwards compatibility
-//include it after including StdHeader.h
-//
-//Note: I haven't tested this much, so please send me your changes
-
-//dirent is one of the most major changes that won't easily port.
-//you can use the TCHAR copying macros, STRCPY_TtoA and STRCPY_AtoT
-//to copy between different character types.
-
-//If you use stringPrintF, you will need to add the target string
-//size parameter, because it is using _sntprintf... Change this if you
-//want, but _sntprintf is much safer
-
-#define char_t TCHAR
-#define uchar_t TCHAR
-#define l_byte_t byte_t
-
-//#define stringSpn _tcsspn //not used in clucene anymore
-#define stringCSpn _tcscspn
-#define stringLength _tcslen
-//#define stringToInteger _ttoi //not used in clucene anymore, use integer w/ base
-#define stringFind _tcsstr
-#define stringFindChar _tcschr
-#define stringCompare _tcscmp
-#define stringNCopy _tcsncpy
-#define stringCopy _tcscpy
-#define stringCat _tcscat
-//#define stringToken _tcstok //not used in clucene anymore
-#define stringPrintF _sntprintf //you will have errors, because now we used printf w/ bufferlen count
-#define printFormatted _tprintf
-
-//conversion functions
-#define integerToString _i64tot
-#define stringToIntegerBase _tcstoi64
-#define stringToFloat _tcstod
-
-//file find structures
-#define Cmd_Stat fileStat
-#define Struct_Stat fileStat
-#define stringICompare _tcsicmp
-#define stringNCompare _tcsncmp
-#define stringDifference _tcscmp
-
-//character conversion functions
-#define isSpace _istspace
-#define isDigit _istwdigit
-#define isAlNum _istwalnum
-#define toLower _totlower
-#define stringUpper _tcsupr
-//#define stringLower _tcslwr //not used in clucene anymore
-
-#define _THROWX(y) _THROWT(y)
-#define _THROWC(y) _THROWA(y)
-
-//file naming stuff - remember we have changed all names to file naming lower case
-#define fileRename _rename
-#define fileFullName(abs,rel) _realpath(rel,abs)
-#define makeDirectory _tmkdir
-#define unlinkFile _unlink
-
-//no longer supported definitions
-#ifdef _UNICODE
- #define TO_CHAR_T STRDUP_AtoT
- #define _cout wcout
- #define _cin wcin
- #define _cerr wcerr
-#else
- #define TO_CHAR_T STRDUP_WtoT
- #define _cout cout
- #define _cin cin
- #define _cerr cerr
-#endif
-
-//some headers that used to be automatically included:
-#include "CLucene/util/dirent.h" //if we have dirent, then the native one will be used
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/CLConfig.h b/src/assistant/3rdparty/clucene/src/CLucene/CLConfig.h
deleted file mode 100644
index c63c083ff..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/CLConfig.h
+++ /dev/null
@@ -1,304 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_Config_
-#define _lucene_Config_
-
-
-////////////////////////////////////////////////////////////////////
-// this settings should be set up in the compiler,
-// but are put here for reference as to what could be defined
-////////////////////////////////////////////////////////////////////
-//
-//define this if you want debugging code to be enabled
-//#define _DEBUG
-//
-//define this if you want condition debugging to be enabled
-#if defined(_DEBUG) && !defined(_CL__CND_DEBUG)
- #define _CL__CND_DEBUG
-#endif
-//
-//define this to print out lots of information about merges, etc
-//requires __CL__CND_DEBUG to be defined
-//#define _CL_DEBUG_INFO stdout
-//
-//to disable namespaces define this
-//#define DISABLE_NAMESPACE
-//
-//This is mostly for windows. If you have put the google sparse
-//map code in your include path somewhere, then define this
-//to use it.
-//However, for msvc, there are no significant gains since there
-//is already a compatible hashmap available.
-//#define _CL_HAVE_GOOGLE_DENSE_HASH_MAP
-//
-////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////
-// These options can be set depending on the particular needs of
-// Your application
-////////////////////////////////////////////////////////////////////
-//
-//define this to force the build into ascii mode
-//#define _ASCII
-//
-//define this to force the build into ucs2 mode
-//#define _UCS2
-//
-//if a wide character is being converted to a ascii character and it
-//cannot fit, this character is used instead. Required.
-#define LUCENE_OOR_CHAR(c) ((char)(((unsigned short)c)&0xFF))
-//
-//define if you would like to force clucene to use the internal
-//character functions.
-//Tests may display unpredictable behaviour if this is not defined.
-#define LUCENE_USE_INTERNAL_CHAR_FUNCTIONS
-//
-//define this to enable mmap support in the fsdirectory IndexInput
-//todo: only available for windows so far...need to add MMapInput.cpp to project
-//EXPERIMENTAL
-//#define LUCENE_FS_MMAP
-//
-//LOCK_DIR implementation:
-//define this to set an exact directory for the lock dir (not recommended)
-//all other methods of getting the temporary directory will be ignored
-//#define LUCENE_LOCK_DIR "/tmp"
-//
-//define this to try and load the lock dir from this specified environment variable
-#define LUCENE_LOCK_DIR_ENV_1 "TEMP"
-//define this if you want to have look up this environment variable if the first one fails
-#define LUCENE_LOCK_DIR_ENV_2 "TMP"
-//define this if you want to have a fallback directory, if not defined then
-//the lockdirectory will be the index directory
-#define LUCENE_LOCK_DIR_ENV_FALLBACK "/tmp"
-//
-////////////////////////////////////////////////////////////////////
-
-
-
-////////////////////////////////////////////////////////////////////
-// The following are search query options
-// THe NO_* options can make CLucene faster and/or smaller
-// special queries sometime require longer search times or may
-// not be required
-////////////////////////////////////////////////////////////////////
-//
-//Define this to remove fuzzy query and sloppy scoring
-//#define NO_FUZZY_QUERY
-//
-//Define to remove wildcard t*m or te?m to match term
-//#define NO_WILDCARD_QUERY
-//
-//Define to remove prefix term query - ter* to match term or terms
-//#define NO_PREFIX_QUERY
-//
-//Define to remove range (exlusive and inclusive)
-//#define NO_RANGE_QUERY
-//
-//This must always be defined. They can be adjusted if required. But
-//general Wildcard string would be '*' and Wildcard Char would be '?'
-//Both are Required.
-#define LUCENE_WILDCARDTERMENUM_WILDCARD_STRING '*'
-#define LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR '?'
-//
-////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////
-// memory handling configurations
-////////////////////////////////////////////////////////////////////
-//
-//If this is defined, lucene's configurations are changed
-//to use less memory, but may run slower.
-//todo: i dont think this actualy changes speed much, just memory
-#define LUCENE_OPTIMIZE_FOR_MEMORY
-//
-//define this if you want the pointer tracking to be enabled
-//this is a useful tool for memory leak tracking
-//The LuceneBase can slow down the code a *lot*
-#if defined(_DEBUG)
- #if !defined(LUCENE_DISABLE_MEMTRACKING) && !defined(LUCENE_ENABLE_MEMLEAKTRACKING)
- #define LUCENE_ENABLE_MEMLEAKTRACKING
- #endif
-#endif
-//
-//enable use of rich file/line tracking. use CL_FILELINE to pass
-//to functions like stringDuplicate (or use CL_STRDUP* functions instead) and
-//CLStringIntern::x.
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING)
- #define LUCENE_ENABLE_FILELINEINFO
-#endif
-//
-//enable creation of clucene.log file. Logs every
-//call to new operator. Must have LUCENE_ENABLE_MEMLEAKTRACKING enabled.
-//writes log in this format.
-//action,file name,file line,allocation size
-//logging can be disabled by setting _lucene_disable_debuglogging to true
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING) && defined(_DEBUG)
-//#define LUCENE_ENABLE_CONSTRUCTOR_LOG
-#endif
-//
-//
-//enable this if you want to enable reference counting. This is
-//not necessary or useful in most cases except when implementing wrappers
-//which have reference counting. If the wrapper wraps a StringReader,
-//for example, it should expect that the wrapped StringReader should not
-//be deleted. However, when the stringreader is added into a Field,
-//the Field usually takes over the stringReader and deletes it on completion.
-//If reference counting is enabled, the wrapper can add a reference to any class
-//and when _CLDECDELETE is called, the reference is decremented and only deleted
-//if the refcount is zero.
-#define LUCENE_ENABLE_REFCOUNT
-
-
-////////////////////////////////////////////////////////////////////
-// These options allow you to remove certain implementations
-// out of clucene so that they can be implemented in the client
-// application
-////////////////////////////////////////////////////////////////////
-//
-//define this to your own setting if you would like to implement your own
-//threading locking code. it should have the same sort of functions as
-//mutex_default. If not defined, clucene will try and use posix,win32 critical
-//sections, or a timer based mutex hack.
-//#define _LUCENE_THREADMUTEX CL_NS(util)::mutex_default
-//
-//define this if you want to implement the _Cnd_OutDebug routine yourself
-//you can then easily customise in your own application how to handle debug messages
-//#define _CND_DEBUG_DONTIMPLEMENT_OUTDEBUG
-//
-//define this if you want to implement your own namespace macros
-//#define _LUCENE_DONTIMPLEMENT_NS_MACROS
-//
-//define this if you do not want clucene to include any standard libraries.
-//this could be useful if you want to use alternate libraries
-//#define LUCENE_DISABLE_INCLUDES
-//
-////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////
-// These options will be changed depending on your compiler/platform
-// but can also be changed here if required
-////////////////////////////////////////////////////////////////////
-//
-//define this if multi-threading support is not required
-//if not defined, multi-thread locking will
-//occur (and its related processing overhead)
-//note: it is recommended to disable multithreading if you do not need it
-//there is a lot of overhead that can be avoided.
-//#define _CL_DISABLE_MULTITHREADING
-//
-//if you want to define your own default file encoding. specify it
-//here - normally defined in the platform specific headers
-//#define PLATFORM_DEFAULT_READER_ENCODING CL_NS(util)::FileReader::ENCODING_ASCII
-//
-//disable hash implementations (if available)
-//#define LUCENE_DISABLE_HASHING
-////////////////////////////////////////////////////////////////////
-
-
-
-////////////////////////////////////////////////////////////////////
-// These options should not be changed. But you can experiment with
-// them to optimize performance
-////////////////////////////////////////////////////////////////////
-//
-//some defaults, wouldn't usually need to be changed
-//Buffer size for input/output streams. Required.
-#define LUCENE_STREAM_BUFFER_SIZE 1024
-//
-// DSR:2004.08.19:
-// Formerly, StringBuffer used 1024 as the default size of its internal buffer.
-// However, StringBuffer is used primarily for token- and term-oriented
-// processing, e.g. in StandardTokenizer. I've calculated that the average
-// token (as produced by StandardTokenizer) in all .txt files distributed in
-// the Project Gutenberg CD Image (August 2003 release) has only 6 characters.
-// Although most languages are likely to have a longer average word length than
-// English due to the popularity of "non-atomized" conjugation and declension
-// mechanisms, 1024 is still vastly excessive.
-// I made two changes intended to deliver better overall performance:
-// a) Switched to a default StringBuffer character capacity of 32. Though 32
-// is longer than the average token, the high cost of realloc makes a
-// slightly liberal default size optimal. I chose the default size of 32
-// after fairly extensive experimentation on the Gutenberg e-texts. The
-// results are summarized in the following table:
-// ------------------------------------------------------------------------
-// LUCENE_DEFAULT_TOKEN_BUFFER_SIZE value | % faster than default size 1024
-// ------------------------------------------------------------------------
-// 8 : 4%
-// 16 : 7%
-// 32 : 6%
-// 64 : 3%
-// A default size of 32 is actually slightly slower than 16, but I was
-// experimenting on English text; I expect that 32 will maintain decent
-// performance in languages such as German, and in technical documents
-// with long tokens.
-//
-// b) To offset the switch to a smaller default buffer size, I implemented a
-// more aggressive growth strategy. A StringBuffer now [at least] doubles
-// the size of its internal buffer every time it needs to grow, rather
-// than [at least] increasing by LUCENE_DEFAULT_TOKEN_BUFFER_SIZE no
-// matter how many times it has already grown.
-//Required.
-#define LUCENE_DEFAULT_TOKEN_BUFFER_SIZE 32
-//todo: should implement a similar strategy in analysis/token
-//
-//Expert: The fraction of {@link TermDocs} entries stored in skip tables,
-//used to accellerate {@link TermDocs#skipTo(int)}. Larger values result in
-//smaller indices, greater acceleration, but fewer accelerable cases, while
-//smaller values result in bigger indices, less acceleration and more
-//accelerable cases. More detailed experiments would be useful here. */
-#define LUCENE_DEFAULT_TERMDOCS_SKIP_INTERVAL 16
-//
-//Size of TermScore cache. Required.
-#define LUCENE_SCORE_CACHE_SIZE 32
-//
-//analysis options
-//maximum length that the CharTokenizer uses. Required.
-//By adjusting this value, you can greatly improve the performance of searching
-//and especially indexing. Default is 255, but smaller numbers will decrease
-//the amount of memory used as well as increasing the speed.
-#define LUCENE_MAX_WORD_LEN 255
-//Maximum length of a token word.
-//Should be the same or more than LUCENE_MAX_WORD_LEN
-//if not defined, then no token limit, but may be slower
-//if defined will be faster (up to 15% in some cases), but will use more memory
-#ifndef LUCENE_OPTIMIZE_FOR_MEMORY
- #define LUCENE_TOKEN_WORD_LENGTH LUCENE_MAX_WORD_LEN
-#endif
-//
-//maximum field length. some optimisation can be done if a maximum field
-//length is given... The smaller the better
-#define LUCENE_MAX_FIELD_LEN 100
-//
-//The initial value set to BooleanQuery::maxClauseCount. Default is 1024
-#define LUCENE_BOOLEANQUERY_MAXCLAUSECOUNT 1024
-//
-//bvk: 12.3.2005
-//==============================================================================
-//Previously the way the tokenizer has worked has been changed to optionally
-//use a a fixed word length. I have implemented this in the Term class as well.
-//It seems that by predefining the text length instead of using new TCHAR[x]
-//in the constructor greatly improves the performance by 20-30% for certain
-//operations.
-//Maximum length of a term text.
-//Should be the same or more than LUCENE_MAX_WORD_LEN
-//if not defined, then no term text limit, but may be slower
-//if defined will be faster (up to 30% in some cases), but will use more memory
-#ifndef LUCENE_OPTIMIZE_FOR_MEMORY
- #define LUCENE_TERM_TEXT_LENGTH LUCENE_MAX_WORD_LEN
-#endif
-//
-//Size of the CharTokenizer buffersize. Required.
-#define LUCENE_IO_BUFFER_SIZE 1024
-//
-//the minimum amount the segment term enum should grow by. Must be at least 1
-#define LUCENE_SEGMENTTERMENUM_GROWSIZE 8
-//
-////////////////////////////////////////////////////////////////////
-
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/CLMonolithic.cpp b/src/assistant/3rdparty/clucene/src/CLucene/CLMonolithic.cpp
deleted file mode 100644
index b2476fdfa..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/CLMonolithic.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-/*
-* this is a monolithic file that can be used to compile clucene using one source file.
-* it simplifies some build processes by avoiding static & dynamic compalation pitfalls.
-*
-* note: when creating a project add either this file, or all the other .cpp files, not both!
-*/
-#include "CLucene/StdHeader.cpp"
-#include "CLucene/analysis/Analyzers.cpp"
-#include "CLucene/analysis/AnalysisHeader.cpp"
-#include "CLucene/analysis/standard/StandardAnalyzer.cpp"
-#include "CLucene/analysis/standard/StandardFilter.cpp"
-#include "CLucene/analysis/standard/StandardTokenizer.cpp"
-#include "CLucene/config/gunichartables.cpp"
-#include "CLucene/config/repl_tcscasecmp.cpp"
-#include "CLucene/config/repl_tcslwr.cpp"
-#include "CLucene/config/repl_tcstod.cpp"
-#include "CLucene/config/repl_lltot.cpp"
-#include "CLucene/config/repl_tcstoll.cpp"
-#include "CLucene/config/repl_tprintf.cpp"
-#include "CLucene/config/threads.cpp"
-#include "CLucene/config/utf8.cpp"
-#include "CLucene/debug/condition.cpp"
-#include "CLucene/debug/error.cpp"
-#include "CLucene/debug/memtracking.cpp"
-#include "CLucene/document/DateField.cpp"
-#include "CLucene/document/Document.cpp"
-#include "CLucene/document/Field.cpp"
-#include "CLucene/index/CompoundFile.cpp"
-#include "CLucene/index/DocumentWriter.cpp"
-#include "CLucene/index/FieldInfos.cpp"
-#include "CLucene/index/FieldsReader.cpp"
-#include "CLucene/index/FieldsWriter.cpp"
-#include "CLucene/index/IndexWriter.cpp"
-#include "CLucene/index/IndexReader.cpp"
-#include "CLucene/index/MultiReader.cpp"
-#include "CLucene/index/SegmentInfos.cpp"
-#include "CLucene/index/SegmentMergeInfo.cpp"
-#include "CLucene/index/SegmentMergeQueue.cpp"
-#include "CLucene/index/SegmentMerger.cpp"
-#include "CLucene/index/SegmentReader.cpp"
-#include "CLucene/index/SegmentTermDocs.cpp"
-#include "CLucene/index/SegmentTermEnum.cpp"
-#include "CLucene/index/SegmentTermPositions.cpp"
-#include "CLucene/index/SegmentTermVector.cpp"
-#include "CLucene/index/Term.cpp"
-#include "CLucene/index/TermInfo.cpp"
-#include "CLucene/index/TermInfosReader.cpp"
-#include "CLucene/index/TermInfosWriter.cpp"
-#include "CLucene/index/TermVectorReader.cpp"
-#include "CLucene/index/TermVectorWriter.cpp"
-#include "CLucene/queryParser/Lexer.cpp"
-#include "CLucene/queryParser/MultiFieldQueryParser.cpp"
-#include "CLucene/queryParser/QueryParser.cpp"
-#include "CLucene/queryParser/QueryParserBase.cpp"
-#include "CLucene/queryParser/QueryToken.cpp"
-#include "CLucene/queryParser/TokenList.cpp"
-#include "CLucene/search/BooleanQuery.cpp"
-#include "CLucene/search/BooleanScorer.cpp"
-#include "CLucene/search/CachingWrapperFilter.cpp"
-#include "CLucene/search/ChainedFilter.cpp"
-#include "CLucene/search/DateFilter.cpp"
-#include "CLucene/search/ConjunctionScorer.cpp"
-#include "CLucene/search/ExactPhraseScorer.cpp"
-#include "CLucene/search/Explanation.cpp"
-#include "CLucene/search/FieldCache.cpp"
-#include "CLucene/search/FieldCacheImpl.cpp"
-#include "CLucene/search/FieldDocSortedHitQueue.cpp"
-#include "CLucene/search/FieldSortedHitQueue.cpp"
-#include "CLucene/search/FilteredTermEnum.cpp"
-#include "CLucene/search/FuzzyQuery.cpp"
-#include "CLucene/search/Hits.cpp"
-#include "CLucene/search/HitQueue.cpp"
-#include "CLucene/search/IndexSearcher.cpp"
-#include "CLucene/search/MultiSearcher.cpp"
-#include "CLucene/search/MultiTermQuery.cpp"
-#include "CLucene/search/PhrasePositions.cpp"
-#include "CLucene/search/PhraseQuery.cpp"
-#include "CLucene/search/PhraseScorer.cpp"
-#include "CLucene/search/PrefixQuery.cpp"
-#include "CLucene/search/QueryFilter.cpp"
-#include "CLucene/search/RangeQuery.cpp"
-#include "CLucene/search/RangeFilter.cpp"
-#include "CLucene/search/SearchHeader.cpp"
-#include "CLucene/search/Similarity.cpp"
-#include "CLucene/search/SloppyPhraseScorer.cpp"
-#include "CLucene/search/Sort.cpp"
-#include "CLucene/search/TermQuery.cpp"
-#include "CLucene/search/TermScorer.cpp"
-#include "CLucene/search/WildcardQuery.cpp"
-#include "CLucene/search/WildcardTermEnum.cpp"
-#include "CLucene/store/FSDirectory.cpp"
-#include "CLucene/store/IndexInput.cpp"
-#include "CLucene/store/Lock.cpp"
-#include "CLucene/store/MMapInput.cpp"
-#include "CLucene/store/IndexOutput.cpp"
-#include "CLucene/store/RAMDirectory.cpp"
-#include "CLucene/store/TransactionalRAMDirectory.cpp"
-#include "CLucene/util/BitSet.cpp"
-#include "CLucene/util/Equators.cpp"
-#include "CLucene/util/FastCharStream.cpp"
-#include "CLucene/util/fileinputstream.cpp"
-#include "CLucene/util/Misc.cpp"
-#include "CLucene/util/Reader.cpp"
-#include "CLucene/util/StringBuffer.cpp"
-#include "CLucene/util/StringIntern.cpp"
-#include "CLucene/util/dirent.cpp"
-#include "CLucene/util/ThreadLocal.cpp"
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/LuceneThreads.h b/src/assistant/3rdparty/clucene/src/CLucene/LuceneThreads.h
deleted file mode 100644
index cad07869f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/LuceneThreads.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _LuceneThreads_h
-#define _LuceneThreads_h
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#if defined(_CL_DISABLE_MULTITHREADING)
- #define SCOPED_LOCK_MUTEX(theMutex)
- #define DEFINE_MUTEX(x)
- #define STATIC_DEFINE_MUTEX(x)
- #define _LUCENE_SLEEP(x)
- #define _LUCENE_CURRTHREADID 1
- #define _LUCENE_THREADID_TYPE char
-
- CL_NS_DEF(util)
- class CLuceneThreadIdCompare
- {
- public:
- enum
- { // parameters for hash table
- bucket_size = 4, // 0 < bucket_size
- min_buckets = 8
- }; // min_buckets = 2 ^^ N, 0 < N
-
- bool operator()( char t1, char t2 ) const{
- return t1 < t2;
- }
- };
- CL_NS_END
-#else
-
- #if defined(_LUCENE_DONTIMPLEMENT_THREADMUTEX)
- //do nothing
- #elif defined(_CL_HAVE_PTHREAD)
- #include "CLucene/config/threadPthread.h"
- #elif defined(_CL_HAVE_WIN32_THREADS) || defined(_CLCOMPILER_MSVC) || defined(__MINGW32__) //note that mingw32 could have pthreads, so put this after.
- #if !defined(_CL_HAVE_WIN32_THREADS)
- #define _CL_HAVE_WIN32_THREADS
- #endif
- #include "CLucene/config/threadCSection.h"
- #else
- #error A valid thread library was not found
- #endif //mutex types
-
- CL_NS_DEF(util)
- /** @internal */
- class mutexGuard
- {
- private:
- _LUCENE_THREADMUTEX* mrMutex;
- mutexGuard(const mutexGuard& clone);
- public:
- mutexGuard( _LUCENE_THREADMUTEX& rMutex );
- ~mutexGuard();
- };
- CL_NS_END
-
- #define SCOPED_LOCK_MUTEX(theMutex) CL_NS(util)::mutexGuard theMutexGuard(theMutex);
- #define DEFINE_MUTEX(theMutex) _LUCENE_THREADMUTEX theMutex;
- #define STATIC_DEFINE_MUTEX(theMutex) static _LUCENE_THREADMUTEX theMutex;
-
-#endif //_CL_DISABLE_MULTITHREADING
-
-
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/StdHeader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/StdHeader.cpp
deleted file mode 100644
index 1f520b518..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/StdHeader.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CLucene/util/Misc.h"
-
-#include "CLucene/search/Sort.h"
-#include "CLucene/search/Similarity.h"
-#include "CLucene/search/FieldCache.h"
-#include "CLucene/search/FieldSortedHitQueue.h"
-
-#if defined(_CLCOMPILER_MSVC) && defined(_DEBUG)
-# define CRTDBG_MAP_ALLOC
-# include <stdlib.h>
-#ifndef UNDER_CE
-# include <crtdbg.h>
-#endif
-#endif
-
-CL_NS_USE(util)
-
-const TCHAR *_CONST_LUCENE_BLANK_STRING = _T("");
-const char *_CONST_LUCENE_BLANK_ASTRING = "";
-TCHAR* _LUCENE_BLANK_STRING = const_cast<TCHAR *>(_CONST_LUCENE_BLANK_STRING);
-char* _LUCENE_BLANK_ASTRING = const_cast<char *>(_CONST_LUCENE_BLANK_ASTRING);
-
-#ifndef Q_CC_MIPS
-#if defined(_LUCENE_THREADMUTEX_USINGDEFAULT)
-# if defined(_LUCENE_PRAGMA_WARNINGS)
-# pragma message ("==================Using clunky thread mutex!!!==================")
-# else
-# if !defined(Q_OS_SOLARIS)
-# warning "==================Using clunky thread mutex!!!=================="
-# endif
-# endif
-#endif
-
-#if defined(_ASCII)
-# if defined(_LUCENE_PRAGMA_WARNINGS)
-# pragma message ("==================Using ascii mode!!!==================")
-# else
-# if !defined(Q_OS_SOLARIS)
-# warning "==================Using ascii mode!!!=================="
-# endif
-# endif
-#endif
-
-//This causes confusion, because CLucene doesn't really need hashed maps/sets. My experience with the
-//hash maps on linux are that there are no significant improvements in using them (infact it adversely
-//affected performance... therefore we'll just silently ignore
-/*#if defined(LUCENE_DISABLE_HASHING)
-# if defined(_LUCENE_PRAGMA_WARNINGS)
-# pragma message ("==================Hashing not available or is disabled! CLucene may run slower than optimal ==================")
-# else
-# if !defined(Q_OS_SOLARIS)
-# warning "==================Hashing not available or is disabled! CLucene may run slower than optimal =================="
-# endif
-# endif
-#endif*/
-#endif
-
-//clears all static memory. do not attempt to do anything else
-//in clucene after calling this function
-void _lucene_shutdown(){
- CL_NS(search)::FieldSortedHitQueue::Comparators.clear();
- _CLDELETE(CL_NS(search)::Sort::RELEVANCE);
- _CLDELETE(CL_NS(search)::Sort::INDEXORDER);
- _CLDELETE(CL_NS(search)::ScoreDocComparator::INDEXORDER);
- _CLDELETE(CL_NS(search)::ScoreDocComparator::RELEVANCE);
- _CLDELETE(CL_NS(search)::SortField::FIELD_SCORE);
- _CLDELETE(CL_NS(search)::SortField::FIELD_DOC);
- _CLDELETE(CL_NS(search)::FieldCache::DEFAULT);
-
- _CLLDELETE(CL_NS(search)::Similarity::getDefault());
-
- CL_NS(util)::CLStringIntern::shutdown();
-}
-
-void CLDebugBreak(){
- //can be used for debug breaking...
-#if defined(_CLCOMPILER_MSVC) && defined(_DEBUG)
- _CrtDbgBreak();
-#else
- int i=0; //a line to put breakpoint on
-#endif
-}
-
-//these are functions that lucene uses which
-//are not replacement functions
-char* lucenestrdup(const char* v CL_FILELINEPARAM){
- size_t len = strlen(v);
- char* ret = new char[len+1];
- strncpy(ret,v,len+1);
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING)
-# if defined(LUCENE_ENABLE_FILELINEINFO)
- CL_NS(debug)::LuceneBase::__cl_voidpadd((void*)ret,file,line,len);
-# else
- CL_NS(debug)::LuceneBase::__cl_voidpadd((void*)ret,__FILE__,__LINE__,len);
-# endif
-#endif
- return ret;
-}
-
-#ifdef _UCS2
-wchar_t* lucenewcsdup(const wchar_t* v CL_FILELINEPARAM){
- size_t len = _tcslen(v);
- wchar_t* ret = new wchar_t[len+1];
- _tcsncpy(ret,v,len+1);
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING)
-# if defined(LUCENE_ENABLE_FILELINEINFO)
- CL_NS(debug)::LuceneBase::__cl_voidpadd((void*)ret,file,line,len);
-# else
- CL_NS(debug)::LuceneBase::__cl_voidpadd((void*)ret,__FILE__,__LINE__,len);
-# endif
-#endif
- return ret;
-}
-#endif //ucs2
-
-
-//ok, these are the exceptions, but these never
-//exist on non-msvc platform, so lets put it here
-#ifndef _CL_HAVE_FILELENGTH
-int64_t lucene_filelength(int filehandle)
-{
- struct fileStat info;
- if (fileHandleStat(filehandle, &info) == -1)
- _CLTHROWA( CL_ERR_IO,"fileStat error" );
- return info.st_size;
-}
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/StdHeader.h b/src/assistant/3rdparty/clucene/src/CLucene/StdHeader.h
deleted file mode 100644
index 439bc948a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/StdHeader.h
+++ /dev/null
@@ -1,509 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#ifndef lucene_stdheader_h
-#define lucene_stdheader_h
-
-#if defined(OVERRIDE_DEFAULT_CLCONFIG)
- #include "AltCLConfig.h"
-#else
- #include "CLucene/CLConfig.h"
-#endif
-
-//first inclusion of compiler.h (it will be called again later)
-#include "CLucene/config/compiler.h"
-
-extern void _lucene_shutdown();
-extern int _lucene_counter_break; //can set a watch on this
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING)
- extern bool _lucene_disable_debuglogging; //if LUCENE_ENABLE_CONSTRUCTOR_LOG is on, dont do log if this is true
-#endif
-
-////////////////////////////////////////////////////////
-// default includes
-////////////////////////////////////////////////////////
-#ifndef LUCENE_DISABLE_INCLUDES
-
-#include <stdio.h>
-
-#if defined(_CL_STDC_HEADERS)
- #include <stdlib.h>
- #include <stddef.h>
-#else
- #if defined(_CL_HAVE_STDLIB_H)
- #include <stdlib.h>
- #endif
-#endif
-
-#if defined(_CL_HAVE_STRING_H)
- #if !defined(_CL_STDC_HEADERS) && defined(_CL_HAVE_MEMORY_H)
- #include <memory.h>
- #endif
- #include <string.h>
-#elif defined(_CL_HAVE_STRINGS_H)
- //note: as a side note, strtok is not thread-safe.. so be careful where you use it!
- #error "strtok replacement for BSD has not been implemented"
- #include <strings.h>
- #if !defined(_CL_HAVE_STRCHR)
- #define strchr index
- #define strrchr rindex
- #endif
-#endif
-
-#if defined(_CL_HAVE_UNISTD_H)
- #include <unistd.h>
-#elif defined(_CL_HAVE_IO_H) && defined(_CL_HAVE_DIRECT_H)
-#ifndef UNDER_CE
- #include <io.h>
- #include <direct.h>
-#endif
-#else
- #error "Neither unistd.h or (io.h & direct.h) were available"
-#endif
-
-#ifndef _CL_DISABLE_NATIVE_EXCEPTIONS
- #ifdef _CL_HAVE_STDEXCEPT
- #include <stdexcept>
- #else
- #error "CLucene can't compile with exception handling on because <stdexcept> header is not available"
- #endif
-#endif
-
-#if defined(_CL_STAT_MACROS_BROKEN)
- #error "Haven't implemented STAT_MACROS_BROKEN fix yet"
-#elif defined(_CL_HAVE_SYS_STAT_H)
-#ifdef UNDER_CE
- #include <types.h>
-#else
- #include <sys/stat.h>
-#endif
-#else
- #error "Haven't implemented platforms with no sys/stat.h"
-#endif
-
-#if defined(_CL_HAVE_STDARG_H)
- #include <stdarg.h>
-#else
- #error "CLucene can compile, but some extras may not work"
-#endif
-
-#if defined(_CL_HAVE_MATH_H)
- #include <math.h>
-#else
- #error "CLucene can't compile without <math.h>"
-#endif
-
-#if defined(_CL_HAVE_MAP)
- #include <map>
-#else
- #error "CLucene can't compile without the map header"
-#endif
-
-#if defined(_CL_HAVE_LIST)
- #include <list>
-#else
- #error "CLucene can't compile without the list header"
-#endif
-
-#if defined(_CL_HAVE_SET)
- #include <set>
-#else
- #error "CLucene can't compile without the set header"
-#endif
-
-#if defined(_CL_HAVE_VECTOR)
- #include <vector>
-#else
- #error "CLucene can't compile without the vector header"
-#endif
-
-#if !defined(LUCENE_DISABLE_HASHING) && defined(_CL_HAVE_HASH_MAP) && defined(_CL_HAVE_HASH_SET)
- //hashing is all or nothing!
- #include <hash_map>
- #include <hash_set>
-#elif !defined(LUCENE_DISABLE_HASHING) && defined(_CL_HAVE_EXT_HASH_MAP) && defined(_CL_HAVE_EXT_HASH_SET)
- #include <ext/hash_map>
- #include <ext/hash_set>
-#elif !defined(LUCENE_DISABLE_HASHING)
- #define LUCENE_DISABLE_HASHING
-#endif
-#if !defined(LUCENE_DISABLE_HASHING) && !defined(CL_NS_HASHING)
- #define CL_NS_HASHING(func) std::func
-#endif
-
-#if defined(_CL_HAVE_ALGORITHM)
-# include <algorithm>
-#else
-# error "Can't compile clucene without <algorithm>"
-#endif
-
-#if defined(_CL_HAVE_FUNCTIONAL)
-# include <functional>
-#else
-# error "Can't compile clucene without <functional>"
-#endif
-
-#if !defined(_CL_HAVE_PRINTF)
- #error "CLucene can't compile without printf, replacements have not been implemented"
-#endif
-
-#if !defined(_CL_HAVE_SNPRINTF) && !defined(_CL_HAVE__SNPRINTF)
- #error "CLucene can't compile without snprintf, replacements have not been implemented"
-#elif !defined(_CL_HAVE__SNPRINTF)&& defined(_CL_HAVE_SVNPRINTF)
- #define _snprintf snprintf
-#endif
-
-#if defined(_UCS2)
- #if defined(_CL_HAVE_WCHAR_H)
- #include <wchar.h>
- #else
- //actually the repl_wchar.h replacements header will
- //always be included. It replaces some functions
- //that are missing in some wchar.h headers.
- #endif
-#endif
-
-#if defined(_UCS2) && defined(_CL_HAVE_WCTYPE_H)
- #include <wctype.h>
-#elif defined(_ASCII) && defined(_CL_HAVE_CTYPE_H)
- #include <ctype.h>
- #undef LUCENE_USE_INTERNAL_CHAR_FUNCTIONS
-#elif defined(_UCS2)
- //must be in _UCS2 to use internal char functions
- #undef LUCENE_USE_INTERNAL_CHAR_FUNCTIONS
- #define LUCENE_USE_INTERNAL_CHAR_FUNCTIONS
-#else
- #error "Cannot compile in _ASCII without ctype.h"
-#endif
-
-//always include replacement, some missing tchar defines
-#include "CLucene/config/repl_tchar.h"
-
-#if defined(_CL_HAVE_ERRNO_H)
-#ifndef UNDER_CE
- #include <errno.h>
-#endif
-#else
- #error "Haven't implemented platforms with no errno.h"
-#endif
-
-#if defined(_CL_HAVE_FCNTL_H)
-#ifndef UNDER_CE
- #include <fcntl.h>
-#endif
-#else
- #error "Haven't implemented platforms with no fcntl.h"
-#endif
-
-#if defined(_CL_HAVE_WINDOWS_H)
- #include <windows.h>
-#endif
-
-#endif //LUCENE_DISABLE_INCLUDES
-//
-////////////////////////////////////////////////////////
-
-//second inclusion of compiler.h
-//this gives CompilerXXX.h a chance to include other headers
-#include "CLucene/config/compiler.h"
-//
-////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////
-// Character functions.
-// Here we decide whose character functions to use
-////////////////////////////////////////////////////////
-#if defined(LUCENE_USE_INTERNAL_CHAR_FUNCTIONS)
- #define stringCaseFold cl_tcscasefold
- #define stringCaseFoldCmp cl_tcscasefoldcmp
-
- #undef _istspace
- #undef _istdigit
- #undef _istalnum
- #undef _istalpha
- #undef _totlower
- #undef _totupper
- #define _istalnum cl_isalnum
- #define _istalpha cl_isletter
- #define _istspace cl_isspace
- #define _istdigit cl_isdigit
- #define _totlower cl_tolower
- #define _totupper cl_toupper
-
- //here are some functions to help deal with utf8/ucs2 conversions
- //lets let the user decide what mb functions to use... we provide pure utf8 ones no matter what.
- /*#undef _mbtowc
- #undef _mbstowcs
- #undef _wctomb
- #undef _wcstombs
- #define _mbtowc lucene_mbstowc
- #define _mbsstowcs lucene_mbstowcs
- #define _wctomb lucene_wcto_mb
- #define _wcstombs lucene_wcstombs*/
-#else
- //we are using native functions
- //here are some functions to help deal with utf8/ucs2 conversions
- /*#define _mbtowc mbtowc
- #define _wctomb wctomb
- #define _mbstowcs mbstowcs
- #define _wcstombs wcstombs*/
-
- //we are using native character functions
- #if defined(_ASCII)
- #undef _istspace
- #undef _istdigit
- #undef _istalnum
- #undef _istalpha
- #undef _totlower
- #undef _totupper
- #define _istspace(x) isspace((unsigned char)x)
- #define _istdigit(x) isdigit((unsigned char)x)
- #define _istalnum(x) isalnum((unsigned char)x)
- #define _istalpha(x) isalpha((unsigned char)x)
- #define _totlower(x) tolower((unsigned char)x)
- #define _totupper(x) toupper((unsigned char)x)
- #endif
-#endif
-
-//the methods contained in gunichartables.h
-typedef unsigned long clunichar;
-bool cl_isletter(clunichar c);
-bool cl_isalnum(clunichar c);
-bool cl_isdigit(clunichar c);
-bool cl_isspace (clunichar c);
-TCHAR cl_tolower (TCHAR c);
-TCHAR cl_toupper (TCHAR c);
-
-int cl_tcscasefoldcmp(const TCHAR * dst, const TCHAR * src);
-TCHAR* cl_tcscasefold( TCHAR * str, int len=-1 );
-
-//we provide utf8 conversion functions
-size_t lucene_utf8towc (wchar_t *ret, const char *s, size_t n);
-size_t lucene_utf8towcs(wchar_t *, const char *, size_t maxslen);
-size_t lucene_wctoutf8 (char * ret, const wchar_t str);
-size_t lucene_wcstoutf8 (char *, const wchar_t *, size_t maxslen);
-size_t lucene_utf8charlen(const char *p);
-
-///a blank string...
-extern TCHAR* _LUCENE_BLANK_STRING;
-#define LUCENE_BLANK_STRING _LUCENE_BLANK_STRING
-extern char* _LUCENE_BLANK_ASTRING;
-#define LUCENE_BLANK_ASTRING _LUCENE_BLANK_ASTRING
-
-/* Converts a string into a form that is independent of case. The
- * result will not correspond to any particular case, but can be
- * compared for equality or ordered with the results of calling
- * stringCaseFold() on other strings.
- *
- * If we did not define this elsewhere, then just convert to lower case
- */
-#ifndef stringCaseFold
- #define stringCaseFold _tcslwr
-#endif
-/* Compares 2 strings using case folding (if available)
- * If we did not define this elsewhere, then just compare
- * using normal method
- */
-#ifndef stringCaseFoldCmp
- #define stringCaseFoldCmp _tcsicmp
-#endif
-
-//now that all the character routines are completed, include the
-//wchar.h replacements.
-#include "CLucene/config/repl_wchar.h" //always include replacements
-
-//a replacement for _tcsdup. This uses new TCHAR[] instead of malloc, so that we can use delete[] to free
-#if defined(LUCENE_ENABLE_FILELINEINFO)
- #define CL_FILELINE ,__FILE__,__LINE__
- #define CL_FILELINEREF ,file,line ///<for passing the reference along to another function
- #define CL_FILELINEREF2 ,file,line ///<for passing the reference along to another function
- #define CL_FILELINEPARAM ,char* file,int line
-#else
- #define CL_FILELINE
- #define CL_FILELINEREF
- #define CL_FILELINEREF2 ,NULL,-1
- #define CL_FILELINEPARAM
-#endif
-
-char* lucenestrdup(const char* v CL_FILELINEPARAM);
-#if defined(_UCS2)
- wchar_t* lucenewcsdup(const wchar_t* v CL_FILELINEPARAM);
- #define stringDuplicate(x) lucenewcsdup(x CL_FILELINE) //don't change this... uses [] instead of malloc
-#else
- #define stringDuplicate(x) lucenestrdup(x CL_FILELINE) //don't change this... uses [] instead of malloc
-#endif
-
-#define STRCPY_AtoA(target,src,len) strncpy(target,src,len)
-#define STRDUP_AtoA(x) lucenestrdup(x CL_FILELINE)
-
-#if defined(_UCS2)
- #define STRDUP_WtoW(x) lucenewcsdup(x CL_FILELINE)
- #define STRDUP_TtoT STRDUP_WtoW
- #define STRDUP_WtoT STRDUP_WtoW
- #define STRDUP_TtoW STRDUP_WtoW
-
- #define STRDUP_AtoW(x) CL_NS(util)::Misc::_charToWide(x CL_FILELINE)
- #define STRDUP_AtoT STRDUP_AtoW
-
- #define STRDUP_WtoA(x) CL_NS(util)::Misc::_wideToChar(x CL_FILELINE)
- #define STRDUP_TtoA STRDUP_WtoA
-
- #define STRCPY_WtoW(target,src,len) _tcsncpy(target,src,len)
- #define STRCPY_TtoW STRCPY_WtoW
- #define STRCPY_WtoT STRCPY_WtoW
- #define STRCPY_TtoT STRCPY_WtoW
-
- #define STRCPY_AtoW(target,src,len) CL_NS(util)::Misc::_cpycharToWide(src,target,len)
- #define STRCPY_AtoT STRCPY_AtoW
-
- #define STRCPY_WtoA(target,src,len) CL_NS(util)::Misc::_cpywideToChar(src,target,len)
- #define STRCPY_TtoA STRCPY_WtoA
-#else
- #define STRDUP_AtoT STRDUP_AtoA
- #define STRDUP_TtoA STRDUP_AtoA
- #define STRDUP_TtoT STRDUP_AtoA
-
- #define STRDUP_WtoT(x) xxxxxxxxxxxxxxx //not possible
- #define STRCPY_WtoT(target,src,len) xxxxxxxxxxxxxxx //not possible
-
- #define STRCPY_AtoT STRCPY_AtoA
- #define STRCPY_TtoA STRCPY_AtoA
- #define STRCPY_TtoT STRCPY_AtoA
-#endif
-
-//
-////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////
-//namespace helper
-////////////////////////////////////////////////////////
-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS)
-
-#elif !defined(DISABLE_NAMESPACE)
-//
-// W A R N I N G
-// -------------
-//
-// adjustments here, need to be done in
-// QTDIR/src/tools/assistant/lib/fulltextsearch/qclucene_global.h as well
-//
-# ifdef QT_NAMESPACE
-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{
-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 {
-
-# define CL_NS_END }}}
-# define CL_NS_END2 }}}}
-
-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub;
-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2;
-
-# define CL_NS(sub) QT_NAMESPACE::lucene::sub
-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2
-# else
-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{
-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 {
-
-# define CL_NS_END }}
-# define CL_NS_END2 }}}
-
-# define CL_NS_USE(sub) using namespace lucene::sub;
-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2;
-
-# define CL_NS(sub) lucene::sub
-# define CL_NS2(sub,sub2) lucene::sub::sub2
-# endif
-#else
-# define CL_NS_DEF(sub)
-# define CL_NS_DEF2(sub, sub2)
-# define CL_NS_END
-# define CL_NS_END2
-# define CL_NS_USE(sub)
-# define CL_NS_USE2(sub,sub2)
-# define CL_NS(sub)
-# define CL_NS2(sub,sub2)
-#endif
-
-#if defined(LUCENE_NO_STDC_NAMESPACE)
- //todo: haven't actually tested this on a non-stdc compliant compiler
- #define CL_NS_STD(func) ::func
-#else
- #define CL_NS_STD(func) std::func
-#endif
-//
-////////////////////////////////////////////////////////
-
-//
-void CLDebugBreak(); //define a debugbreak function
-
-
-////////////////////////////////////////////////////////////////
-// These are defines and functions used throughout clucene
-////////////////////////////////////////////////////////////////
-#undef _T //remove any previously defined _T - required for ppc os
-#if defined(_UCS2)
- #define _T(x) L ## x
-#else
- #define _T(x) x
-#endif
-
-//third inclusion of compiler.h
-//this gives CompilerXXX.h a chance to fix any of the
-//default settings
-#include "CLucene/config/compiler.h"
-
-#if defined _MSC_VER && (_MSC_VER < 1300)
-# define LUCENE_NO_STDC_NAMESPACE
-#endif
-
-//use std namespace
-#ifndef LUCENE_NO_STDC_NAMESPACE
-#ifdef _LIBCPP_VERSION
-// clang's libc++ pulls in cwchar, clucene pulls in wchar.h and the entire std
-// namespace which causes ambiguity between ::wcschar() and std::wcschar(), but
-// clucene is only using std::min() and std::max()
-using std::min;
-using std::max;
-#else
-using namespace std;
-#endif
-#endif
-
-
-////////////////////////////////////////////////////////
-//misc shortcut defines
-////////////////////////////////////////////////////////
-
-//include the headers that we need practically everywhere
-#include "CLucene/debug/error.h" //all delete/creation/mem debugging code
-#include "CLucene/debug/condition.h" //conditional debugging (like assert)
-#include "CLucene/debug/mem.h" //all delete/creation/mem debugging code
-#include "LuceneThreads.h" //lucene threading support
-
-#include "CLucene/util/Misc.h"
-#include "CLucene/util/Equators.h"
-#include "CLucene/util/VoidList.h"
-#include "CLucene/util/VoidMap.h"
-
-
-CL_NS_DEF(util)
-typedef CL_NS(util)::CLVector<TCHAR*> StringArray;
-typedef CL_NS(util)::CLVector<TCHAR*, CL_NS(util)::Deletor::tcArray > StringArrayWithDeletor;
-typedef CL_NS(util)::CLVector<const TCHAR*> StringArrayConst;
-typedef CL_NS(util)::CLVector<const TCHAR*, CL_NS(util)::Deletor::tcArray > StringArrayConstWithDeletor;
-
-typedef CL_NS(util)::CLVector<char*> AStringArray;
-typedef CL_NS(util)::CLVector<char*, CL_NS(util)::Deletor::acArray > AStringArrayWithDeletor;
-typedef CL_NS(util)::CLVector<const char*> AStringArrayConst;
-typedef CL_NS(util)::CLVector<const char*, CL_NS(util)::Deletor::acArray > AStringArrayConstWithDeletor;
-CL_NS_END
-
-//
-////////////////////////////////////////////////////////
-
-#endif // STDHEADER_H
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.cpp
deleted file mode 100644
index 03f61a038..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "AnalysisHeader.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(analysis)
-
-const TCHAR* Token::defaultType=_T("word");
-
-Token::Token():
- _startOffset (0),
- _endOffset (0),
- _type ( defaultType ),
- positionIncrement (1)
-{
- _termTextLen = 0;
-#ifndef LUCENE_TOKEN_WORD_LENGTH
- _termText = NULL;
- bufferTextLen = 0;
-#else
- _termText[0] = 0; //make sure null terminated
- bufferTextLen = LUCENE_TOKEN_WORD_LENGTH+1;
-#endif
-}
-
-Token::~Token(){
-#ifndef LUCENE_TOKEN_WORD_LENGTH
- free(_termText);
-#endif
-}
-
-Token::Token(const TCHAR* text, const int32_t start, const int32_t end, const TCHAR* typ):
- _startOffset (start),
- _endOffset (end),
- _type ( typ ),
- positionIncrement (1)
-{
- _termTextLen = 0;
-#ifndef LUCENE_TOKEN_WORD_LENGTH
- _termText = NULL;
- bufferTextLen = 0;
-#else
- _termText[0] = 0; //make sure null terminated
- bufferTextLen = LUCENE_TOKEN_WORD_LENGTH+1;
-#endif
- setText(text);
-}
-
-void Token::set(const TCHAR* text, const int32_t start, const int32_t end, const TCHAR* typ){
- _startOffset = start;
- _endOffset = end;
- _type = typ;
- positionIncrement = 1;
- setText(text);
-}
-
-void Token::setText(const TCHAR* text){
- _termTextLen = _tcslen(text);
-
-#ifndef LUCENE_TOKEN_WORD_LENGTH
- growBuffer(_termTextLen+1);
- _tcsncpy(_termText,text,_termTextLen+1);
-#else
- if ( _termTextLen > LUCENE_TOKEN_WORD_LENGTH ){
- //in the case where this occurs, we will leave the endOffset as it is
- //since the actual word still occupies that space.
- _termTextLen=LUCENE_TOKEN_WORD_LENGTH;
- }
- _tcsncpy(_termText,text,_termTextLen+1);
-#endif
- _termText[_termTextLen] = 0; //make sure null terminated
-}
-
-void Token::growBuffer(size_t size){
- if(bufferTextLen>=size)
- return;
-#ifndef LUCENE_TOKEN_WORD_LENGTH
- if ( _termText == NULL )
- _termText = (TCHAR*)malloc( size * sizeof(TCHAR) );
- else
- _termText = (TCHAR*)realloc( _termText, size * sizeof(TCHAR) );
- bufferTextLen = size;
-#else
- _CLTHROWA(CL_ERR_TokenMgr,"Couldn't grow Token buffer");
-#endif
-}
-
-void Token::setPositionIncrement(int32_t posIncr) {
- if (posIncr < 0) {
- _CLTHROWA(CL_ERR_IllegalArgument,"positionIncrement must be >= 0");
- }
- positionIncrement = posIncr;
-}
-
-int32_t Token::getPositionIncrement() const { return positionIncrement; }
-
-// Returns the Token's term text.
-const TCHAR* Token::termText() const{
- return (const TCHAR*) _termText;
-}
-size_t Token::termTextLength() {
- if ( _termTextLen == -1 ) //it was invalidated by growBuffer
- _termTextLen = _tcslen(_termText);
- return _termTextLen;
-}
-void Token::resetTermTextLen(){
- _termTextLen=-1;
-}
-bool Token::OrderCompare::operator()( Token* t1, Token* t2 ) const{
- if(t1->startOffset()>t2->startOffset())
- return false;
- if(t1->startOffset()<t2->startOffset())
- return true;
- return true;
-}
-TCHAR* Token::toString() const{
- StringBuffer sb;
- sb.append(_T("("));
- sb.append( _termText );
- sb.append(_T(","));
- sb.appendInt( _startOffset );
- sb.append(_T(","));
- sb.appendInt( _endOffset );
-
- if (!_tcscmp( _type, _T("word")) == 0 ){
- sb.append(_T(",type="));
- sb.append(_type);
- }
- if (positionIncrement != 1){
- sb.append(_T(",posIncr="));
- sb.appendInt(positionIncrement);
- }
- sb.append(_T(")"));
-
- return sb.toString();
-}
-
-
-Token* TokenStream::next(){
- Token* t = _CLNEW Token; //deprecated
- if ( !next(t) )
- _CLDELETE(t);
- return t;
-}
-
-
-TokenFilter::TokenFilter(TokenStream* in, bool deleteTS):
- input(in),
- deleteTokenStream(deleteTS)
-{
-}
-TokenFilter::~TokenFilter(){
- close();
-}
-
-// Close the input TokenStream.
-void TokenFilter::close() {
- if ( input != NULL ){
- input->close();
- if ( deleteTokenStream )
- _CLDELETE( input );
- }
- input = NULL;
-}
-
-
-
-Tokenizer::Tokenizer() {
- input = NULL;
-}
-
-Tokenizer::Tokenizer(CL_NS(util)::Reader* _input):
- input(_input)
-{
-}
-
-void Tokenizer::close(){
- if (input != NULL) {
- // ? delete input;
- input = NULL;
- }
-}
-
-Tokenizer::~Tokenizer(){
- close();
-}
-
-
-int32_t Analyzer::getPositionIncrementGap(const TCHAR* fieldName)
-{
- return 0;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.h b/src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.h
deleted file mode 100644
index 0cfd9c684..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/AnalysisHeader.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_analysis_AnalysisHeader_
-#define _lucene_analysis_AnalysisHeader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/Reader.h"
-
-CL_NS_DEF(analysis)
-
-
-/** A Token is an occurence of a term from the text of a field. It consists of
-* a term's text, the start and end offset of the term in the text of the field,
-* and a type string.
-*
-* The start and end offsets permit applications to re-associate a token with
-* its source text, e.g., to display highlighted query terms in a document
-* browser, or to show matching text fragments in a KWIC (KeyWord In Context)
-* display, etc.
-*
-* The type is an interned string, assigned by a lexical analyzer
-* (a.k.a. tokenizer), naming the lexical or syntactic class that the token
-* belongs to. For example an end of sentence marker token might be implemented
-* with type "eos". The default token type is "word".
-*/
-class Token:LUCENE_BASE{
-private:
- int32_t _startOffset; // start in source text
- int32_t _endOffset; // end in source text
- const TCHAR* _type; // lexical type
- int32_t positionIncrement;
- size_t bufferTextLen;
-
-public:
- #ifndef LUCENE_TOKEN_WORD_LENGTH
- TCHAR* _termText; // the text of the term
- #else
- TCHAR _termText[LUCENE_TOKEN_WORD_LENGTH+1]; // the text of the term
- #endif
- int32_t _termTextLen;
- static const TCHAR* defaultType;
-
- Token();
- ~Token();
- // Constructs a Token with the given text, start and end offsets, & type.
- Token(const TCHAR* text, const int32_t start, const int32_t end, const TCHAR* typ=defaultType);
- void set(const TCHAR* text, const int32_t start, const int32_t end, const TCHAR* typ=defaultType);
-
- size_t bufferLength(){ return bufferTextLen; }
- void growBuffer(size_t size);
-
- /* Set the position increment. This determines the position of this
- * token relative to the previous Token in a TokenStream, used in
- * phrase searching.
- *
- * The default value is 1.
- *
- * Some common uses for this are:
- *
- * - Set it to zero to put multiple terms in the same position. This is
- * useful if, e.g., a word has multiple stems. Searches for phrases
- * including either stem will match. In this case, all but the first stem's
- * increment should be set to zero: the increment of the first instance
- * should be one. Repeating a token with an increment of zero can also be
- * used to boost the scores of matches on that token.
- *
- * - Set it to values greater than one to inhibit exact phrase matches.
- * If, for example, one does not want phrases to match across removed stop
- * words, then one could build a stop word filter that removes stop words and
- * also sets the increment to the number of stop words removed before each
- * non-stop word. Then exact phrase queries will only match when the terms
- * occur with no intervening stop words.
- */
- void setPositionIncrement(int32_t posIncr);
- int32_t getPositionIncrement() const;
- const TCHAR* termText() const;
- size_t termTextLength();
- void resetTermTextLen();
- void setText(const TCHAR* txt);
-
- /**
- * Returns this Token's starting offset, the position of the first character
- * corresponding to this token in the source text.
- *
- * Note that the difference between endOffset() and startOffset() may not be
- * equal to termText.length(), as the term text may have been altered by a
- * stemmer or some other filter.
- */
- int32_t startOffset() const { return _startOffset; }
- void setStartOffset(int32_t val){ _startOffset =val; }
-
- /**
- * Returns this Token's ending offset, one greater than the position of the
- * last character corresponding to this token in the source text.
- */
- int32_t endOffset() const { return _endOffset; }
- void setEndOffset(int32_t val){ _endOffset =val; }
-
- // Returns this Token's lexical type. Defaults to "word".
- const TCHAR* type() const { return _type; } ///<returns reference
- void setType(const TCHAR* val) { _type = val; } ///<returns reference
-
- TCHAR* toString() const;
-
- ///Compares the Token for their order
- class OrderCompare:LUCENE_BASE, public CL_NS(util)::Compare::_base //<Token*>
- {
- public:
- bool operator()( Token* t1, Token* t2 ) const;
- };
-};
-
-/**
-* A TokenStream enumerates the sequence of tokens, either from
-* fields of a document or from query text.
-* <p>
-* This is an abstract class. Concrete subclasses are:
-* <ul>
-* <li>{@link Tokenizer}, a TokenStream
-* whose input is a Reader; and
-* <li>{@link TokenFilter}, a TokenStream
-* whose input is another TokenStream.
-* </ul>
-*/
-class TokenStream:LUCENE_BASE {
-public:
- /** Sets token to the next token in the stream, returns false at the EOS. */
- virtual bool next(Token* token) = 0;
-
- /** Releases resources associated with this stream. */
- virtual void close() = 0;
-
- virtual ~TokenStream(){
- }
-
- /* This is for backwards compatibility only. You should pass the token you want to fill
- * to next(), this will save a lot of object construction and destructions.
- * @deprecated. use next(token). Kept only to avoid breaking existing code.
- */
- _CL_DEPRECATED(next(Token)) Token* next();
-};
-
-
-/** An Analyzer builds TokenStreams, which analyze text. It thus represents a
- * policy for extracting index terms from text.
- * <p>
- * Typical implementations first build a Tokenizer, which breaks the stream of
- * characters from the Reader into raw Tokens. One or more TokenFilters may
- * then be applied to the output of the Tokenizer.
- * <p>
- * WARNING: You must override one of the methods defined by this class in your
- * subclass or the Analyzer will enter an infinite loop.
- */
-class Analyzer:LUCENE_BASE{
-public:
- /** Creates a TokenStream which tokenizes all the text in the provided
- Reader. Default implementation forwards to tokenStream(Reader) for
- compatibility with older version. Override to allow Analyzer to choose
- strategy based on document and/or field. Must be able to handle null
- field name for backward compatibility. */
- virtual TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader)=0;
-
- virtual ~Analyzer(){
- }
-
- /**
- * Invoked before indexing a Field instance if
- * terms have already been added to that field. This allows custom
- * analyzers to place an automatic position increment gap between
- * Field instances using the same field name. The default value
- * position increment gap is 0. With a 0 position increment gap and
- * the typical default token position increment of 1, all terms in a field,
- * including across Field instances, are in successive positions, allowing
- * exact PhraseQuery matches, for instance, across Field instance boundaries.
- *
- * @param fieldName Field name being indexed.
- * @return position increment gap, added to the next token emitted from {@link #tokenStream(TCHAR*, Reader*)}
- */
- virtual int32_t getPositionIncrementGap(const TCHAR* fieldName);
-};
-
-
-/** A Tokenizer is a TokenStream whose input is a Reader.
-<p>
-This is an abstract class.
-*/
-class Tokenizer:public TokenStream {
-protected:
- /** The text source for this Tokenizer. */
- CL_NS(util)::Reader* input;
-
-public:
- /** Construct a tokenizer with null input. */
- Tokenizer();
- /** Construct a token stream processing the given input. */
- Tokenizer(CL_NS(util)::Reader* _input);
-
- // ** By default, closes the input Reader. */
- virtual void close();
- virtual ~Tokenizer();
-};
-
-/** A TokenFilter is a TokenStream whose input is another token stream.
-<p>
-This is an abstract class.
-*/
-class TokenFilter:public TokenStream {
-protected:
- /** The source of tokens for this filter. */
- TokenStream* input;
- /** If true then input will be deleted in the destructor */
- bool deleteTokenStream;
-
- /** Construct a token stream filtering the given input.
- *
- * @param in The TokenStream to filter from
- * @param deleteTS If true, input will be deleted in the destructor
- */
- TokenFilter(TokenStream* in, bool deleteTS=false);
- virtual ~TokenFilter();
-public:
- /** Close the input TokenStream. */
- void close();
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.cpp b/src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.cpp
deleted file mode 100644
index c68b3bb26..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Analyzers.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(analysis)
-
-CharTokenizer::CharTokenizer(Reader* in) :
- Tokenizer(in),
- offset(0),
- bufferIndex(0),
- dataLen(0),
- ioBuffer(NULL)
-{
- buffer[0]=0;
-}
-
-TCHAR CharTokenizer::normalize(const TCHAR c) const
-{
- return c;
-}
-bool CharTokenizer::next(Token* token){
- int32_t length = 0;
- int32_t start = offset;
- while (true) {
- TCHAR c;
- offset++;
- if (bufferIndex >= dataLen) {
- dataLen = input->read(ioBuffer, LUCENE_IO_BUFFER_SIZE);
- if (dataLen == -1)
- dataLen = 0;
- bufferIndex = 0;
- }
- if (dataLen <= 0 ) {
- if (length > 0)
- break;
- else
- return false;
- }else
- c = ioBuffer[bufferIndex++];
- if (isTokenChar(c)) { // if it's a token TCHAR
-
- if (length == 0) // start of token
- start = offset-1;
-
- buffer[length++] = normalize(c); // buffer it, normalized
-
- if (length == LUCENE_MAX_WORD_LEN) // buffer overflow!
- break;
-
- } else if (length > 0) // at non-Letter w/ chars
- break; // return 'em
-
- }
- buffer[length]=0;
- token->set( buffer, start, start+length);
- return true;
-}
-
-bool LetterTokenizer::isTokenChar(const TCHAR c) const {
- return _istalpha(c)!=0;
-}
-
-
-TCHAR LowerCaseTokenizer::normalize(const TCHAR chr) const {
- return _totlower(chr);
-}
-
-bool WhitespaceTokenizer::isTokenChar(const TCHAR c) const{
- return _istspace(c)==0; //(return true if NOT a space)
-}
-
-TokenStream* WhitespaceAnalyzer::tokenStream(const TCHAR* fieldName, Reader* reader) {
- return _CLNEW WhitespaceTokenizer(reader);
-}
-
-TokenStream* SimpleAnalyzer::tokenStream(const TCHAR* fieldName, Reader* reader) {
- return _CLNEW LowerCaseTokenizer(reader);
-}
-
-bool LowerCaseFilter::next(Token* t){
- if (!input->next(t))
- return false;
- stringCaseFold( t->_termText );
- return true;
-}
-
-StopFilter::StopFilter(TokenStream* in, bool deleteTokenStream, const TCHAR** stopWords):
- TokenFilter(in, deleteTokenStream),
- table(_CLNEW CLSetList<const TCHAR*>(false))
-{
- fillStopTable( table,stopWords );
-}
-
-void StopFilter::fillStopTable(CLSetList<const TCHAR*>* stopTable,
- const TCHAR** stopWords) {
- for (int32_t i = 0; stopWords[i]!=NULL; i++)
- stopTable->insert(stopWords[i]);
-}
-
-bool StopFilter::next(Token* token) {
- // return the first non-stop word found
- while (input->next(token)){
- if (table->find(token->_termText)==table->end()){
- return true;
- }
- }
-
- // reached EOS -- return nothing
- return false;
-}
-
-StopAnalyzer::StopAnalyzer():stopTable(false)
-{
- StopFilter::fillStopTable(&stopTable,ENGLISH_STOP_WORDS);
-}
-StopAnalyzer::~StopAnalyzer()
-{
-}
-StopAnalyzer::StopAnalyzer( const TCHAR** stopWords) {
- StopFilter::fillStopTable(&stopTable,stopWords);
-}
-TokenStream* StopAnalyzer::tokenStream(const TCHAR* fieldName, Reader* reader) {
- return _CLNEW StopFilter(_CLNEW LowerCaseTokenizer(reader),true, &stopTable);
-}
-
-const TCHAR* StopAnalyzer::ENGLISH_STOP_WORDS[] =
-{
- _T("a"), _T("an"), _T("and"), _T("are"), _T("as"), _T("at"), _T("be"), _T("but"), _T("by"),
- _T("for"), _T("if"), _T("in"), _T("into"), _T("is"), _T("it"),
- _T("no"), _T("not"), _T("of"), _T("on"), _T("or"), _T("s"), _T("such"),
- _T("t"), _T("that"), _T("the"), _T("their"), _T("then"), _T("there"), _T("these"),
- _T("they"), _T("this"), _T("to"), _T("was"), _T("will"), _T("with"), NULL
-};
-
-PerFieldAnalyzerWrapper::PerFieldAnalyzerWrapper(Analyzer* defaultAnalyzer):
- analyzerMap(true,true)
-{
- this->defaultAnalyzer = defaultAnalyzer;
-}
-PerFieldAnalyzerWrapper::~PerFieldAnalyzerWrapper(){
- analyzerMap.clear();
- _CLDELETE(defaultAnalyzer);
-}
-
-void PerFieldAnalyzerWrapper::addAnalyzer(const TCHAR* fieldName, Analyzer* analyzer) {
- analyzerMap.put(STRDUP_TtoT(fieldName), analyzer);
-}
-
-TokenStream* PerFieldAnalyzerWrapper::tokenStream(const TCHAR* fieldName, Reader* reader) {
- Analyzer* analyzer = (fieldName==NULL?defaultAnalyzer:analyzerMap.get(fieldName));
- if (analyzer == NULL) {
- analyzer = defaultAnalyzer;
- }
-
- return analyzer->tokenStream(fieldName, reader);
-}
-
-
-
-bool ISOLatin1AccentFilter::next(Token* token){
- if ( input->next(token) ){
- int32_t l = token->termTextLength();
- const TCHAR* chars = token->termText();
- bool doProcess = false;
- for (int32_t i = 0; i < l; ++i) {
-#ifdef _UCS2
- if ( chars[i] >= 0xC0 && chars[i] <= 0x178 ) {
-#else
- if ( (chars[i] >= 0xC0 && chars[i] <= 0xFF) || chars[i] < 0 ) {
-#endif
- doProcess = true;
- break;
- }
- }
- if ( !doProcess ) {
- return true;
- }
-
- StringBuffer output(l*2);
- for (int32_t j = 0; j < l; j++) {
- #ifdef _UCS2
- TCHAR c = chars[j];
- #else
- unsigned char c = chars[j];
- #endif
- switch (c) {
- case 0xC0 :
- case 0xC1 :
- case 0xC2 :
- case 0xC3 :
- case 0xC4 :
- case 0xC5 :
- output.appendChar('A');
- break;
- case 0xC6 :
- output.append(_T("AE"));
- break;
- case 0xC7 :
- output.appendChar('C');
- break;
- case 0xC8 :
- case 0xC9 :
- case 0xCA :
- case 0xCB :
- output.appendChar('E');
- break;
- case 0xCC :
- case 0xCD :
- case 0xCE :
- case 0xCF :
- output.appendChar('I');
- break;
- case 0xD0 :
- output.appendChar('D');
- break;
- case 0xD1 :
- output.appendChar('N');
- break;
- case 0xD2 :
- case 0xD3 :
- case 0xD4 :
- case 0xD5 :
- case 0xD6 :
- case 0xD8 :
- output.appendChar('O');
- break;
- case 0xDE :
- output.append(_T("TH"));
- break;
- case 0xD9 :
- case 0xDA :
- case 0xDB :
- case 0xDC :
- output.appendChar('U');
- break;
- case 0xDD :
- output.appendChar('Y');
- break;
- case 0xE0 :
- case 0xE1 :
- case 0xE2 :
- case 0xE3 :
- case 0xE4 :
- case 0xE5 :
- output.appendChar('a');
- break;
- case 0xE6 :
- output.append(_T("ae"));
- break;
- case 0xE7 :
- output.appendChar('c');
- break;
- case 0xE8 :
- case 0xE9 :
- case 0xEA :
- case 0xEB :
- output.appendChar('e');
- break;
- case 0xEC :
- case 0xED :
- case 0xEE :
- case 0xEF :
- output.appendChar('i');
- break;
- case 0xF0 :
- output.appendChar('d');
- break;
- case 0xF1 :
- output.appendChar('n');
- break;
- case 0xF2 :
- case 0xF3 :
- case 0xF4 :
- case 0xF5 :
- case 0xF6 :
- case 0xF8 :
- output.appendChar('o');
- break;
- case 0xDF :
- output.append(_T("ss"));
- break;
- case 0xFE :
- output.append(_T("th"));
- break;
- case 0xF9 :
- case 0xFA :
- case 0xFB :
- case 0xFC :
- output.appendChar('u');
- break;
- case 0xFD :
- case 0xFF :
- output.appendChar('y');
- break;
-
- #ifdef _UCS2
- case 0x152 :
- output.append(_T("OE"));
- break;
- case 0x153 :
- output.append(_T("oe"));
- break;
- case 0x178 :
- output.appendChar('Y');
- break;
- #endif
- default :
- output.appendChar(c);
- break;
- }
- }
- token->setText(output.getBuffer());
- return true;
- }
- return false;
-}
-
-
-TokenStream* KeywordAnalyzer::tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader){
- return _CLNEW KeywordTokenizer(reader);
-}
-
-KeywordTokenizer::KeywordTokenizer(CL_NS(util)::Reader* input, int bufferSize):
- Tokenizer(input)
-{
- this->done = false;
- if ( bufferSize < 0 )
- this->bufferSize = DEFAULT_BUFFER_SIZE;
-}
-KeywordTokenizer::~KeywordTokenizer(){
-}
-
-bool KeywordTokenizer::next(Token* token){
- if (!done) {
- done = true;
- int32_t rd;
- const TCHAR* buffer=0;
- while (true) {
- rd = input->read(buffer, bufferSize);
- if (rd == -1)
- break;
- token->growBuffer(token->_termTextLen +rd+1);
-
- int32_t cp = rd;
- if ( token->_termTextLen + cp > token->bufferLength() )
- cp = token->bufferLength() - token->_termTextLen;
- _tcsncpy(token->_termText+token->_termTextLen,buffer,cp);
- token->_termTextLen+=rd;
- }
- token->_termText[token->_termTextLen]=0;
- token->set(token->_termText,0,token->_termTextLen);
- return true;
- }
- return false;
-}
-
-
-LengthFilter::LengthFilter(TokenStream* in, int _min, int _max):
- TokenFilter(in)
-{
- this->_min = _min;
- this->_max = _max;
-}
-
-bool LengthFilter::next(Token* token)
-{
- // return the first non-stop word found
- while ( input->next(token) )
- {
- size_t len = token->termTextLength();
- if (len >= _min && len <= _max)
- return true;
- // note: else we ignore it but should we index each part of it?
- }
- // reached EOS -- return null
- return false;
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.h b/src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.h
deleted file mode 100644
index a12bd653f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/Analyzers.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_analysis_Analyzers_
-#define _lucene_analysis_Analyzers_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/Reader.h"
-#include "AnalysisHeader.h"
-#include "CLucene/util/Misc.h"
-
-CL_NS_DEF(analysis)
-
-/** An abstract base class for simple, character-oriented tokenizers.*/
-class CharTokenizer:public Tokenizer {
-private:
- int32_t offset, bufferIndex, dataLen;
- TCHAR buffer[LUCENE_MAX_WORD_LEN+1];
- const TCHAR* ioBuffer;
-protected:
-
- /** Returns true iff a character should be included in a token. This
- * tokenizer generates as tokens adjacent sequences of characters which
- * satisfy this predicate. Characters for which this is false are used to
- * define token boundaries and are not included in tokens. */
- virtual bool isTokenChar(const TCHAR c) const = 0;
-
- /** Called on each token character to normalize it before it is added to the
- * token. The default implementation does nothing. Subclasses may use this
- * to, e.g., lowercase tokens. */
- virtual TCHAR normalize(const TCHAR c) const;
-
-public:
- CharTokenizer(CL_NS(util)::Reader* in);
- virtual ~CharTokenizer(){
- }
- bool next(Token* token);
-};
-
-
-/** A LetterTokenizer is a tokenizer that divides text at non-letters. That's
-to say, it defines tokens as maximal strings of adjacent letters, as defined
-by java.lang.Character.isLetter() predicate.
-
-Note: this does a decent job for most European languages, but does a terrible
-job for some Asian languages, where words are not separated by spaces. */
-class LetterTokenizer:public CharTokenizer {
-public:
- // Construct a new LetterTokenizer.
- LetterTokenizer(CL_NS(util)::Reader* in):
- CharTokenizer(in) {}
-
- ~LetterTokenizer(){}
-protected:
- /** Collects only characters which satisfy _istalpha.*/
- bool isTokenChar(const TCHAR c) const;
-};
-
-
-
-/**
-* LowerCaseTokenizer performs the function of LetterTokenizer
-* and LowerCaseFilter together. It divides text at non-letters and converts
-* them to lower case. While it is functionally equivalent to the combination
-* of LetterTokenizer and LowerCaseFilter, there is a performance advantage
-* to doing the two tasks at once, hence this (redundant) implementation.
-* <P>
-* Note: this does a decent job for most European languages, but does a terrible
-* job for some Asian languages, where words are not separated by spaces.
-*/
-class LowerCaseTokenizer:public LetterTokenizer {
-public:
- /** Construct a new LowerCaseTokenizer. */
- LowerCaseTokenizer(CL_NS(util)::Reader* in):
- LetterTokenizer(in) {}
-
- ~LowerCaseTokenizer(){}
-protected:
- /** Collects only characters which satisfy _totlower. */
- TCHAR normalize(const TCHAR chr) const;
-};
-
-
-/** A WhitespaceTokenizer is a tokenizer that divides text at whitespace.
- * Adjacent sequences of non-Whitespace characters form tokens. */
-class WhitespaceTokenizer: public CharTokenizer {
-public:
- /** Construct a new WhitespaceTokenizer. */
- WhitespaceTokenizer(CL_NS(util)::Reader* in):CharTokenizer(in) {}
- ~WhitespaceTokenizer(){}
-protected:
- /** Collects only characters which do not satisfy _istspace.
- */
- bool isTokenChar(const TCHAR c) const;
-};
-
-
-/** An Analyzer that uses WhitespaceTokenizer. */
-class WhitespaceAnalyzer: public Analyzer {
- public:
- TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader);
- ~WhitespaceAnalyzer(){}
-};
-
-/** An Analyzer that filters LetterTokenizer with LowerCaseFilter. */
-class SimpleAnalyzer: public Analyzer {
-public:
- TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader);
- ~SimpleAnalyzer(){}
-};
-
-
-
-/**
-* Normalizes token text to lower case.
-*/
-class LowerCaseFilter: public TokenFilter {
-public:
- LowerCaseFilter(TokenStream* in, bool deleteTokenStream):TokenFilter(in,deleteTokenStream) {}
- ~LowerCaseFilter(){}
- bool next(Token* token);
-};
-
-
-/**
- * Removes stop words from a token stream.
- */
-class StopFilter: public TokenFilter {
-private:
- //bvk: i found this to work faster with a non-hash table. the number of items
- //in the stop table is not like to make it worth having hashing.
- CL_NS(util)::CLSetList<const TCHAR*>* table;
-public:
- // Constructs a filter which removes words from the input
- // TokenStream that are named in the array of words.
- StopFilter(TokenStream* in, bool deleteTokenStream, const TCHAR** stopWords);
-
- ~StopFilter(){}
-
- /** Constructs a filter which removes words from the input
- * TokenStream that are named in the CLSetList.
- */
- StopFilter(TokenStream* in, bool deleteTokenStream, CL_NS(util)::CLSetList<const TCHAR*>* stopTable):
- TokenFilter(in, deleteTokenStream),
- table(stopTable)
- {}
-
-
- /**
- * Builds a Hashtable from an array of stop words, appropriate for passing
- * into the StopFilter constructor. This permits this table construction to
- * be cached once when an Analyzer is constructed.
- * Note: the stopWords list must be a static list because the strings are not copied
- */
- static void fillStopTable(CL_NS(util)::CLSetList<const TCHAR*>* stopTable,
- const TCHAR** stopWords);
-
- /**
- * Returns the next input Token whose termText() is not a stop word.
- */
- bool next(Token* token);
-};
-
-
-
-
-/** Filters LetterTokenizer with LowerCaseFilter and StopFilter. */
-class StopAnalyzer: public Analyzer {
- CL_NS(util)::CLSetList<const TCHAR*> stopTable;
-
-public:
- /** Builds an analyzer which removes words in ENGLISH_STOP_WORDS. */
- StopAnalyzer();
- ~StopAnalyzer();
-
- /** Builds an analyzer which removes words in the provided array. */
- StopAnalyzer( const TCHAR** stopWords );
- /** Filters LowerCaseTokenizer with StopFilter. */
- TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader);
-
- /** An array containing some common English words that are not usually useful
- for searching. */
- static const TCHAR* ENGLISH_STOP_WORDS[];
-};
-
-
-
-/**
- * This analyzer is used to facilitate scenarios where different
- * fields require different analysis techniques. Use {@link #addAnalyzer}
- * to add a non-default analyzer on a field name basis.
- *
- * <p>Example usage:
- *
- * <pre>
- * PerFieldAnalyzerWrapper aWrapper =
- * new PerFieldAnalyzerWrapper(new StandardAnalyzer());
- * aWrapper.addAnalyzer("firstname", new KeywordAnalyzer());
- * aWrapper.addAnalyzer("lastname", new KeywordAnalyzer());
- * </pre>
- *
- * <p>In this example, StandardAnalyzer will be used for all fields except "firstname"
- * and "lastname", for which KeywordAnalyzer will be used.
- *
- * <p>A PerFieldAnalyzerWrapper can be used like any other analyzer, for both indexing
- * and query parsing.
- */
-class PerFieldAnalyzerWrapper : public Analyzer {
-private:
- Analyzer* defaultAnalyzer;
- CL_NS(util)::CLHashMap<const TCHAR*, Analyzer*, CL_NS(util)::Compare::TChar,
- CL_NS(util)::Equals::TChar, CL_NS(util)::Deletor::tcArray,CL_NS(util)::Deletor::Void<Analyzer> > analyzerMap;
-public:
- /**
- * Constructs with default analyzer.
- *
- * @param defaultAnalyzer Any fields not specifically
- * defined to use a different analyzer will use the one provided here.
- */
- PerFieldAnalyzerWrapper(Analyzer* defaultAnalyzer);
- ~PerFieldAnalyzerWrapper();
-
- /**
- * Defines an analyzer to use for the specified field.
- *
- * @param fieldName field name requiring a non-default analyzer
- * @param analyzer non-default analyzer to use for field
- */
- void addAnalyzer(const TCHAR* fieldName, Analyzer* analyzer);
- TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader);
-};
-
-
-/**
- * A filter that replaces accented characters in the ISO Latin 1 character set
- * (ISO-8859-1) by their unaccented equivalent. The case will not be altered.
- * <p>
- * For instance, '&agrave;' will be replaced by 'a'.
- * <p>
- */
-class ISOLatin1AccentFilter: public TokenFilter {
-public:
- ISOLatin1AccentFilter(TokenStream* input, bool deleteTs):
- TokenFilter(input,deleteTs)
- {
- }
-
- /**
- * To replace accented characters in a String by unaccented equivalents.
- */
- bool next(Token* token);
-};
-
-
-/**
- * Emits the entire input as a single token.
- */
-class KeywordTokenizer: public Tokenizer {
-private:
- LUCENE_STATIC_CONSTANT(int, DEFAULT_BUFFER_SIZE = 256);
- bool done;
- int bufferSize;
-public:
- KeywordTokenizer(CL_NS(util)::Reader* input, int bufferSize=-1);
- virtual ~KeywordTokenizer();
- bool next(Token* token);
-};
-
-/**
- * "Tokenizes" the entire stream as a single token. This is useful
- * for data like zip codes, ids, and some product names.
- */
-class KeywordAnalyzer: public Analyzer {
-public:
- TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader);
- virtual ~KeywordAnalyzer(){}
-};
-
-
-/**
- * Removes words that are too long and too short from the stream.
- *
- */
-class LengthFilter: public TokenFilter {
-private:
- int _min;
- int _max;
-public:
- /**
- * Build a filter that removes words that are too long or too
- * short from the text.
- */
- LengthFilter(TokenStream* in, int _min, int _max);
-
- /**
- * Returns the next input Token whose termText() is the right len
- */
- bool next(Token* token);
-};
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.cpp
deleted file mode 100644
index e0994c41a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "StandardAnalyzer.h"
-
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/analysis/Analyzers.h"
-#include "StandardFilter.h"
-#include "StandardTokenizer.h"
-
-CL_NS_USE(util)
-CL_NS_USE(analysis)
-
-CL_NS_DEF2(analysis,standard)
-
- StandardAnalyzer::StandardAnalyzer():
- stopSet(false)
- {
- StopFilter::fillStopTable( &stopSet,CL_NS(analysis)::StopAnalyzer::ENGLISH_STOP_WORDS);
- }
-
- StandardAnalyzer::StandardAnalyzer( const TCHAR** stopWords):
- stopSet(false)
- {
- StopFilter::fillStopTable( &stopSet,stopWords );
- }
-
- StandardAnalyzer::~StandardAnalyzer(){
- }
-
-
- TokenStream* StandardAnalyzer::tokenStream(const TCHAR* fieldName, Reader* reader)
- {
- TokenStream* ret = _CLNEW StandardTokenizer(reader);
- ret = _CLNEW StandardFilter(ret,true);
- ret = _CLNEW LowerCaseFilter(ret,true);
- ret = _CLNEW StopFilter(ret,true, &stopSet);
- return ret;
- }
-CL_NS_END2
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.h b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.h
deleted file mode 100644
index 9cce041df..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardAnalyzer.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_analysis_standard_StandardAnalyzer
-#define _lucene_analysis_standard_StandardAnalyzer
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/analysis/Analyzers.h"
-#include "StandardFilter.h"
-#include "StandardTokenizer.h"
-
-
-CL_NS_DEF2(analysis,standard)
-
- /** Represents a standard analyzer. */
- class StandardAnalyzer : public Analyzer
- {
- private:
- CL_NS(util)::CLSetList<const TCHAR*> stopSet;
- public:
- /** Builds an analyzer.*/
- StandardAnalyzer();
-
- /** Builds an analyzer with the given stop words. */
- StandardAnalyzer( const TCHAR** stopWords);
-
- ~StandardAnalyzer();
-
-
- /**
- * Constructs a StandardTokenizer filtered by a
- * StandardFilter, a LowerCaseFilter and a StopFilter.
- */
- TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader)
- ;
- };
-CL_NS_END2
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.cpp
deleted file mode 100644
index 9869d2592..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "StandardFilter.h"
-
-#include "../AnalysisHeader.h"
-#include "../Analyzers.h"
-#include "StandardTokenizerConstants.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(analysis)
-CL_NS_USE(util)
-CL_NS_DEF2(analysis,standard)
-
- StandardFilter::StandardFilter(TokenStream* in, bool deleteTokenStream):
- TokenFilter(in, deleteTokenStream)
- {
- }
-
- StandardFilter::~StandardFilter(){
- }
-
- bool StandardFilter::next(Token* t) {
- if (!input->next(t))
- return false;
-
- TCHAR* text = t->_termText;
- const int32_t textLength = t->termTextLength();
- const TCHAR* type = t->type();
-
- if ( type == tokenImage[APOSTROPHE] && //we can compare the type directy since the type should always come from the tokenImage
- ( textLength >= 2 && _tcsicmp(text+textLength-2, _T("'s"))==0 ) )
- {
- // remove 's
- text[textLength-2]=0;
- t->resetTermTextLen();
-
- return true;
-
- } else if ( type == tokenImage[ACRONYM] ) { // remove dots
- int32_t j = 0;
- for ( int32_t i=0;i<textLength;i++ ){
- if ( text[i] != '.' )
- text[j++]=text[i];
- }
- text[j]=0;
- return true;
-
- } else {
- return true;
- }
- }
-
-CL_NS_END2
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.h b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.h
deleted file mode 100644
index 59657fdb3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardFilter.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_analysis_standard_StandardFilter
-#define _lucene_analysis_standard_StandardFilter
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "../AnalysisHeader.h"
-#include "../Analyzers.h"
-#include "StandardTokenizerConstants.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_DEF2(analysis,standard)
-
- /** Normalizes tokens extracted with {@link StandardTokenizer}. */
- class StandardFilter: public TokenFilter{
- public:
- // Construct filtering <i>in</i>.
- StandardFilter(TokenStream* in, bool deleteTokenStream);
-
- ~StandardFilter();
-
-
- /** Returns the next token in the stream, or NULL at EOS.
- * <p>Removes <tt>'s</tt> from the end of words.
- * <p>Removes dots from acronyms.
- */
- bool next(Token* token);
- };
-CL_NS_END2
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.cpp
deleted file mode 100644
index 60f9a449c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "StandardTokenizer.h"
-
-CL_NS_USE(analysis)
-CL_NS_USE(util)
-CL_NS_DEF2(analysis,standard)
-
- const static TCHAR* tokenImageArray[] = {
- _T("<EOF>"),
- _T("<UNKNOWN>"),
- _T("<ALPHANUM>"),
- _T("<APOSTROPHE>"),
- _T("<ACRONYM>"),
- _T("<COMPANY>"),
- _T("<EMAIL>"),
- _T("<HOST>"),
- _T("<NUM>"),
- _T("<CJK>")
- };
- const TCHAR** tokenImage = tokenImageArray;
-
- /* A bunch of shortcut macros, many of which make assumptions about variable
- ** names. These macros enhance readability, not just convenience! */
- #define EOS (ch==-1 || rd->Eos())
- #define SPACE (_istspace((TCHAR)ch) != 0)
- #define ALPHA (_istalpha((TCHAR)ch) != 0)
- #define ALNUM (_istalnum(ch) != 0)
- #define DIGIT (_istdigit(ch) != 0)
- #define UNDERSCORE (ch == '_')
-
- #define _CJK ( (ch>=0x3040 && ch<=0x318f) || \
- (ch>=0x3300 && ch<=0x337f) || \
- (ch>=0x3400 && ch<=0x3d2d) || \
- (ch>=0x4e00 && ch<=0x9fff) || \
- (ch>=0xf900 && ch<=0xfaff) || \
- (ch>=0xac00 && ch<=0xd7af) ) //korean
-
-
- #define DASH (ch == '-')
- #define NEGATIVE_SIGN_ DASH
- //#define POSITIVE_SIGN_ (ch == '+')
- //#define SIGN (NEGATIVE_SIGN_ || POSITIVE_SIGN_)
-
- #define DOT (ch == '.')
- #define DECIMAL DOT
-
-
- //freebsd seems to have a problem with defines over multiple lines, so this has to be one long line
- #define _CONSUME_AS_LONG_AS(conditionFails) while (true) { ch = readChar(); if (ch==-1 || (!(conditionFails) || str.len >= LUCENE_MAX_WORD_LEN)) { break; } str.appendChar(ch);}
-
- #define CONSUME_ALPHAS _CONSUME_AS_LONG_AS(ALPHA)
-
- #define CONSUME_DIGITS _CONSUME_AS_LONG_AS(DIGIT)
-
- /* otherMatches is a condition (possibly compound) under which a character
- ** that's not an ALNUM or UNDERSCORE can be considered not to break the
- ** span. Callers should pass false if only ALNUM/UNDERSCORE are acceptable. */
- #define CONSUME_WORD _CONSUME_AS_LONG_AS(ALNUM || UNDERSCORE)
-
- /*
- ** Consume CJK characters
- */
- #define CONSUME_CJK _CONSUME_AS_LONG_AS(_CJK)
-
-
- /* It is considered that "nothing of value" has been read if:
- ** a) The "read head" hasn't moved since specialCharPos was established.
- ** or
- ** b) The "read head" has moved by one character, but that character was
- ** either whitespace or not among the characters found in the body of
- ** a token (deliberately doesn't include the likes of '@'/'&'). */
- #define CONSUMED_NOTHING_OF_VALUE (rdPos == specialCharPos || (rdPos == specialCharPos+1 && ( SPACE || !(ALNUM || DOT || DASH || UNDERSCORE) )))
-
- #define RIGHTMOST(sb) (sb.getBuffer()[sb.len-1])
- #define RIGHTMOST_IS(sb, c) (RIGHTMOST(sb) == c)
- /* To discard the last character in a StringBuffer, we decrement the buffer's
- ** length indicator and move the terminator back by one character. */
- #define SHAVE_RIGHTMOST(sb) (sb.getBuffer()[--sb.len] = '\0')
-
- //#define REMOVE_TRAILING_CHARS(sb, charMatchesCondition) { TCHAR* sbBuf = sb.getBuffer(); for (int32_t i = sb.len-1; i >= 0; i--) { TCHAR c = sbBuf[i]; if (charMatchesCondition) { sbBuf[--sb.len] = '\0'; } else {break;}}}
-
- /* Does StringBuffer sb contain any of the characters in string ofThese? */
- #define CONTAINS_ANY(sb, ofThese) (_tcscspn(sb.getBuffer(), _T(ofThese)) != static_cast<size_t>(sb.len))
-
-
- StandardTokenizer::StandardTokenizer(Reader* reader):
- rd(_CLNEW FastCharStream(reader)),
- /* rdPos is zero-based. It starts at -1, and will advance to the first
- ** position when readChar() is first called. */
- rdPos(-1),
- tokenStart(-1)
- {
- }
-
- StandardTokenizer::~StandardTokenizer() {
- _CLDELETE(rd);
- }
-
- int StandardTokenizer::readChar() {
- /* Increment by 1 because we're speaking in terms of characters, not
- ** necessarily bytes: */
- rdPos++;
- return rd->GetNext();
- }
-
- void StandardTokenizer::unReadChar() {
- rd->UnGet();
- rdPos--;
- }
-
- inline bool StandardTokenizer::setToken(Token* t, StringBuffer* sb, TokenTypes tokenCode) {
- t->setStartOffset(tokenStart);
- t->setEndOffset(tokenStart+sb->length());
- t->setType(tokenImage[tokenCode]);
- sb->getBuffer(); //null terminates the buffer
- t->resetTermTextLen();
- return true;
- }
-
- bool StandardTokenizer::next(Token* t) {
- int ch=0;
- while (!EOS) {
- ch = readChar();
-
- if ( ch == 0 || ch == -1 ){
- continue;
- } else if (SPACE) {
- continue;
- } else if (ALPHA || UNDERSCORE) {
- tokenStart = rdPos;
- return ReadAlphaNum(ch,t);
- } else if (DIGIT || NEGATIVE_SIGN_ || DECIMAL) {
- tokenStart = rdPos;
- /* ReadNumber returns NULL if it fails to extract a valid number; in
- ** that case, we just continue. */
- if (ReadNumber(NULL, ch,t))
- return true;
- } else if ( _CJK ){
- if ( ReadCJK(ch,t) )
- return true;
- }
- }
- return false;
- }
-
- bool StandardTokenizer::ReadNumber(const TCHAR* previousNumber, const TCHAR prev,Token* t) {
- /* previousNumber is only non-NULL if this function already read a complete
- ** number in a previous recursion, yet has been asked to read additional
- ** numeric segments. For example, in the HOST "192.168.1.3", "192.168" is
- ** a complete number, but this function will recurse to read the "1.3",
- ** generating a single HOST token "192.168.1.3". */
- t->growBuffer(LUCENE_MAX_WORD_LEN+1);//make sure token can hold the next word
- StringBuffer str(t->_termText,t->bufferLength(),true); //use stringbuffer to read data onto the termText
- TokenTypes tokenType;
- bool decExhausted;
- if (previousNumber != NULL) {
- str.prepend(previousNumber);
- tokenType = CL_NS2(analysis,standard)::HOST;
- decExhausted = false;
- } else {
- tokenType = CL_NS2(analysis,standard)::NUM;
- decExhausted = (prev == '.');
- }
- if ( str.len >= LUCENE_MAX_WORD_LEN ){
- //if a number is too long, i would say there is no point
- //storing it, because its going to be the wrong number anyway?
- //what do people think?
- return false;
- }
- str.appendChar(prev);
-
- const bool signExhausted = (prev == '-');
- int ch = prev;
-
- CONSUME_DIGITS;
-
- if (str.len < 2 /* CONSUME_DIGITS didn't find any digits. */
- && (
- (signExhausted && !DECIMAL)
- || (decExhausted /* && !DIGIT is implied, since CONSUME_DIGITS stopped on a non-digit. */)
- )
- )
- {
- /* We have either:
- ** a) a negative sign that's not followed by either digit(s) or a decimal
- ** b) a decimal that's not followed by digit(s)
- ** so this is not a valid number. */
- if (!EOS) {
- /* Unread the character that stopped CONSUME_DIGITS: */
- unReadChar();
- }
- return false;
- }
-
- /* We just read a group of digits. Is it followed by a decimal symbol,
- ** implying that there might be another group of digits available? */
- if (!EOS) {
- if (DECIMAL) {
- if ( str.len >= LUCENE_MAX_WORD_LEN )
- return false; //read above for rationale
- str.appendChar(ch);
- } else {
- unReadChar();
- goto SUCCESSFULLY_EXTRACTED_NUMBER;
- }
-
- CONSUME_DIGITS;
- if (!DIGIT && !DECIMAL) {
- unReadChar();
- } else if (!EOS && DECIMAL && _istdigit(rd->Peek())) {
- /* We just read the fractional digit group, but it's also followed by
- ** a decimal symbol and at least one more digit, so this must be a
- ** HOST rather than a real number. */
- return ReadNumber(str.getBuffer(), '.',t);
- }
- }
-
- SUCCESSFULLY_EXTRACTED_NUMBER:
- TCHAR rightmost = RIGHTMOST(str);
- /* Don't including a trailing decimal point. */
- if (rightmost == '.') {
- SHAVE_RIGHTMOST(str);
- unReadChar();
- rightmost = RIGHTMOST(str);
- }
- /* If all we have left is a negative sign, it's not a valid number. */
- if (rightmost == '-') {
- CND_PRECONDITION (str.len == 1, "Number is invalid");
- return false;
- }
-
- return setToken(t,&str,tokenType);
- }
-
- bool StandardTokenizer::ReadAlphaNum(const TCHAR prev, Token* t) {
- t->growBuffer(LUCENE_MAX_WORD_LEN+1);//make sure token can hold the next word
- StringBuffer str(t->_termText,t->bufferLength(),true); //use stringbuffer to read data onto the termText
- if ( str.len < LUCENE_MAX_WORD_LEN ){
- str.appendChar(prev);
- int ch = prev;
-
- CONSUME_WORD;
- if (!EOS && str.len < LUCENE_MAX_WORD_LEN-1 ) { //still have space for 1 more character?
- switch(ch) { /* What follows the first alphanum segment? */
- case '.':
- str.appendChar('.');
- return ReadDotted(&str, CL_NS2(analysis,standard)::UNKNOWN,t);
- case '\'':
- str.appendChar('\'');
- return ReadApostrophe(&str,t);
- case '@':
- str.appendChar('@');
- return ReadAt(&str,t);
- case '&':
- str.appendChar('&');
- return ReadCompany(&str,t);
- /* default: fall through to end of this function. */
- }
- }
- }
- return setToken(t,&str,CL_NS2(analysis,standard)::ALPHANUM);
- }
-
- bool StandardTokenizer::ReadCJK(const TCHAR prev, Token* t) {
- t->growBuffer(LUCENE_MAX_WORD_LEN+1);//make sure token can hold the next word
- StringBuffer str(t->_termText,t->bufferLength(),true); //use stringbuffer to read data onto the termText
- if ( str.len < LUCENE_MAX_WORD_LEN ){
- str.appendChar(prev);
- int ch = prev;
-
- CONSUME_CJK;
- }
- return setToken(t,&str,CL_NS2(analysis,standard)::CJK);
- }
-
-
- bool StandardTokenizer::ReadDotted(StringBuffer* _str, TokenTypes forcedType, Token* t) {
- const int32_t specialCharPos = rdPos;
- StringBuffer& str=*_str;
-
- /* A segment of a "dotted" is not allowed to begin with another dot or a dash.
- ** Even though hosts, e-mail addresses, etc., could have a dotted-segment
- ** that begins with a dot or a dash, it's far more common in source text
- ** for a pattern like "abc.--def" to be intended as two tokens. */
- int ch = rd->Peek();
- if (!(DOT || DASH)) {
- bool prevWasDot;
- bool prevWasDash;
- if (str.len == 0) {
- prevWasDot = false;
- prevWasDash = false;
- } else {
- prevWasDot = RIGHTMOST(str) == '.';
- prevWasDash = RIGHTMOST(str) == '-';
- }
- while (!EOS && str.len < LUCENE_MAX_WORD_LEN-1 ) {
- ch = readChar();
- const bool dot = ch == '.';
- const bool dash = ch == '-';
-
- if (!(ALNUM || UNDERSCORE || dot || dash)) {
- break;
- }
- /* Multiple dots or dashes in succession end the token.
- ** Consider the following inputs:
- ** "Visit windowsupdate.microsoft.com--update today!"
- ** "In the U.S.A.--yes, even there!" */
- if ((dot || dash) && (prevWasDot || prevWasDash)) {
- /* We're not going to append the character we just read, in any case.
- ** As to the character before it (which is currently RIGHTMOST(str)):
- ** Unless RIGHTMOST(str) is a dot, in which we need to save it so the
- ** acronym-versus-host detection can work, we want to get rid of it. */
- if (!prevWasDot) {
- SHAVE_RIGHTMOST(str);
- }
- break;
- }
-
- str.appendChar(ch);
-
- prevWasDot = dot;
- prevWasDash = dash;
- }
- }
-
- /* There's a potential StringBuffer.append call in the code above, which
- ** could cause str to reallocate its internal buffer. We must wait to
- ** obtain the optimization-oriented strBuf pointer until after the initial
- ** potentially realloc-triggering operations on str.
- ** Because there can be other such ops much later in this function, strBuf
- ** is guarded within a block to prevent its use during or after the calls
- ** that would potentially invalidate it. */
- { /* Begin block-guard of strBuf */
- TCHAR* strBuf = str.getBuffer();
-
- bool rightmostIsDot = RIGHTMOST_IS(str, '.');
- if (CONSUMED_NOTHING_OF_VALUE) {
- /* No more alphanums available for this token; shave trailing dot, if any. */
- if (rightmostIsDot) {
- SHAVE_RIGHTMOST(str);
- }
- /* If there are no dots remaining, this is a generic ALPHANUM. */
- if (_tcschr(strBuf, '.') == NULL) {
- forcedType = CL_NS2(analysis,standard)::ALPHANUM;
- }
-
- /* Check the token to see if it's an acronym. An acronym must have a
- ** letter in every even slot and a dot in every odd slot, including the
- ** last slot (for example, "U.S.A."). */
- } else if (rightmostIsDot) {
- bool isAcronym = true;
- const int32_t upperCheckLimit = str.len - 1; /* -1 b/c we already checked the last slot. */
-
- for (int32_t i = 0; i < upperCheckLimit; i++) {
- const bool even = (i % 2 == 0);
- ch = strBuf[i];
- if ( (even && !ALPHA) || (!even && !DOT) ) {
- isAcronym = false;
- break;
- }
- }
- if (isAcronym) {
- forcedType = CL_NS2(analysis,standard)::ACRONYM;
- } else {
- /* If it's not an acronym, we don't want the trailing dot. */
- SHAVE_RIGHTMOST(str);
- /* If there are no dots remaining, this is a generic ALPHANUM. */
- if (_tcschr(strBuf, '.') == NULL) {
- forcedType = CL_NS2(analysis,standard)::ALPHANUM;
- }
- }
- }
- } /* End block-guard of strBuf */
-
- if (!EOS) {
- if (ch == '@' && str.len < LUCENE_MAX_WORD_LEN-1) {
- str.appendChar('@');
- return ReadAt(&str,t);
- } else {
- unReadChar();
- }
- }
-
- return setToken(t,&str,CL_NS2(analysis,standard)::UNKNOWN
- ? forcedType : CL_NS2(analysis,standard)::HOST);
- }
-
- bool StandardTokenizer::ReadApostrophe(StringBuffer* _str, Token* t) {
- StringBuffer& str=*_str;
-
- TokenTypes tokenType = CL_NS2(analysis,standard)::APOSTROPHE;
- const int32_t specialCharPos = rdPos;
- int ch=0;
-
- CONSUME_ALPHAS;
- if (RIGHTMOST_IS(str, '\'') || CONSUMED_NOTHING_OF_VALUE) {
- /* After the apostrophe, no more alphanums were available within this
- ** token; shave trailing apostrophe and revert to generic ALPHANUM. */
- SHAVE_RIGHTMOST(str);
- tokenType = CL_NS2(analysis,standard)::ALPHANUM;
- }
- if (!EOS) {
- unReadChar();
- }
-
- return setToken(t,&str,tokenType);
- }
-
- bool StandardTokenizer::ReadAt(StringBuffer* str, Token* t) {
- ReadDotted(str, CL_NS2(analysis,standard)::EMAIL,t);
- /* JLucene grammar indicates dots/digits not allowed in company name: */
- if (!CONTAINS_ANY((*str), ".0123456789")) {
- setToken(t,str,CL_NS2(analysis,standard)::COMPANY);
- }
- return true;
- }
-
- bool StandardTokenizer::ReadCompany(StringBuffer* _str, Token* t) {
- StringBuffer& str = *_str;
- const int32_t specialCharPos = rdPos;
- int ch=0;
-
- CONSUME_WORD;
- if (CONSUMED_NOTHING_OF_VALUE) {
- /* After the ampersand, no more alphanums were available within this
- ** token; shave trailing ampersand and revert to ALPHANUM. */
- CND_PRECONDITION(RIGHTMOST_IS(str, '&'),"ReadCompany failed");
- SHAVE_RIGHTMOST(str);
-
-
- return setToken(t,&str,CL_NS2(analysis,standard)::ALPHANUM);
- }
- if (!EOS) {
- unReadChar();
- }
-
- return setToken(t,&str,CL_NS2(analysis,standard)::COMPANY);
- }
-
-CL_NS_END2
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.h b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.h
deleted file mode 100644
index d4195be81..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizer.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_analysis_standard_StandardTokenizer
-#define _lucene_analysis_standard_StandardTokenizer
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "../AnalysisHeader.h"
-#include "../Analyzers.h"
-#include "StandardTokenizerConstants.h"
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/util/FastCharStream.h"
-#include "CLucene/util/Reader.h"
-
-
-CL_NS_DEF2(analysis,standard)
-
-/** A grammar-based tokenizer constructed with JavaCC.
- *
- * <p> This should be a good tokenizer for most European-language documents:
- *
- * <ul>
- * <li>Splits words at punctuation characters, removing punctuation. However, a
- * dot that's not followed by whitespace is considered part of a token.
- * <li>Splits words at hyphens, unless there's a number in the token, in which case
- * the whole token is interpreted as a product number and is not split.
- * <li>Recognizes email addresses and internet hostnames as one token.
- * </ul>
- *
- * <p>Many applications have specific tokenizer needs. If this tokenizer does
- * not suit your application, please consider copying this source code
- * directory to your project and maintaining your own grammar-based tokenizer.
- */
- class StandardTokenizer: public Tokenizer {
- private:
- int32_t rdPos;
- int32_t tokenStart;
-
- // Advance by one character, incrementing rdPos and returning the character.
- int readChar();
- // Retreat by one character, decrementing rdPos.
- void unReadChar();
-
- // createToken centralizes token creation for auditing purposes.
- //Token* createToken(CL_NS(util)::StringBuffer* sb, TokenTypes tokenCode);
- inline bool setToken(Token* t, CL_NS(util)::StringBuffer* sb, TokenTypes tokenCode);
-
- bool ReadDotted(CL_NS(util)::StringBuffer* str, TokenTypes forcedType,Token* t);
-
- public:
- CL_NS(util)::FastCharStream* rd;
-
- // Constructs a tokenizer for this Reader.
- StandardTokenizer(CL_NS(util)::Reader* reader);
-
- ~StandardTokenizer();
-
- /** Returns the next token in the stream, or false at end-of-stream.
- * The returned token's type is set to an element of
- * StandardTokenizerConstants::tokenImage. */
- bool next(Token* token);
-
- // Reads for number like "1"/"1234.567", or IP address like "192.168.1.2".
- bool ReadNumber(const TCHAR* previousNumber, const TCHAR prev, Token* t);
-
- bool ReadAlphaNum(const TCHAR prev, Token* t);
-
- // Reads for apostrophe-containing word.
- bool ReadApostrophe(CL_NS(util)::StringBuffer* str, Token* t);
-
- // Reads for something@... it may be a COMPANY name or a EMAIL address
- bool ReadAt(CL_NS(util)::StringBuffer* str, Token* t);
-
- // Reads for COMPANY name like AT&T.
- bool ReadCompany(CL_NS(util)::StringBuffer* str, Token* t);
-
- // Reads CJK characters
- bool ReadCJK(const TCHAR prev, Token* t);
- };
-
-CL_NS_END2
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizerConstants.h b/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizerConstants.h
deleted file mode 100644
index 3c95af45a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/analysis/standard/StandardTokenizerConstants.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_analysis_standard_StandardTokenizerConstants
-#define _lucene_analysis_standard_StandardTokenizerConstants
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF2(analysis,standard)
- enum TokenTypes {
- _EOF,
- UNKNOWN,
- ALPHANUM,
- APOSTROPHE,
- ACRONYM,
- COMPANY,
- EMAIL,
- HOST,
- NUM,
- CJK
- };
- extern const TCHAR** tokenImage;
-
- CL_NS_END2
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerAcc.h b/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerAcc.h
deleted file mode 100644
index 0dcb7b985..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerAcc.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#if !defined(_lucene_COMPILER_ACC)
-#define _lucene_COMPILER_ACC
-
-// It is internal CLucene header - DO NOT include it directly
-#if !defined(_SUPPRESS_MAKE_BASED_CONFIG)
-#if defined(_BUILD_FOR_QT_)
-#include "fulltextsearch/qclucene-config_p.h"
-#else
-#include "CLucene/clucene-config.h" //make clucene-config.h file
-#endif
-#endif
-
-#if defined(_ASCII)
-#undef _UCS2
-#elif defined(_UCS2)
-//
-#else
-#define CL_CHARSET_GUESS
-#endif
-
-//dont allow FS_MMAP if mmap is not available
-#if defined(LUCENE_FS_MMAP) && !defined(_CL_HAVE_MMAP)
-#error "LUCENE_FS_MMAP is defined and MMap doesn't appear to be available"
-#endif
-
-#ifdef _CL_HAVE_NO_FUNCTION_TRY_BLOCKS
-#undef _LUCENE_DISABLE_EXCEPTIONS
-#define _LUCENE_DISABLE_EXCEPTIONS
-
-#error "this is bad if you made it here... your compiler seems not to have try/catch blocks."
-#error "maybe you could implement an alternative solution for us? :)"
-#endif
-
-#ifndef _CL_HAVE_NAMESPACES
-#define DISABLE_NAMESPACE
-#endif
-
-#define LUCENE_DISABLE_HASHING //we could enable this, but so far test show that the hashing is slower :(
-
-//define the file functions
-#define fileSeek lseek
-#define fileSize _filelength
-#define fileStat stat
-#define fileHandleStat fstat
-#ifdef _CL_HAVE_TELL
-#define fileTell tell
-#else
-//ftell (and probably soon ftell64) are POSIX standard functions, but tell and
-//tell64 are not, so we define fileTell in terms of fileSeek.
-#define fileTell(fhandle) fileSeek(fhandle, 0, SEEK_CUR)
-#endif
-
-//this is needed early on so that CL_MAX_PATH can be correctly determined
-//in the StdHeader.h. This was earlier causing problems with macosx.
-//:: crash was due to realpath() that expects an output arguments that
-//has at least the size of PATH_MAX (even if the result has a lower size)
-#include <limits.h>
-
-#ifndef _CL_HAVE_WCHAR_T
- typedef unsigned short wchar_t;
-#endif
-
-#if defined(__CYGWIN__)
-//cygwin seems to incorrectly define that it has wprintf???
-#undef _CL_HAVE_WPRINTF
-#elif defined(__MINGW32__)
-# ifndef _CL_HAVE_WINDOWS_H
-# define _CL_HAVE_WINDOWS_H
-# endif
-#endif
-
-
-///////////////////////////////////////////////////////////////////////////////
-//end _lucene_COMPILER_ACC
-#elif !defined(_lucene_COMPILER_ACC2)
-#define _lucene_COMPILER_ACC2
-//second inclusion
-
- //types
- #if defined(_CL_HAVE_SYS_TYPES_H)
- #include <sys/types.h>
- #endif
- #if defined(_CL_HAVE_INTTYPES_H)
- #include <inttypes.h>
- #elif defined(_CL_HAVE_STDINT_H)
- #include <stdint.h>
- #else
- #if _CL_SIZEOF_UNSIGNED_LONG_LONG==8
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- #elif _CL_SIZEOF_UNSIGNED_LONG==8
- typedef unsigned long uint64_t;
- typedef long int64_t;
- #else
- #error I do not know what to use for a uint64_t.
- #endif
-
- /* Give us an unsigned 32-bit data type. */
- #if _CL_SIZEOF_UNSIGNED_LONG==4
- typedef unsigned long uint32_t;
- typedef long int32_t;
- #elif _CL_SIZEOF_UNSIGNED_INT==4
- typedef unsigned int uint32_t;
- typedef int int32_t;
- #else
- #error I do not know what to use for a uint32_t.
- #endif
-
- /* An unsigned 8-bit data type */
- #if _CL_SIZEOF_UNSIGNED_CHAR==1
- typedef unsigned char uint8_t;
- #else
- #error I do not know what to use for a uint8_t.
- #endif
- #endif
-
- //second chance to fix default settings
- //this must be defined later, otherwise it messes up
- //the standard libraries
- #if !defined(__MINGW32__)
- #define _close ::close
- #define _read ::read
- #endif
-
- //now that int64_t is defined, we can define this...
- #ifndef _CL_HAVE_FILELENGTH
- #undef fileSize
- #define fileSize lucene_filelength
- int64_t lucene_filelength(int handle);
- #endif
-
-#elif !defined(_lucene_COMPILER_ACC3)
-#define _lucene_COMPILER_ACC3
- //third inclusion
-
- #if !defined(__MINGW32__)
- //define replacements
- #define O_RANDOM 0
- #undef O_BINARY
- #define O_BINARY 0
- #define _S_IREAD 0444
- #define _S_IWRITE 0333 // write and execute permissions
-
- //some functions that are needed - not charset dependent and not tchar type functions
- #define _open open
- #define _write write
- #define _snprintf snprintf
-
- //clucene uses ascii for filename interactions
- #define _realpath(rel,abs) realpath(rel,abs)
- #define _mkdir(x) mkdir(x,0777)
- #define _unlink unlink
- #else
- #define _realpath(rel,abs) _fullpath(abs,rel,CL_MAX_PATH)
- #endif
- //also required by mingw
- #define _rename rename
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerBcb.h b/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerBcb.h
deleted file mode 100644
index f1b423b50..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerBcb.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#if !defined(_lucene_COMPILER_BCB)
-#define _lucene_COMPILER_BCB
-
-// It is internal CLucene header - DO NOT include it directly
-
-#include "CLucene/config/define_std.h"
-#undef _CL_HAVE_STRTOLL
-#undef _CL_HAVE_WCSTOLL
-
-#define _LUCENE_PRAGMA_ONCE
-#define _LUCENE_PRAGMA_WARNINGS //tell lucene to display warnings using pragmas instead of #warning
-#define LUCENE_DISABLE_HASHING
-#define LUCENE_STATIC_CONSTANT(type, assignment) enum { assignment }
-
-#undef LUCENE_ENABLE_MEMLEAKTRACKING //it has been reported that this causes problems
-
-#define fileSize filelength
-#define fileSeek lseek
-#define fileTell tell
-#define fileStat stat
-#define fileHandleStat fstat
-
-#define O_RANDOM 0
-
-//java long type
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-
-//java int type
-typedef int int32_t;
-typedef unsigned int uint32_t;
-
-//java byte type
-typedef unsigned char uint8_t;
-
-//floating point type
-//we are going to use qreal now
-//typedef double float_t;
-
-//required type
-typedef int intptr_t;
-
-#define _CL_ILONG(x) x ## L
-#define _ILONGLONG(x) x ## i64
-
-
-#elif !defined(_lucene_COMPILER_BCB2)
-#define _lucene_COMPILER_BCB2
- //second inclusion
-
- #define _open open
- #define _timeb timeb
- #define _ftime ::ftime
- #define _rename rename
-
- #define _realpath(rel,abs) _fullpath(abs,rel,CL_MAX_PATH)
-
-#elif !defined(_lucene_COMPILER_BCB3)
-#define _lucene_COMPILER_BCB3
- //third inclusion
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerGcc.h b/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerGcc.h
deleted file mode 100644
index 3bf91b369..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerGcc.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#if !defined(_lucene_COMPILER_GCC)
-#define _lucene_COMPILER_GCC
-
-// It is internal CLucene header - DO NOT include it directly
-#if !defined(_SUPPRESS_MAKE_BASED_CONFIG)
- #if defined(_BUILD_FOR_QT_)
- #include "qclucene-config_p.h"
- #else
- #include "CLucene/clucene-config.h" //make clucene-config.h file
- #endif
-#endif
-
-#if defined(_ASCII)
- #undef _UCS2
-#elif defined(_UCS2)
-//
-#else
- #define CL_CHARSET_GUESS
-#endif
-
-//dont allow FS_MMAP if mmap is not available
-#if defined(LUCENE_FS_MMAP) && !defined(_CL_HAVE_MMAP)
- #error "LUCENE_FS_MMAP is defined and MMap doesn't appear to be available"
-#endif
-
-#ifdef _CL_HAVE_NO_FUNCTION_TRY_BLOCKS
- #undef _LUCENE_DISABLE_EXCEPTIONS
- #define _LUCENE_DISABLE_EXCEPTIONS
-
- #error "this is bad if you made it here... your compiler seems not to have try/catch blocks."
- #error "maybe you could implement an alternative solution for us? :)"
-#endif
-
-#ifndef _CL_HAVE_NAMESPACES
- #define DISABLE_NAMESPACE
-#endif
-
-#define CL_NS_HASHING(func) __gnu_cxx::func
-#define LUCENE_DISABLE_HASHING //we could enable this, but so far test show that the hashing is slower :(
-
-//define the file functions
-#define fileSeek lseek
-#define fileSize _filelength
-#define fileStat stat
-#define fileHandleStat fstat
-#ifdef _CL_HAVE_TELL
- #define fileTell tell
-#else
- //ftell (and probably soon ftell64) are POSIX standard functions, but tell and
- //tell64 are not, so we define fileTell in terms of fileSeek.
- #define fileTell(fhandle) fileSeek(fhandle, 0, SEEK_CUR)
-#endif
-
-//this is needed early on so that CL_MAX_PATH can be correctly determined
-//in the StdHeader.h. This was earlier causing problems with macosx.
-//:: crash was due to realpath() that expects an output arguments that
-//has at least the size of PATH_MAX (even if the result has a lower size)
-#include <limits.h>
-
-#ifndef _CL_HAVE_WCHAR_T
- typedef unsigned short wchar_t;
-#endif
-
-#if defined(__CYGWIN__)
- //cygwin seems to incorrectly define that it has wprintf???
- #undef _CL_HAVE_WPRINTF
-#elif defined(__MINGW32__)
- #ifndef _CL_HAVE_WINDOWS_H
- #define _CL_HAVE_WINDOWS_H
- #endif
-#endif
-
-
-///////////////////////////////////////////////////////////////////////////////
-//end _lucene_COMPILER_GCC1
-#elif !defined(_lucene_COMPILER_GCC2)
-#define _lucene_COMPILER_GCC2
- //second inclusion
-
- //types
- #if defined(_CL_HAVE_SYS_TYPES_H)
- #include <sys/types.h>
- #endif
- #if defined(_CL_HAVE_INTTYPES_H)
- #include <inttypes.h>
- #elif defined(_CL_HAVE_STDINT_H)
- #include <stdint.h>
- #else
- #if _CL_SIZEOF_UNSIGNED_LONG_LONG==8
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- #elif _CL_SIZEOF_UNSIGNED_LONG==8
- typedef unsigned long uint64_t;
- typedef long int64_t;
- #else
- #error I do not know what to use for a uint64_t.
- #endif
-
- /* Give us an unsigned 32-bit data type. */
- #if _CL_SIZEOF_UNSIGNED_LONG==4
- typedef unsigned long uint32_t;
- typedef long int32_t;
- #elif _CL_SIZEOF_UNSIGNED_INT==4
- typedef unsigned int uint32_t;
- typedef int int32_t;
- #else
- #error I do not know what to use for a uint32_t.
- #endif
-
- /* An unsigned 8-bit data type */
- #if _CL_SIZEOF_UNSIGNED_CHAR==1
- typedef unsigned char uint8_t;
- #else
- #error I do not know what to use for a uint8_t.
- #endif
- #endif
-
- //second chance to fix default settings
- //this must be defined later, otherwise it messes up
- //the standard libraries
- #if !defined(__MINGW32__)
- #define _close ::close
- #define _read ::read
- #endif
-
- //now that int64_t is defined, we can define this...
- #ifndef _CL_HAVE_FILELENGTH
- #undef fileSize
- #define fileSize lucene_filelength
- int64_t lucene_filelength(int handle);
- #endif
-
-#elif !defined(_lucene_COMPILER_GCC3)
-#define _lucene_COMPILER_GCC3
- //third inclusion
-
- #if !defined(__MINGW32__)
- //define replacements
- #define O_RANDOM 0
- #undef O_BINARY
- #define O_BINARY 0
- #define _S_IREAD 0444
- #define _S_IWRITE 0333 // write and execute permissions
-
- //some functions that are needed - not charset dependent and not tchar type functions
- #define _open open
- #define _write write
- #define _snprintf snprintf
-
- //clucene uses ascii for filename interactions
- #define _realpath(rel,abs) realpath(rel,abs)
- #define _mkdir(x) mkdir(x,0777)
- #define _unlink unlink
- #else
- #define _realpath(rel,abs) _fullpath(abs,rel,CL_MAX_PATH)
- #endif
- //also required by mingw
- #define _rename rename
-#endif
-
-#if defined(__GNUC__) && (defined(__sgi) || (defined(Q_OS_SOLARIS) && Q_SOLARIS_VERSION < 10))
- #undef _CL_HAVE_FLOAT_T
-#endif
-
-#if defined(__GNUC__) && defined(Q_OS_SOLARIS) && Q_SOLARIS_VERSION < 10
- #undef _CL_HAVE_WCSTOLL
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerMsvc.h b/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerMsvc.h
deleted file mode 100644
index 8578859f0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/CompilerMsvc.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#if !defined(_lucene_COMPILER_MSVC)
-#define _lucene_COMPILER_MSVC
-
-// It is internal CLucene header - DO NOT include it directly
-
-#include "CLucene/config/define_std.h"
-
-#if (_MSC_VER >= 1300)
-//>= 7.0
- #if defined(_BUILD_FOR_QT_)
- # pragma warning(disable: 4100) // disable unreferenced formal parameter
- # pragma warning(disable: 4189) // disable local variable is initialized but not referenced
- #endif
- # pragma warning(disable: 4512) // This would be very annoying
- # pragma warning(disable: 4290) // Ignore exception specification warning
- # pragma warning(disable: 4250) // Ignore 'class1' : inherits 'class2::member' via dominance (e.g. in MultiReader)
- // Check for STLport presence
- #include <string>
- #if (_MSC_VER < 1310) || defined(_STLPORT_VERSION)
- #define CL_NS_HASHING(func) std::func //the namespace is different on VC 7.0
- #else
- #define CL_NS_HASHING(func) stdext::func
- #endif
- #define LUCENE_STATIC_CONSTANT_SYNTAX 1
-
- #if _MSC_FULL_VER >= 140050320
- #define _CL_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
- #else
- #define _CL_DEPRECATE_TEXT(_Text) __declspec(deprecated)
- #endif
-
-#elif (_MSC_VER >= 1200)
-//6.0
-#ifdef LUCENE_ENABLE_MEMLEAKTRACKING
- #define _CLDELETE_CARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(TCHAR*,x); x=NULL;}
- #define _CLDELETE_CaARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(char*,x); x=NULL;}
- #define _CLDELETE_LCARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(TCHAR*,x);}
- #define _CLDELETE_LCaARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(char*,x);}
-#else
- #define _CLDELETE_CARRAY(x) if (x!=NULL){delete[] __CONST_CAST(TCHAR*,x); x=NULL;}
- #define _CLDELETE_CaARRAY(x) if (x!=NULL){delete[] __CONST_CAST(char*,x); x=NULL;}
- #define _CLDELETE_LCARRAY(x) if (x!=NULL){delete[] __CONST_CAST(TCHAR*,x);}
- #define _CLDELETE_LCaARRAY(x) if (x!=NULL){delete[] __CONST_CAST(char*,x);}
-
-#endif
- #define LUCENE_STATIC_CONSTANT_SYNTAX 2
-
- # pragma warning(disable: 4786) // This would be very annoying
- namespace std{
- # undef min // just in case
- # undef max // just in case
-
- #define min(a,b) (a>b?b:a)
- #define max(a,b) (a>b?a:b)
- }
-
- //only 7.0+ has these function
- #undef _CL_HAVE_LLTOA
- #undef _CL_HAVE_LLTOAW
- #undef _CL_HAVE_INTPTR_T
- #undef _CL_HAVE_WCSTOLL
- #undef _CL_HAVE_STRTOLL
- #undef _CL_HAVE_HASH_MAP
- #undef _CL_HAVE_HASH_SET
-
-#else
-# error "This version of MSVC has not been tested. Please uncomment this line to try anyway. Please send a report to the Clucene's administration if successful"
-#endif
-
-#if _MSC_VER >= 1020
- #define _LUCENE_PRAGMA_ONCE
-#endif
-#define _LUCENE_PRAGMA_WARNINGS //tell lucene to display warnings using pragmas instead of #warning
-
-//if we are compiling using single-threaded libraries, we can disable multi-threading stuff
-#if !defined(_MT) && !defined(_CL_DISABLE_MULTITHREADING)
- #define _CL_DISABLE_MULTITHREADING
-#endif
-
-//msvc supports large files
-#ifdef _LARGE_FILES
-# define fileSize _filelengthi64
-# define fileSeek _lseeki64
-# define fileTell _telli64
-# define fileStat _stati64
-# define fileHandleStat _fstati64
-#else
-# define fileSize _filelength
-# define fileSeek _lseek
-# define fileTell _tell
-# define fileStat _stat
-# define fileHandleStat _fstat
-#endif
-
-//_rename is not defined???
-#define _rename rename
-
-#define CL_MAX_PATH 260 //give the windef.h value for this...
-#define _realpath(rel,abs) _fullpath(abs,rel,CL_MAX_PATH)
-
-//java long type
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-
-//java int type
-typedef int int32_t;
-typedef unsigned int uint32_t;
-
-//java byte type
-typedef unsigned char uint8_t;
-
-//floating point type
-//we are going to use qreal now
-//typedef double float_t;
-
-#define _CL_ILONG(x) x ## L
-#define _ILONGLONG(x) x ## i64
-
-
-#elif !defined(_lucene_COMPILER_MSVC2)
-#define _lucene_COMPILER_MSVC2
- //second inclusion
-
-
-#elif !defined(_lucene_COMPILER_MSVC3)
-#define _lucene_COMPILER_MSVC3
- //third inclusion
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformMac.h b/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformMac.h
deleted file mode 100644
index 9f6d6f421..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformMac.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-// It is internal CLucene header - DO NOT include it directly
-
-# define PATH_DELIMITER _T("/")
-# define PATH_DELIMITERA "/"
-# define PATH_DELIMITERC '/'
-
-# if (__GNUC__ < 3) && !defined( __APPLE_CC__)
-// GCC strange "ignore std" mode works better if you pretend everything
-// is in the std namespace, for the most part.
-# define LUCENE_NO_STDC_NAMESPACE
-# endif
-
-#undef _T //apple has something else strange here...
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformUnix.h b/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformUnix.h
deleted file mode 100644
index 202a894bd..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformUnix.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-// It is internal CLucene header - DO NOT include it directly
-
-# define PATH_DELIMITER _T("/")
-# define PATH_DELIMITERA "/"
-# define PATH_DELIMITERC '/'
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformWin32.h b/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformWin32.h
deleted file mode 100644
index 8b8a1132e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/PlatformWin32.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-// It is internal CLucene header - DO NOT include it directly
-
-# define PATH_DELIMITER _T("\\")
-# define PATH_DELIMITERA "\\"
-# define PATH_DELIMITERC '\\'
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/compiler.h b/src/assistant/3rdparty/clucene/src/CLucene/config/compiler.h
deleted file mode 100644
index 68216b152..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/compiler.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#if !defined(lucene_compiler_h)
-#define lucene_compiler_h
-
-#if defined(_MBCS) || defined(_ASCII)
-#undef _ASCII
-#undef _UCS2
-#define _ASCII
-#elif defined(_UNICODE)
-#define _UCS2
-#elif !defined(_UCS2)
-#define _UCS2
-#endif
-
-//msvc needs unicode define so that it uses unicode library
-#ifdef _UCS2
-#undef _UNICODE
-#define _UNICODE
-#undef _ASCII
-#else
-#undef _UNICODE
-#undef _UCS2
-#endif
-
-
-////////////////////////////////////////////////////////////////////
-// Figure out what compiler we are using
-////////////////////////////////////////////////////////////////////
-
-#if defined(_MSC_VER) && !defined(__MWERKS__) && !defined (__COMO__)
-#define _CLCOMPILER_MSVC _MSC_VER
-#endif
-
-#if defined(__GNUC__) || defined(__SUNPRO_CC) || defined(__xlC__) || defined(__sgi) && defined(__EDG__)
-#include "CLucene/config/CompilerGcc.h"
-
-#elif defined(_CLCOMPILER_MSVC)
-/* Microsoft Visual C++ */
-#include "CLucene/config/CompilerMsvc.h"
-
-#elif defined (__BORLANDC__)
-#include "CLucene/config/CompilerBcb.h"
-
-#elif defined (__HP_aCC)
-#include "CLucene/config/CompilerAcc.h"
-
-#else
- //Unable to identify the compiler, issue error diagnostic.
- //Edit <CLucene/config/LuceneMycomp.h> to set STLport up for your compiler.
- //Uncomment this next line
-#error "Unable to identify the compiler, issue error diagnostic. Edit <CLucene/config/CompilerMycomp.h> to set Lucene up for your compiler."
-#include "CLucene/config/LuceneMycomp.h"
-#endif /* end of compiler choice */
-////////////////////////////////////////////////////////////////////
-
-
-
-////////////////////////////////////////////////////////////////////
-// Now include platform specific definitions
-////////////////////////////////////////////////////////////////////
-
-/* Operating system recognition (basic) */
-#if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__Lynx__) || defined(hpux) || defined(__hpux) || defined(__HAIKU__)
-#undef _UNIX
-#define _UNIX 1
-#include "CLucene/config/PlatformUnix.h"
-
-#elif defined(macintosh) || defined (_MAC) || defined(__APPLE__)
-#undef _MAC
-#define _MAC 1
-#include "CLucene/config/PlatformMac.h"
-
-#elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__)
-#undef _WIN32
-#define _WIN32
-#include "CLucene/config/PlatformWin32.h"
-
-#elif defined (__WIN16) || defined (WIN16) || defined (_WIN16)
-#undef _WIN16
-#define _WIN16
-#error "CLucene has not been tested on this platform. Please send a report to the lucene administrators if you are able to successfully compile"
-#else
-#error "CLucene could not identify the platform."
-#endif /* platforms */
-
-
-
-////////////////////////////////////////////////////////////////////
-// Now we take all that we have learnt, and define some things
-////////////////////////////////////////////////////////////////////
-
-//lets just say that we can always do unicode! :)
-#ifdef CL_CHARSET_GUESS
-#define _UCS2
-#endif
-
-#if defined(_ASCII)
-#undef _UCS2
-#elif defined(_UCS2)
-#undef _ASCII
-#endif
-
-#ifndef _LUCENE_NO_NEW_STYLE_CASTS
-#define __CONST_CAST(typ,var) const_cast<typ>(var)
-#define __REINTERPRET_CAST(typ,var) reinterpret_cast<typ>(var)
-#else
-#define __CONST_CAST(typ,var) ((typ)(var))
-#define __REINTERPRET_CAST,var) ((typ)(var))
-#endif
-
-#ifndef _CL_DEPRECATE_TEXT
-#define _CL_DEPRECATE_TEXT(_Text)
-#endif
-#define _CL_DEPRECATED(_NewItem) _CL_DEPRECATE_TEXT("This function or variable has been superceded by newer library or operating system functionality. Consider using" #_NewItem "instead. See online help for details.")
-
-
-//cnd-debug exit command
-#ifndef debugFatalExit
-#define debugFatalExit(ret) exit(ret)
-#endif
-
-#ifndef _CL_ILONG
-#define _CL_ILONG(x) x ## L
-#endif
-#ifndef _ILONGLONG
-#define _ILONGLONG(x) x ## LL
-#endif
-
-//define whats the values of item intergers *should* be. we can check this in a test
-#define LUCENE_INT64_MAX_SHOULDBE _ILONGLONG(0x7FFFFFFFFFFFFFFF)
-#define LUCENE_INT32_MAX_SHOULDBE 0x7FFFFFFFL
-#define LUCENE_UINT8_MAX_SHOULDBE 0xff
-
-//maximum path length. only used for buffers that use fullpath.
-//anything else should use a dynamic length.
-#if defined(CL_MAX_PATH)
-//do nothing...
-#elif defined(PATH_MAX)
-#define CL_MAX_PATH PATH_MAX
-#elif defined(MAX_PATH)
-#define CL_MAX_PATH MAX_PATH
-#elif defined(_MAX_PATH)
-#define CL_MAX_PATH _MAX_PATH
-#else
- #error "CL_MAX_PATH could not be determined"
-#endif
-
-//this is the max filename... for now its just the same,
-//but this could change, so we use a different name
-#define CL_MAX_NAME CL_MAX_PATH
-//this used to be CL_MAX_NAME * 32, but as Alex Hudson points out, this could come to be 128kb.
-//the above logic for CL_MAX_NAME should be correct enough to handle all file names
-#define CL_MAX_DIR CL_MAX_PATH
-
-#ifdef _LARGE_FILES
-#define LUCENE_MAX_FILELENGTH LUCENE_INT64_MAX_SHOULDBE
-#else
-#define LUCENE_MAX_FILELENGTH LUCENE_INT32_MAX_SHOULDBE
-#endif
-
-//use the LUCENE_STATIC_CONSTANT_SYNTAX to determine LUCENE_STATIC_CONSTANT
-#ifndef LUCENE_STATIC_CONSTANT
- //autoconf is not properly detecting the correct method for this, and since there's no real big
- //harm in always using an enum, we'll probably just make this the default.
- /*#if LUCENE_STATIC_CONSTANT_SYNTAX == 1
- #define LUCENE_STATIC_CONSTANT(type, assignment) static const type assignment
- #elif LUCENE_STATIC_CONSTANT_SYNTAX == 2*/
- #define LUCENE_STATIC_CONSTANT(type, assignment) enum { assignment }
- /*#else
- #error "LUCENE_STATIC_CONSTANT not defined, and/or LUCENE_STATIC_CONSTANT_SYNTAX is not defined to a valid value"
- #endif*/
-#endif
-
-//end of lucene_compiler_h
-#elif !defined(lucene_compiler_h2)
-#define lucene_compiler_h2
-//here we include the compiler header again, this gives the header a
-//second chance at including stuff, after the main inclusions are complete
-
-#if defined (__GNUC__) || defined(__SUNPRO_CC) || defined(__xlC__) || defined(__sgi) && defined(__EDG__)
-#include "CLucene/config/CompilerGcc.h"
-
-#elif defined(_CLCOMPILER_MSVC)
-/* Microsoft Visual C++ */
-#include "CLucene/config/CompilerMsvc.h"
-
-#elif defined __BORLANDC__
-#include "CLucene/config/CompilerBcb.h"
-
-#elif defined (__HP_aCC)
-#include "CLucene/config/CompilerAcc.h"
-
-#else
-//Unable to identify the compiler, issue error diagnostic.
-//Edit <CLucene/config/LuceneMycomp.h> to set STLport up for your compiler.
-//Uncomment this next line
-#error "Unable to identify the compiler, issue error diagnostic. Edit <CLucene/config/CompilerMycomp.h> to set Lucene up for your compiler."
-#include "CLucene/config/LuceneMycomp.h"
-#endif /* end of compiler choice */
-
-#ifndef _CL_HAVE_FLOAT_T
-//#ifdef _CL_HAVE_LONG_DOUBLE
-// long double's are not working (reported by Mark Ashworth on Solaris 64)
-// typedef long double float_t; /* `float' expressions are evaluated as `long double'. */
-//#else
-// we are going to use qreal now
-// typedef double float_t;
-//#endif
-#endif
-
-/*todo: but need to define SIZEOF_VOID_P #if (SIZEOF_VOID_P > 4 && SIZEOF_VOID_P <= 8)
-#ifndef _CL_HAVE_INTPTR_T
- typedef int64_t intptr_t;
-#endif
-#elif (SIZEOF_VOID_P > 2 && SIZEOF_VOID_P <= 4)
-# ifndef _CL_HAVE_INTPTR_T
- typedef int32_t intptr_t;
-# endif
-#else
-#error "void * is either >8 bytes or <= 2. In either case, I am confused."
-#endif*/
-
-#ifndef _CL_HAVE_INTPTR_T
- typedef int intptr_t;
-#endif
-
-//end of lucene_compiler_h2
-#elif !defined(lucene_compiler_h3)
-#define lucene_compiler_h3
-//here we include the compiler header again, this gives the header a
-//third chance at including stuff, after the main inclusions are complete
-
-#if defined (__GNUC__ ) || defined(__SUNPRO_CC) || defined(__xlC__) || defined(__sgi) && defined(__EDG__)
-#include "CLucene/config/CompilerGcc.h"
-
-#elif defined(_CLCOMPILER_MSVC)
-/* Microsoft Visual C++ */
-#include "CLucene/config/CompilerMsvc.h"
-
-#elif defined __BORLANDC__
-#include "CLucene/config/CompilerBcb.h"
-
-#elif defined (__HP_aCC)
-#include "CLucene/config/CompilerAcc.h"
-
-#else
-//Unable to identify the compiler, issue error diagnostic.
-//Edit <CLucene/config/LuceneMycomp.h> to set STLport up for your compiler.
-//Uncomment this next line
-#error "Unable to identify the compiler, issue error diagnostic. Edit <CLucene/config/CompilerMycomp.h> to set Lucene up for your compiler."
-#include "CLucene/config/LuceneMycomp.h"
-#endif /* end of compiler choice */
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/define_std.h b/src/assistant/3rdparty/clucene/src/CLucene/config/define_std.h
deleted file mode 100644
index 22a079053..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/define_std.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef lucene_define_std
-#define lucene_define_std
-//define a standard list of defines.
-//These defines represents a fairly complete compiler.
-//Of course it is preferable to use the autoconf generated
-//list, but then not all systems can do this :)
-
-//we support long files - 64 bit file functions
-#define _LARGE_FILES
-
-//support namespaces
-#define _CL_HAVE_NAMESPACES
-
-//support try/catch blocks
-#define _CL_HAVE_FUNCTION_TRY_BLOCKS
-
-//the normal headers
-#define _CL_STDC_HEADERS
-#define _CL_HAVE_STDARG_H
-#define _CL_HAVE_ALGORITHM
-#define _CL_HAVE_FUNCTIONAL
-#define _CL_HAVE_MATH_H
-#define _CL_HAVE_STL
-#define _CL_HAVE_HASH_MAP
-#define _CL_HAVE_HASH_SET
-#define _CL_HAVE_MAP
-#define _CL_HAVE_SET
-#define _CL_HAVE_LIST
-#define _CL_HAVE_VECTOR
-#define _CL_HAVE_STDEXCEPT
-#define _CL_HAVE_ERRNO_H
-#define _CL_HAVE_SYS_STAT_H
-#define _CL_HAVE_FCNTL_H
-
-//character & std tchar support
-#define _CL_HAVE_TCHAR_H
-#ifdef _UCS2
- #define _CL_HAVE_WCTYPE_H
-
- #define _CL_HAVE_WCSCPY
- #define _CL_HAVE_WCSNCPY
- #define _CL_HAVE_WCSCAT
- #define _CL_HAVE_WCSCHR
- #define _CL_HAVE_WCSSTR
- #define _CL_HAVE_WCSLEN
- #define _CL_HAVE_WCSCMP
- #define _CL_HAVE_WCSNCMP
- #define _CL_HAVE_WCSCSPN
-#else
- #define _CL_HAVE_CTYPE_H
-#endif
-
-//already have the normal structures
-#define _CL_HAVE_FLOAT_T
-#define _CL_HAVE_INTPTR_T
-
-//system dependant:
-#define _CL_HAVE_STRING_H //could be HAVE_STRINGS_H && HAVE_STRCHR
-#define _CL_HAVE_SYS_TIMEB_H
-#define _CL_HAVE_TIME_H
-
-#if defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__)
- #define _CL_HAVE_IO_H
- #define _CL_HAVE_DIRECT_H
- #define _CL_HAVE_WINDOWS_H
-#else
- #define _CL_HAVE_UNISTD_H
-#endif
-#ifdef UNDER_CE
-#undef _CL_HAVE_SYS_TIMEB_H
-#endif
-
-////////////////////////////////////////////////
-//now for individual functions. some compilers
-//miss these, so must individually define what
-//we have
-////////////////////////////////////////////////
-
-//string functions
-#define _CL_HAVE_STRLWR
-#define _CL_HAVE_WCSLWR
-#define _CL_HAVE_WCSCASECMP
-#define _CL_HAVE_STRCASECMP
-
-//formatting functions
-#define _CL_HAVE_SNWPRINTF
-#define _CL_HAVE_VSNWPRINTF
-#define _CL_HAVE_WPRINTF
-#define _CL_HAVE_SNPRINTF
-#define _CL_HAVE_PRINTF
-
-
-//conversion functions
-#define _CL_HAVE_STRTOLL
-#define _CL_HAVE_WCSTOLL
-#define _CL_HAVE_WCSTOD
-#define _CL_HAVE_LLTOA
-#define _CL_HAVE_LLTOW
-#define _CL_HAVE_INTPTR_T
-
-//these ones are not standard (msvc)
-//so you will probably need to undefine
-//if you are not using msvc
-#define _CL_HAVE_FILELENGTH
-
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.cpp
deleted file mode 100644
index e85791b17..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.cpp
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright (C) 1999 Tom Tromey
- * Copyright (C) 2000 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- *
- ************************************************
- * Also licensed with permission from Tom Tromey
- * and Owen Taylor under the Apache license.
- * Original location:
- * http://cvs.gnome.org/viewcvs/glib/glib/guniprop.c?view=log
- ************************************************
- *
- * Copyright 2003-2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-
-#include "CLucene/StdHeader.h"
-
-typedef unsigned long gunichar;
-typedef unsigned short guint16;
-typedef short gint16;
-typedef char gchar;
-typedef unsigned char guchar;
-
-/* These are the possible character classifications.
- * See http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
- or http://www.unicode.org/Public/UNIDATA/UCD.html.
-
- todo: i think there is a new version of the unicode, which we should use.
- data is licensed like this: http://www.unicode.org/copyright.html... not sure but looks apache compatible
- */
-typedef enum
-{
- G_UNICODE_CONTROL,
- G_UNICODE_FORMAT,
- G_UNICODE_UNASSIGNED,
- G_UNICODE_PRIVATE_USE,
- G_UNICODE_SURROGATE,
- G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER,
- G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_COMBINING_MARK,
- G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_LETTER_NUMBER,
- G_UNICODE_OTHER_NUMBER,
- G_UNICODE_CONNECT_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_FINAL_PUNCTUATION,
- G_UNICODE_INITIAL_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_LINE_SEPARATOR,
- G_UNICODE_PARAGRAPH_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR
-} GUnicodeType;
-
-
-#include "gunichartables.h"
-
-#define ATTR_TABLE(Page) (((Page) <= G_UNICODE_LAST_PAGE_PART1) \
- ? attr_table_part1[Page] \
- : attr_table_part2[(Page) - 0xe00])
-
-#define ATTTABLE(Page, Char) \
- ((ATTR_TABLE(Page) == G_UNICODE_MAX_TABLE_INDEX) ? 0 : (attr_data[ATTR_TABLE(Page)][Char]))
-
-
-#define TTYPE_PART1(Page, Char) \
- ((type_table_part1[Page] >= G_UNICODE_MAX_TABLE_INDEX) \
- ? (type_table_part1[Page] - G_UNICODE_MAX_TABLE_INDEX) \
- : (type_data[type_table_part1[Page]][Char]))
-
-#define TTYPE_PART2(Page, Char) \
- ((type_table_part2[Page] >= G_UNICODE_MAX_TABLE_INDEX) \
- ? (type_table_part2[Page] - G_UNICODE_MAX_TABLE_INDEX) \
- : (type_data[type_table_part2[Page]][Char]))
-
-#define TYPE(Char) \
- (((Char) <= G_UNICODE_LAST_CHAR_PART1) \
- ? TTYPE_PART1 ((Char) >> 8, (Char) & 0xff) \
- : (((Char) >= 0xe0000 && (Char) <= G_UNICODE_LAST_CHAR) \
- ? TTYPE_PART2 (((Char) - 0xe0000) >> 8, (Char) & 0xff) \
- : G_UNICODE_UNASSIGNED))
-
-/* Count the number of elements in an array. The array must be defined
- * as such; using this with a dynamically allocated array will give
- * incorrect results.
- */
-#define G_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
-
-
-
-
-#if defined(LUCENE_USE_INTERNAL_CHAR_FUNCTIONS)
-#ifdef _LUCENE_PRAGMA_WARNINGS
- #pragma message ("===== Using internal character function =====")
-#else
-#if !(defined(Q_OS_SOLARIS) || defined(Q_CC_MIPS))
-#warning "===== Using internal character function ====="
-#endif
-#endif
-
-bool cl_isletter(gunichar c)
-{
- int t = TYPE (c);
- switch(t)
- {
- case G_UNICODE_LOWERCASE_LETTER: return true;
- case G_UNICODE_TITLECASE_LETTER: return true;
- case G_UNICODE_UPPERCASE_LETTER: return true;
- case G_UNICODE_MODIFIER_LETTER: return true;
- case G_UNICODE_OTHER_LETTER: return true;
- default: return false;
- }
-}
-
-bool cl_isalnum(gunichar c)
-{
- int t = TYPE (c);
- switch(t)
- {
- case G_UNICODE_LOWERCASE_LETTER: return true;
- case G_UNICODE_TITLECASE_LETTER: return true;
- case G_UNICODE_UPPERCASE_LETTER: return true;
- case G_UNICODE_MODIFIER_LETTER: return true;
- case G_UNICODE_OTHER_LETTER: return true;
- case G_UNICODE_DECIMAL_NUMBER: return true;
- case G_UNICODE_LETTER_NUMBER: return true;
- case G_UNICODE_OTHER_NUMBER: return true;
- default: return false;
- }
-}
-
-bool cl_isdigit(gunichar c)
-{
- int t = TYPE (c);
- switch(t)
- {
- case G_UNICODE_DECIMAL_NUMBER: return true;
- case G_UNICODE_LETTER_NUMBER: return true;
- case G_UNICODE_OTHER_NUMBER: return true;
- default: return false;
- }
-}
-
-/**
- * cl_isspace:
- * @c: a Unicode character
- *
- * Determines whether a character is a space, tab, or line separator
- * (newline, carriage return, etc.). Given some UTF-8 text, obtain a
- * character value with lucene_utf8towc().
- *
- * (Note: don't use this to do word breaking; you have to use
- * Pango or equivalent to get word breaking right, the algorithm
- * is fairly complex.)
- *
- * Return value: %TRUE if @c is a punctuation character
- **/
-bool cl_isspace (gunichar c)
-{
- switch (c)
- {
- /* special-case these since Unicode thinks they are not spaces */
- case '\t':
- case '\n':
- case '\r':
- case '\f':
- return true;
-
- default:
- {
- int t = TYPE ((gunichar)c);
- return (t == G_UNICODE_SPACE_SEPARATOR || t == G_UNICODE_LINE_SEPARATOR
- || t == G_UNICODE_PARAGRAPH_SEPARATOR);
- }
- }
-}
-
-
-
-/**
- * cl_tolower:
- * @c: a Unicode character.
- *
- * Converts a character to lower case.
- *
- * Return value: the result of converting @c to lower case.
- * If @c is not an upperlower or titlecase character,
- * or has no lowercase equivalent @c is returned unchanged.
- **/
-TCHAR cl_tolower (TCHAR ch)
-{
- gunichar c=ch;
- int t = TYPE ((gunichar)c);
- if (t == G_UNICODE_UPPERCASE_LETTER)
- {
- gunichar val = ATTTABLE (c >> 8, c & 0xff);
- if (val >= 0x1000000)
- {
- const gchar *p = special_case_table + val - 0x1000000;
- int len=0;
- wchar_t ret=0;
- lucene_utf8towc(&ret,p,6);
-#ifdef _UCS2
- return ret;
-#else
- return LUCENE_OOR_CHAR(ret);
-#endif
- //return cl_utf8_get_char (p, &len);
- }else
- return val ? val : c;
- }else if (t == G_UNICODE_TITLECASE_LETTER){
- unsigned int i;
- for (i = 0; i < G_N_ELEMENTS (title_table); ++i)
- {
- if (title_table[i][0] == c)
- return title_table[i][2];
- }
- }
- return c;
-}
-
-/**
- * cl_toupper:
- * @c: a Unicode character
- *
- * Converts a character to uppercase.
- *
- * Return value: the result of converting @c to uppercase.
- * If @c is not an lowercase or titlecase character,
- * or has no upper case equivalent @c is returned unchanged.
- **/
-TCHAR cl_toupper (TCHAR ch)
-{
- gunichar c=ch;
- int t = TYPE (c);
- if (t == G_UNICODE_LOWERCASE_LETTER)
- {
- gunichar val = ATTTABLE (c >> 8, c & 0xff);
- if (val >= 0x1000000)
- {
- const gchar *p = special_case_table + val - 0x1000000;
-
- wchar_t ret=0;
- lucene_utf8towc(&ret,p,6);
-#ifdef _UCS2
- return ret;
-#else
- return LUCENE_OOR_CHAR(ret);
-#endif
- //return lucene_utf8towc (p);
- }
- else
- return val ? val : c;
- }
- else if (t == G_UNICODE_TITLECASE_LETTER)
- {
- unsigned int i;
- for (i = 0; i < G_N_ELEMENTS (title_table); ++i)
- {
- if (title_table[i][0] == c)
- return title_table[i][1];
- }
- }
- return c;
-}
-
-
-
-/**
- * cl_tcasefold:
- * @str: a unicode string
- *
- * Converts a string into a form that is independent of case. The
- * result will not correspond to any particular case, but can be
- * compared for equality or ordered with the results of calling
- * cl_tcasefold() on other strings.
- *
- * Note that calling cl_tcasefold() followed by g_utf8_collate() is
- * only an approximation to the correct linguistic case insensitive
- * ordering, though it is a fairly good one. Getting this exactly
- * right would require a more sophisticated collation function that
- * takes case sensitivity into account. GLib does not currently
- * provide such a function.
- *
- * Return value: a newly allocated string, that is a
- * case independent form of @str.
- **/
-TCHAR cl_tcasefold(const TCHAR ch){
- int start = 0;
- int end = G_N_ELEMENTS (casefold_table);
-
- if (ch >= casefold_table[start].ch &&
- ch <= casefold_table[end - 1].ch)
- {
- while (1)
- {
- int half = (start + end) / 2;
- if (ch == casefold_table[half].ch)
- {
- wchar_t ret=0;
- lucene_utf8towc(&ret,casefold_table[half].data,6);
-
- #ifdef _UCS2
- return ret;
- #else
- LUCENE_OOR_CHAR(ret)
- #endif
- }else if (half == start){
- break;
- }else if (ch > casefold_table[half].ch){
- start = half;
- }else{
- end = half;
- }
- }
- }
- return cl_tolower(ch);
-
-}
-
-
-//this function was not taken from gnome
-TCHAR* cl_tcscasefold( TCHAR * str, int len ) //len default is -1
-{
- TCHAR *p = str;
- while ((len < 0 || p < str + len) && *p)
- {
- *p = cl_tcasefold(*p);
- p++;
- }
- return str;
-}
-//this function was not taken from gnome
-int cl_tcscasefoldcmp(const TCHAR * dst, const TCHAR * src){
- TCHAR f,l;
-
- do{
- f = cl_tcasefold( (*(dst++)) );
- l = cl_tcasefold( (*(src++)) );
- } while ( (f) && (f == l) );
-
- return (int)(f - l);
-}
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.h b/src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.h
deleted file mode 100644
index 182a87054..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/gunichartables.h
+++ /dev/null
@@ -1,11264 +0,0 @@
-/* This file is automatically generated. DO NOT EDIT!
- Instead, edit gen-unicode-tables.pl and re-run. */
-
-#ifndef CHARTABLES_H
-#define CHARTABLES_H
-
-#define G_UNICODE_DATA_VERSION "4.0"
-
-#define G_UNICODE_LAST_CHAR 0x10ffff
-
-#define G_UNICODE_MAX_TABLE_INDEX 10000
-
-#define G_UNICODE_LAST_CHAR_PART1 0x2FAFF
-
-#define G_UNICODE_LAST_PAGE_PART1 762
-
-static const char type_data[][256] = {
- { /* page 0, index 0 */
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MATH_SYMBOL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_CONTROL,
- G_UNICODE_CONTROL, G_UNICODE_CONTROL, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_INITIAL_PUNCTUATION, G_UNICODE_MATH_SYMBOL, G_UNICODE_FORMAT,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_FINAL_PUNCTUATION, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER
- },
- { /* page 1, index 1 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER
- },
- { /* page 2, index 2 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL
- },
- { /* page 3, index 3 */
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 4, index 4 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 5, index 5 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 6, index 6 */
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_FORMAT, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_LETTER
- },
- { /* page 7, index 7 */
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 9, index 8 */
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_LETTER, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 10, index 9 */
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 11, index 10 */
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 12, index 11 */
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 13, index 12 */
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 14, index 13 */
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 15, index 14 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 16, index 15 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 17, index 16 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 18, index 17 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER
- },
- { /* page 19, index 18 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 20, index 19 */
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER
- },
- { /* page 22, index 20 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_SPACE_SEPARATOR, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 23, index 21 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 24, index 22 */
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_UNASSIGNED,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 25, index 23 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
- },
- { /* page 29, index 24 */
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 30, index 25 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 31, index 26 */
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_TITLECASE_LETTER, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_UNASSIGNED
- },
- { /* page 32, index 27 */
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_SPACE_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_SPACE_SEPARATOR, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_INITIAL_PUNCTUATION, G_UNICODE_FINAL_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_INITIAL_PUNCTUATION,
- G_UNICODE_INITIAL_PUNCTUATION, G_UNICODE_FINAL_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_INITIAL_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_LINE_SEPARATOR, G_UNICODE_PARAGRAPH_SEPARATOR,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_SPACE_SEPARATOR, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_INITIAL_PUNCTUATION, G_UNICODE_FINAL_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_SPACE_SEPARATOR, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 33, index 28 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL
- },
- { /* page 35, index 29 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 36, index 30 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER
- },
- { /* page 37, index 31 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL
- },
- { /* page 38, index 32 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 39, index 33 */
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL
- },
- { /* page 41, index 34 */
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL
- },
- { /* page 43, index 35 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 46, index 36 */
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 47, index 37 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 48, index 38 */
- G_UNICODE_SPACE_SEPARATOR, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_LETTER_NUMBER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER
- },
- { /* page 49, index 39 */
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER
- },
- { /* page 50, index 40 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED
- },
- { /* page 77, index 41 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL
- },
- { /* page 159, index 42 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 164, index 43 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 215, index 44 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 250, index 45 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 251, index 46 */
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
- },
- { /* page 253, index 47 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 254, index 48 */
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_DASH_PUNCTUATION, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT
- },
- { /* page 255, index 49 */
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 256, index 50 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 257, index 51 */
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 259, index 52 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_LETTER_NUMBER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 260, index 53 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 264, index 54 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 464, index 55 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 465, index 56 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK,
- G_UNICODE_COMBINING_MARK, G_UNICODE_COMBINING_MARK, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 467, index 57 */
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 468, index 58 */
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER
- },
- { /* page 469, index 59 */
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER
- },
- { /* page 470, index 60 */
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_MATH_SYMBOL, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER
- },
- { /* page 471, index 61 */
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MATH_SYMBOL,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER
- },
- { /* page 678, index 62 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 762, index 63 */
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 3584, index 64 */
- G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
- },
- { /* page 3585, index 65 */
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 4095, index 66 */
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- },
- { /* page 4351, index 67 */
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE,
- G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_UNASSIGNED,
- G_UNICODE_UNASSIGNED
- }
-};
-
-/* U+0000 through U+2FAFF */
-static const gint16 type_table_part1[763] = {
- 0 /* page 0 */,
- 1 /* page 1 */,
- 2 /* page 2 */,
- 3 /* page 3 */,
- 4 /* page 4 */,
- 5 /* page 5 */,
- 6 /* page 6 */,
- 7 /* page 7 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 8 /* page 9 */,
- 9 /* page 10 */,
- 10 /* page 11 */,
- 11 /* page 12 */,
- 12 /* page 13 */,
- 13 /* page 14 */,
- 14 /* page 15 */,
- 15 /* page 16 */,
- 16 /* page 17 */,
- 17 /* page 18 */,
- 18 /* page 19 */,
- 19 /* page 20 */,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 20 /* page 22 */,
- 21 /* page 23 */,
- 22 /* page 24 */,
- 23 /* page 25 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 24 /* page 29 */,
- 25 /* page 30 */,
- 26 /* page 31 */,
- 27 /* page 32 */,
- 28 /* page 33 */,
- G_UNICODE_MATH_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
- 29 /* page 35 */,
- 30 /* page 36 */,
- 31 /* page 37 */,
- 32 /* page 38 */,
- 33 /* page 39 */,
- G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
- 34 /* page 41 */,
- G_UNICODE_MATH_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
- 35 /* page 43 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 36 /* page 46 */,
- 37 /* page 47 */,
- 38 /* page 48 */,
- 39 /* page 49 */,
- 40 /* page 50 */,
- G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 41 /* page 77 */,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 42 /* page 159 */,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 43 /* page 164 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 44 /* page 215 */,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 45 /* page 250 */,
- 46 /* page 251 */,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 47 /* page 253 */,
- 48 /* page 254 */,
- 49 /* page 255 */,
- 50 /* page 256 */,
- 51 /* page 257 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 52 /* page 259 */,
- 53 /* page 260 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 54 /* page 264 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 55 /* page 464 */,
- 56 /* page 465 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- 57 /* page 467 */,
- 58 /* page 468 */,
- 59 /* page 469 */,
- 60 /* page 470 */,
- 61 /* page 471 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 62 /* page 678 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
- 63 /* page 762 */
-};
-
-/* U+E0000 through U+10FFFF */
-static const gint16 type_table_part2[768] = {
- 64 /* page 3584 */,
- 65 /* page 3585 */,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- 66 /* page 4095 */,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
- 67 /* page 4351 */
-};
-
-static const gunichar attr_data[][256] = {
- { /* page 0, index 0 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
- 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
- 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079,
- 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b,
- 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
- 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x039c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5,
- 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee,
- 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0000,
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x1000000,
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8,
- 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1,
- 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0000, 0x00d8, 0x00d9, 0x00da,
- 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178
- },
- { /* page 1, index 1 */
- 0x0101, 0x0100, 0x0103, 0x0102, 0x0105, 0x0104, 0x0107, 0x0106, 0x0109,
- 0x0108, 0x010b, 0x010a, 0x010d, 0x010c, 0x010f, 0x010e, 0x0111, 0x0110,
- 0x0113, 0x0112, 0x0115, 0x0114, 0x0117, 0x0116, 0x0119, 0x0118, 0x011b,
- 0x011a, 0x011d, 0x011c, 0x011f, 0x011e, 0x0121, 0x0120, 0x0123, 0x0122,
- 0x0125, 0x0124, 0x0127, 0x0126, 0x0129, 0x0128, 0x012b, 0x012a, 0x012d,
- 0x012c, 0x012f, 0x012e, 0x1000007, 0x0049, 0x0133, 0x0132, 0x0135,
- 0x0134, 0x0137, 0x0136, 0x0000, 0x013a, 0x0139, 0x013c, 0x013b, 0x013e,
- 0x013d, 0x0140, 0x013f, 0x0142, 0x0141, 0x0144, 0x0143, 0x0146, 0x0145,
- 0x0148, 0x0147, 0x1000086, 0x014b, 0x014a, 0x014d, 0x014c, 0x014f,
- 0x014e, 0x0151, 0x0150, 0x0153, 0x0152, 0x0155, 0x0154, 0x0157, 0x0156,
- 0x0159, 0x0158, 0x015b, 0x015a, 0x015d, 0x015c, 0x015f, 0x015e, 0x0161,
- 0x0160, 0x0163, 0x0162, 0x0165, 0x0164, 0x0167, 0x0166, 0x0169, 0x0168,
- 0x016b, 0x016a, 0x016d, 0x016c, 0x016f, 0x016e, 0x0171, 0x0170, 0x0173,
- 0x0172, 0x0175, 0x0174, 0x0177, 0x0176, 0x00ff, 0x017a, 0x0179, 0x017c,
- 0x017b, 0x017e, 0x017d, 0x0053, 0x0000, 0x0253, 0x0183, 0x0182, 0x0185,
- 0x0184, 0x0254, 0x0188, 0x0187, 0x0256, 0x0257, 0x018c, 0x018b, 0x0000,
- 0x01dd, 0x0259, 0x025b, 0x0192, 0x0191, 0x0260, 0x0263, 0x01f6, 0x0269,
- 0x0268, 0x0199, 0x0198, 0x0000, 0x0000, 0x026f, 0x0272, 0x0220, 0x0275,
- 0x01a1, 0x01a0, 0x01a3, 0x01a2, 0x01a5, 0x01a4, 0x0280, 0x01a8, 0x01a7,
- 0x0283, 0x0000, 0x0000, 0x01ad, 0x01ac, 0x0288, 0x01b0, 0x01af, 0x028a,
- 0x028b, 0x01b4, 0x01b3, 0x01b6, 0x01b5, 0x0292, 0x01b9, 0x01b8, 0x0000,
- 0x0000, 0x01bd, 0x01bc, 0x0000, 0x01f7, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x01c6, 0x0000, 0x01c4, 0x01c9, 0x0000, 0x01c7, 0x01cc, 0x0000, 0x01ca,
- 0x01ce, 0x01cd, 0x01d0, 0x01cf, 0x01d2, 0x01d1, 0x01d4, 0x01d3, 0x01d6,
- 0x01d5, 0x01d8, 0x01d7, 0x01da, 0x01d9, 0x01dc, 0x01db, 0x018e, 0x01df,
- 0x01de, 0x01e1, 0x01e0, 0x01e3, 0x01e2, 0x01e5, 0x01e4, 0x01e7, 0x01e6,
- 0x01e9, 0x01e8, 0x01eb, 0x01ea, 0x01ed, 0x01ec, 0x01ef, 0x01ee,
- 0x10000ad, 0x01f3, 0x0000, 0x01f1, 0x01f5, 0x01f4, 0x0195, 0x01bf,
- 0x01f9, 0x01f8, 0x01fb, 0x01fa, 0x01fd, 0x01fc, 0x01ff, 0x01fe
- },
- { /* page 2, index 2 */
- 0x0201, 0x0200, 0x0203, 0x0202, 0x0205, 0x0204, 0x0207, 0x0206, 0x0209,
- 0x0208, 0x020b, 0x020a, 0x020d, 0x020c, 0x020f, 0x020e, 0x0211, 0x0210,
- 0x0213, 0x0212, 0x0215, 0x0214, 0x0217, 0x0216, 0x0219, 0x0218, 0x021b,
- 0x021a, 0x021d, 0x021c, 0x021f, 0x021e, 0x019e, 0x0000, 0x0223, 0x0222,
- 0x0225, 0x0224, 0x0227, 0x0226, 0x0229, 0x0228, 0x022b, 0x022a, 0x022d,
- 0x022c, 0x022f, 0x022e, 0x0231, 0x0230, 0x0233, 0x0232, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0181, 0x0186, 0x0000, 0x0189, 0x018a, 0x0000, 0x018f,
- 0x0000, 0x0190, 0x0000, 0x0000, 0x0000, 0x0000, 0x0193, 0x0000, 0x0000,
- 0x0194, 0x0000, 0x0000, 0x0000, 0x0000, 0x0197, 0x0196, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x019c, 0x0000, 0x0000, 0x019d, 0x0000, 0x0000,
- 0x019f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x01ae, 0x0000, 0x01b1, 0x01b2, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x01b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 3, index 3 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ac,
- 0x0000, 0x03ad, 0x03ae, 0x03af, 0x0000, 0x03cc, 0x0000, 0x03cd, 0x03ce,
- 0x100008f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x0000, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0x03ca, 0x03cb, 0x0386, 0x0388, 0x0389, 0x038a, 0x100009e, 0x0391,
- 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a,
- 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a3,
- 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c,
- 0x038e, 0x038f, 0x0000, 0x0392, 0x0398, 0x0000, 0x0000, 0x0000, 0x03a6,
- 0x03a0, 0x0000, 0x03d9, 0x03d8, 0x03db, 0x03da, 0x03dd, 0x03dc, 0x03df,
- 0x03de, 0x03e1, 0x03e0, 0x03e3, 0x03e2, 0x03e5, 0x03e4, 0x03e7, 0x03e6,
- 0x03e9, 0x03e8, 0x03eb, 0x03ea, 0x03ed, 0x03ec, 0x03ef, 0x03ee, 0x039a,
- 0x03a1, 0x03f9, 0x0000, 0x03b8, 0x0395, 0x0000, 0x03f8, 0x03f7, 0x03f2,
- 0x03fb, 0x03fa, 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 4, index 4 */
- 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
- 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f, 0x0430, 0x0431,
- 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a,
- 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443,
- 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c,
- 0x044d, 0x044e, 0x044f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
- 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0400,
- 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409,
- 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0461, 0x0460, 0x0463,
- 0x0462, 0x0465, 0x0464, 0x0467, 0x0466, 0x0469, 0x0468, 0x046b, 0x046a,
- 0x046d, 0x046c, 0x046f, 0x046e, 0x0471, 0x0470, 0x0473, 0x0472, 0x0475,
- 0x0474, 0x0477, 0x0476, 0x0479, 0x0478, 0x047b, 0x047a, 0x047d, 0x047c,
- 0x047f, 0x047e, 0x0481, 0x0480, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x048b, 0x048a, 0x048d, 0x048c, 0x048f, 0x048e,
- 0x0491, 0x0490, 0x0493, 0x0492, 0x0495, 0x0494, 0x0497, 0x0496, 0x0499,
- 0x0498, 0x049b, 0x049a, 0x049d, 0x049c, 0x049f, 0x049e, 0x04a1, 0x04a0,
- 0x04a3, 0x04a2, 0x04a5, 0x04a4, 0x04a7, 0x04a6, 0x04a9, 0x04a8, 0x04ab,
- 0x04aa, 0x04ad, 0x04ac, 0x04af, 0x04ae, 0x04b1, 0x04b0, 0x04b3, 0x04b2,
- 0x04b5, 0x04b4, 0x04b7, 0x04b6, 0x04b9, 0x04b8, 0x04bb, 0x04ba, 0x04bd,
- 0x04bc, 0x04bf, 0x04be, 0x0000, 0x04c2, 0x04c1, 0x04c4, 0x04c3, 0x04c6,
- 0x04c5, 0x04c8, 0x04c7, 0x04ca, 0x04c9, 0x04cc, 0x04cb, 0x04ce, 0x04cd,
- 0x0000, 0x04d1, 0x04d0, 0x04d3, 0x04d2, 0x04d5, 0x04d4, 0x04d7, 0x04d6,
- 0x04d9, 0x04d8, 0x04db, 0x04da, 0x04dd, 0x04dc, 0x04df, 0x04de, 0x04e1,
- 0x04e0, 0x04e3, 0x04e2, 0x04e5, 0x04e4, 0x04e7, 0x04e6, 0x04e9, 0x04e8,
- 0x04eb, 0x04ea, 0x04ed, 0x04ec, 0x04ef, 0x04ee, 0x04f1, 0x04f0, 0x04f3,
- 0x04f2, 0x04f5, 0x04f4, 0x0000, 0x0000, 0x04f9, 0x04f8, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 5, index 5 */
- 0x0501, 0x0500, 0x0503, 0x0502, 0x0505, 0x0504, 0x0507, 0x0506, 0x0509,
- 0x0508, 0x050b, 0x050a, 0x050d, 0x050c, 0x050f, 0x050e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565,
- 0x0566, 0x0567, 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e,
- 0x056f, 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577,
- 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f, 0x0580,
- 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0531, 0x0532,
- 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b,
- 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544,
- 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d,
- 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556,
- 0x1000044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 6, index 6 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 9, index 7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,
- 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 10, index 8 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,
- 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 11, index 9 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,
- 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 12, index 10 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,
- 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 13, index 11 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 14, index 12 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
- 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 15, index 13 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,
- 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 16, index 14 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
- 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 19, index 15 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,
- 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 23, index 16 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 24, index 17 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
- 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 25, index 18 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
- 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 30, index 19 */
- 0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06, 0x1e09,
- 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e, 0x1e11, 0x1e10,
- 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16, 0x1e19, 0x1e18, 0x1e1b,
- 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e, 0x1e21, 0x1e20, 0x1e23, 0x1e22,
- 0x1e25, 0x1e24, 0x1e27, 0x1e26, 0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d,
- 0x1e2c, 0x1e2f, 0x1e2e, 0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34,
- 0x1e37, 0x1e36, 0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f,
- 0x1e3e, 0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46,
- 0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e, 0x1e51,
- 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56, 0x1e59, 0x1e58,
- 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e, 0x1e61, 0x1e60, 0x1e63,
- 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66, 0x1e69, 0x1e68, 0x1e6b, 0x1e6a,
- 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e, 0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75,
- 0x1e74, 0x1e77, 0x1e76, 0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c,
- 0x1e7f, 0x1e7e, 0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87,
- 0x1e86, 0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e,
- 0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0x10000b6, 0x10000bf,
- 0x10000c8, 0x10000d1, 0x10000da, 0x1e60, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6, 0x1ea9,
- 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae, 0x1eb1, 0x1eb0,
- 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6, 0x1eb9, 0x1eb8, 0x1ebb,
- 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe, 0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2,
- 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6, 0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd,
- 0x1ecc, 0x1ecf, 0x1ece, 0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4,
- 0x1ed7, 0x1ed6, 0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf,
- 0x1ede, 0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6,
- 0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee, 0x1ef1,
- 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6, 0x1ef9, 0x1ef8,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 31, index 20 */
- 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f00,
- 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f18, 0x1f19,
- 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000, 0x1f10, 0x1f11, 0x1f12,
- 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b,
- 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24,
- 0x1f25, 0x1f26, 0x1f27, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d,
- 0x1f3e, 0x1f3f, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36,
- 0x1f37, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x0000, 0x0000,
- 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000,
- 0x10000e3, 0x1f59, 0x10000ee, 0x1f5b, 0x10000fd, 0x1f5d, 0x100010c,
- 0x1f5f, 0x0000, 0x1f51, 0x0000, 0x1f53, 0x0000, 0x1f55, 0x0000, 0x1f57,
- 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1f60,
- 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1fba, 0x1fbb,
- 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea,
- 0x1feb, 0x1ffa, 0x1ffb, 0x0000, 0x0000, 0x10001b7, 0x10001c4, 0x10001d1,
- 0x10001de, 0x10001eb, 0x10001f8, 0x1000205, 0x1000212, 0x100021f,
- 0x1000229, 0x1000233, 0x100023d, 0x1000247, 0x1000251, 0x100025b,
- 0x1000265, 0x100026f, 0x100027c, 0x1000289, 0x1000296, 0x10002a3,
- 0x10002b0, 0x10002bd, 0x10002ca, 0x10002d7, 0x10002e1, 0x10002eb,
- 0x10002f5, 0x10002ff, 0x1000309, 0x1000313, 0x100031d, 0x1000327,
- 0x1000334, 0x1000341, 0x100034e, 0x100035b, 0x1000368, 0x1000375,
- 0x1000382, 0x100038f, 0x1000399, 0x10003a3, 0x10003ad, 0x10003b7,
- 0x10003c1, 0x10003cb, 0x10003d5, 0x1fb8, 0x1fb9, 0x100041e, 0x10003df,
- 0x100042b, 0x0000, 0x100011b, 0x1000466, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71,
- 0x10003eb, 0x0000, 0x0399, 0x0000, 0x0000, 0x0000, 0x1000436, 0x10003f4,
- 0x1000443, 0x0000, 0x1000126, 0x1000475, 0x1f72, 0x1f73, 0x1f74, 0x1f75,
- 0x1000400, 0x0000, 0x0000, 0x0000, 0x1fd8, 0x1fd9, 0x1000131, 0x1000140,
- 0x0000, 0x0000, 0x100014f, 0x100015a, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x1fe8, 0x1fe9, 0x1000169, 0x1000178,
- 0x1000187, 0x1fec, 0x1000192, 0x100019d, 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b,
- 0x1fe5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100044e, 0x1000409,
- 0x100045b, 0x0000, 0x10001ac, 0x1000484, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d,
- 0x1000415, 0x0000, 0x0000, 0x0000
- },
- { /* page 33, index 21 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x03c9, 0x0000, 0x0000, 0x0000, 0x006b, 0x00e5, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 251, index 22 */
- 0x100000f, 0x1000016, 0x100001d, 0x1000024, 0x100002d, 0x1000036,
- 0x100003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100004f, 0x100005a, 0x1000065,
- 0x1000070, 0x100007b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000
- },
- { /* page 255, index 23 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
- 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43,
- 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
- 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55,
- 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
- 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39,
- 0xff3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 260, index 24 */
- 0x10428, 0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f,
- 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437,
- 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d, 0x1043e, 0x1043f,
- 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447,
- 0x10448, 0x10449, 0x1044a, 0x1044b, 0x1044c, 0x1044d, 0x1044e, 0x1044f,
- 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407,
- 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f,
- 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417,
- 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f,
- 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
- },
- { /* page 471, index 25 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008,
- 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
- 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006,
- 0x0007, 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
- 0x0006, 0x0007, 0x0008, 0x0009
- }
-};
-
-/* U+0000 through U+2FAFF */
-static const gint16 attr_table_part1[763] = {
- 0 /* page 0 */,
- 1 /* page 1 */,
- 2 /* page 2 */,
- 3 /* page 3 */,
- 4 /* page 4 */,
- 5 /* page 5 */,
- 6 /* page 6 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 7 /* page 9 */,
- 8 /* page 10 */,
- 9 /* page 11 */,
- 10 /* page 12 */,
- 11 /* page 13 */,
- 12 /* page 14 */,
- 13 /* page 15 */,
- 14 /* page 16 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 15 /* page 19 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 16 /* page 23 */,
- 17 /* page 24 */,
- 18 /* page 25 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 19 /* page 30 */,
- 20 /* page 31 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 21 /* page 33 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 22 /* page 251 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 23 /* page 255 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 24 /* page 260 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 25 /* page 471 */,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX
-};
-
-/* U+E0000 through U+10FFFF */
-static const gint16 attr_table_part2[768] = {
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX,
- 0x0000 + G_UNICODE_MAX_TABLE_INDEX
-};
-
-static const gunichar title_table[][3] = {
- { 0x01c5, 0x01c4, 0x01c6 },
- { 0x01c8, 0x01c7, 0x01c9 },
- { 0x01cb, 0x01ca, 0x01cc },
- { 0x01f2, 0x01f1, 0x01f3 },
- { 0x1f88, 0x0000, 0x1f80 },
- { 0x1f89, 0x0000, 0x1f81 },
- { 0x1f8a, 0x0000, 0x1f82 },
- { 0x1f8b, 0x0000, 0x1f83 },
- { 0x1f8c, 0x0000, 0x1f84 },
- { 0x1f8d, 0x0000, 0x1f85 },
- { 0x1f8e, 0x0000, 0x1f86 },
- { 0x1f8f, 0x0000, 0x1f87 },
- { 0x1f98, 0x0000, 0x1f90 },
- { 0x1f99, 0x0000, 0x1f91 },
- { 0x1f9a, 0x0000, 0x1f92 },
- { 0x1f9b, 0x0000, 0x1f93 },
- { 0x1f9c, 0x0000, 0x1f94 },
- { 0x1f9d, 0x0000, 0x1f95 },
- { 0x1f9e, 0x0000, 0x1f96 },
- { 0x1f9f, 0x0000, 0x1f97 },
- { 0x1fa8, 0x0000, 0x1fa0 },
- { 0x1fa9, 0x0000, 0x1fa1 },
- { 0x1faa, 0x0000, 0x1fa2 },
- { 0x1fab, 0x0000, 0x1fa3 },
- { 0x1fac, 0x0000, 0x1fa4 },
- { 0x1fad, 0x0000, 0x1fa5 },
- { 0x1fae, 0x0000, 0x1fa6 },
- { 0x1faf, 0x0000, 0x1fa7 },
- { 0x1fbc, 0x0000, 0x1fb3 },
- { 0x1fcc, 0x0000, 0x1fc3 },
- { 0x1ffc, 0x0000, 0x1ff3 }
-};
-
-
-/* Table of special cases for case conversion; each record contains
- * First, the best single character mapping to lowercase if Lu,
- * and to uppercase if Ll, followed by the output mapping for the two cases
- * other than the case of the codepoint, in the order [Ll],[Lu],[Lt],
- * encoded in UTF-8, separated and terminated by a null character.
- */
-static const gchar special_case_table[] = {
- "\x00\x53\x53\x00\x53\x73\0" /* offset 0 */
- "\x69\x69\xcc\x87\x00\xc4\xb0\0" /* offset 7 */
- "\x00\x46\x46\x00\x46\x66\0" /* offset 15 */
- "\x00\x46\x49\x00\x46\x69\0" /* offset 22 */
- "\x00\x46\x4c\x00\x46\x6c\0" /* offset 29 */
- "\x00\x46\x46\x49\x00\x46\x66\x69\0" /* offset 36 */
- "\x00\x46\x46\x4c\x00\x46\x66\x6c\0" /* offset 45 */
- "\x00\x53\x54\x00\x53\x74\0" /* offset 54 */
- "\x00\x53\x54\x00\x53\x74\0" /* offset 61 */
- "\x00\xd4\xb5\xd5\x92\x00\xd4\xb5\xd6\x82\0" /* offset 68 */
- "\x00\xd5\x84\xd5\x86\x00\xd5\x84\xd5\xb6\0" /* offset 79 */
- "\x00\xd5\x84\xd4\xb5\x00\xd5\x84\xd5\xa5\0" /* offset 90 */
- "\x00\xd5\x84\xd4\xbb\x00\xd5\x84\xd5\xab\0" /* offset 101 */
- "\x00\xd5\x8e\xd5\x86\x00\xd5\x8e\xd5\xb6\0" /* offset 112 */
- "\x00\xd5\x84\xd4\xbd\x00\xd5\x84\xd5\xad\0" /* offset 123 */
- "\x00\xca\xbc\x4e\x00\xca\xbc\x4e\0" /* offset 134 */
- "\x00\xce\x99\xcc\x88\xcc\x81\x00\xce\x99\xcc\x88\xcc\x81\0" /* offset 143 */
- "\x00\xce\xa5\xcc\x88\xcc\x81\x00\xce\xa5\xcc\x88\xcc\x81\0" /* offset 158 */
- "\x00\x4a\xcc\x8c\x00\x4a\xcc\x8c\0" /* offset 173 */
- "\x00\x48\xcc\xb1\x00\x48\xcc\xb1\0" /* offset 182 */
- "\x00\x54\xcc\x88\x00\x54\xcc\x88\0" /* offset 191 */
- "\x00\x57\xcc\x8a\x00\x57\xcc\x8a\0" /* offset 200 */
- "\x00\x59\xcc\x8a\x00\x59\xcc\x8a\0" /* offset 209 */
- "\x00\x41\xca\xbe\x00\x41\xca\xbe\0" /* offset 218 */
- "\x00\xce\xa5\xcc\x93\x00\xce\xa5\xcc\x93\0" /* offset 227 */
- "\x00\xce\xa5\xcc\x93\xcc\x80\x00\xce\xa5\xcc\x93\xcc\x80\0" /* offset 238 */
- "\x00\xce\xa5\xcc\x93\xcc\x81\x00\xce\xa5\xcc\x93\xcc\x81\0" /* offset 253 */
- "\x00\xce\xa5\xcc\x93\xcd\x82\x00\xce\xa5\xcc\x93\xcd\x82\0" /* offset 268 */
- "\x00\xce\x91\xcd\x82\x00\xce\x91\xcd\x82\0" /* offset 283 */
- "\x00\xce\x97\xcd\x82\x00\xce\x97\xcd\x82\0" /* offset 294 */
- "\x00\xce\x99\xcc\x88\xcc\x80\x00\xce\x99\xcc\x88\xcc\x80\0" /* offset 305 */
- "\x00\xce\x99\xcc\x88\xcc\x81\x00\xce\x99\xcc\x88\xcc\x81\0" /* offset 320 */
- "\x00\xce\x99\xcd\x82\x00\xce\x99\xcd\x82\0" /* offset 335 */
- "\x00\xce\x99\xcc\x88\xcd\x82\x00\xce\x99\xcc\x88\xcd\x82\0" /* offset 346 */
- "\x00\xce\xa5\xcc\x88\xcc\x80\x00\xce\xa5\xcc\x88\xcc\x80\0" /* offset 361 */
- "\x00\xce\xa5\xcc\x88\xcc\x81\x00\xce\xa5\xcc\x88\xcc\x81\0" /* offset 376 */
- "\x00\xce\xa1\xcc\x93\x00\xce\xa1\xcc\x93\0" /* offset 391 */
- "\x00\xce\xa5\xcd\x82\x00\xce\xa5\xcd\x82\0" /* offset 402 */
- "\x00\xce\xa5\xcc\x88\xcd\x82\x00\xce\xa5\xcc\x88\xcd\x82\0" /* offset 413 */
- "\x00\xce\xa9\xcd\x82\x00\xce\xa9\xcd\x82\0" /* offset 428 */
- "\xe1\xbe\x88\xe1\xbc\x88\xce\x99\x00\xe1\xbe\x88\0" /* offset 439 */
- "\xe1\xbe\x89\xe1\xbc\x89\xce\x99\x00\xe1\xbe\x89\0" /* offset 452 */
- "\xe1\xbe\x8a\xe1\xbc\x8a\xce\x99\x00\xe1\xbe\x8a\0" /* offset 465 */
- "\xe1\xbe\x8b\xe1\xbc\x8b\xce\x99\x00\xe1\xbe\x8b\0" /* offset 478 */
- "\xe1\xbe\x8c\xe1\xbc\x8c\xce\x99\x00\xe1\xbe\x8c\0" /* offset 491 */
- "\xe1\xbe\x8d\xe1\xbc\x8d\xce\x99\x00\xe1\xbe\x8d\0" /* offset 504 */
- "\xe1\xbe\x8e\xe1\xbc\x8e\xce\x99\x00\xe1\xbe\x8e\0" /* offset 517 */
- "\xe1\xbe\x8f\xe1\xbc\x8f\xce\x99\x00\xe1\xbe\x8f\0" /* offset 530 */
- "\xe1\xbe\x80\x00\xe1\xbc\x88\xce\x99\0" /* offset 543 */
- "\xe1\xbe\x81\x00\xe1\xbc\x89\xce\x99\0" /* offset 553 */
- "\xe1\xbe\x82\x00\xe1\xbc\x8a\xce\x99\0" /* offset 563 */
- "\xe1\xbe\x83\x00\xe1\xbc\x8b\xce\x99\0" /* offset 573 */
- "\xe1\xbe\x84\x00\xe1\xbc\x8c\xce\x99\0" /* offset 583 */
- "\xe1\xbe\x85\x00\xe1\xbc\x8d\xce\x99\0" /* offset 593 */
- "\xe1\xbe\x86\x00\xe1\xbc\x8e\xce\x99\0" /* offset 603 */
- "\xe1\xbe\x87\x00\xe1\xbc\x8f\xce\x99\0" /* offset 613 */
- "\xe1\xbe\x98\xe1\xbc\xa8\xce\x99\x00\xe1\xbe\x98\0" /* offset 623 */
- "\xe1\xbe\x99\xe1\xbc\xa9\xce\x99\x00\xe1\xbe\x99\0" /* offset 636 */
- "\xe1\xbe\x9a\xe1\xbc\xaa\xce\x99\x00\xe1\xbe\x9a\0" /* offset 649 */
- "\xe1\xbe\x9b\xe1\xbc\xab\xce\x99\x00\xe1\xbe\x9b\0" /* offset 662 */
- "\xe1\xbe\x9c\xe1\xbc\xac\xce\x99\x00\xe1\xbe\x9c\0" /* offset 675 */
- "\xe1\xbe\x9d\xe1\xbc\xad\xce\x99\x00\xe1\xbe\x9d\0" /* offset 688 */
- "\xe1\xbe\x9e\xe1\xbc\xae\xce\x99\x00\xe1\xbe\x9e\0" /* offset 701 */
- "\xe1\xbe\x9f\xe1\xbc\xaf\xce\x99\x00\xe1\xbe\x9f\0" /* offset 714 */
- "\xe1\xbe\x90\x00\xe1\xbc\xa8\xce\x99\0" /* offset 727 */
- "\xe1\xbe\x91\x00\xe1\xbc\xa9\xce\x99\0" /* offset 737 */
- "\xe1\xbe\x92\x00\xe1\xbc\xaa\xce\x99\0" /* offset 747 */
- "\xe1\xbe\x93\x00\xe1\xbc\xab\xce\x99\0" /* offset 757 */
- "\xe1\xbe\x94\x00\xe1\xbc\xac\xce\x99\0" /* offset 767 */
- "\xe1\xbe\x95\x00\xe1\xbc\xad\xce\x99\0" /* offset 777 */
- "\xe1\xbe\x96\x00\xe1\xbc\xae\xce\x99\0" /* offset 787 */
- "\xe1\xbe\x97\x00\xe1\xbc\xaf\xce\x99\0" /* offset 797 */
- "\xe1\xbe\xa8\xe1\xbd\xa8\xce\x99\x00\xe1\xbe\xa8\0" /* offset 807 */
- "\xe1\xbe\xa9\xe1\xbd\xa9\xce\x99\x00\xe1\xbe\xa9\0" /* offset 820 */
- "\xe1\xbe\xaa\xe1\xbd\xaa\xce\x99\x00\xe1\xbe\xaa\0" /* offset 833 */
- "\xe1\xbe\xab\xe1\xbd\xab\xce\x99\x00\xe1\xbe\xab\0" /* offset 846 */
- "\xe1\xbe\xac\xe1\xbd\xac\xce\x99\x00\xe1\xbe\xac\0" /* offset 859 */
- "\xe1\xbe\xad\xe1\xbd\xad\xce\x99\x00\xe1\xbe\xad\0" /* offset 872 */
- "\xe1\xbe\xae\xe1\xbd\xae\xce\x99\x00\xe1\xbe\xae\0" /* offset 885 */
- "\xe1\xbe\xaf\xe1\xbd\xaf\xce\x99\x00\xe1\xbe\xaf\0" /* offset 898 */
- "\xe1\xbe\xa0\x00\xe1\xbd\xa8\xce\x99\0" /* offset 911 */
- "\xe1\xbe\xa1\x00\xe1\xbd\xa9\xce\x99\0" /* offset 921 */
- "\xe1\xbe\xa2\x00\xe1\xbd\xaa\xce\x99\0" /* offset 931 */
- "\xe1\xbe\xa3\x00\xe1\xbd\xab\xce\x99\0" /* offset 941 */
- "\xe1\xbe\xa4\x00\xe1\xbd\xac\xce\x99\0" /* offset 951 */
- "\xe1\xbe\xa5\x00\xe1\xbd\xad\xce\x99\0" /* offset 961 */
- "\xe1\xbe\xa6\x00\xe1\xbd\xae\xce\x99\0" /* offset 971 */
- "\xe1\xbe\xa7\x00\xe1\xbd\xaf\xce\x99\0" /* offset 981 */
- "\xe1\xbe\xbc\xce\x91\xce\x99\x00\xe1\xbe\xbc\0" /* offset 991 */
- "\xe1\xbe\xb3\x00\xce\x91\xce\x99\0" /* offset 1003 */
- "\xe1\xbf\x8c\xce\x97\xce\x99\x00\xe1\xbf\x8c\0" /* offset 1012 */
- "\xe1\xbf\x83\x00\xce\x97\xce\x99\0" /* offset 1024 */
- "\xe1\xbf\xbc\xce\xa9\xce\x99\x00\xe1\xbf\xbc\0" /* offset 1033 */
- "\xe1\xbf\xb3\x00\xce\xa9\xce\x99\0" /* offset 1045 */
- "\x00\xe1\xbe\xba\xce\x99\x00\xe1\xbe\xba\xcd\x85\0" /* offset 1054 */
- "\x00\xce\x86\xce\x99\x00\xce\x86\xcd\x85\0" /* offset 1067 */
- "\x00\xe1\xbf\x8a\xce\x99\x00\xe1\xbf\x8a\xcd\x85\0" /* offset 1078 */
- "\x00\xce\x89\xce\x99\x00\xce\x89\xcd\x85\0" /* offset 1091 */
- "\x00\xe1\xbf\xba\xce\x99\x00\xe1\xbf\xba\xcd\x85\0" /* offset 1102 */
- "\x00\xce\x8f\xce\x99\x00\xce\x8f\xcd\x85\0" /* offset 1115 */
- "\x00\xce\x91\xcd\x82\xce\x99\x00\xce\x91\xcd\x82\xcd\x85\0" /* offset 1126 */
- "\x00\xce\x97\xcd\x82\xce\x99\x00\xce\x97\xcd\x82\xcd\x85\0" /* offset 1141 */
- "\x00\xce\xa9\xcd\x82\xce\x99\x00\xce\xa9\xcd\x82\xcd\x85\0" /* offset 1156 */
-};
-
-
-/* Table of casefolding cases that can't be derived by lowercasing
- */
-static const struct {
- guint16 ch;
- gchar data[7];
-} casefold_table[] = {
- { 0x00b5, "\xce\xbc" },
- { 0x00df, "\x73\x73" },
- { 0x0130, "\x69\xcc\x87" },
- { 0x0149, "\xca\xbc\x6e" },
- { 0x017f, "\x73" },
- { 0x01f0, "\x6a\xcc\x8c" },
- { 0x0345, "\xce\xb9" },
- { 0x0390, "\xce\xb9\xcc\x88\xcc\x81" },
- { 0x03b0, "\xcf\x85\xcc\x88\xcc\x81" },
- { 0x03c2, "\xcf\x83" },
- { 0x03d0, "\xce\xb2" },
- { 0x03d1, "\xce\xb8" },
- { 0x03d5, "\xcf\x86" },
- { 0x03d6, "\xcf\x80" },
- { 0x03f0, "\xce\xba" },
- { 0x03f1, "\xcf\x81" },
- { 0x03f5, "\xce\xb5" },
- { 0x0587, "\xd5\xa5\xd6\x82" },
- { 0x1e96, "\x68\xcc\xb1" },
- { 0x1e97, "\x74\xcc\x88" },
- { 0x1e98, "\x77\xcc\x8a" },
- { 0x1e99, "\x79\xcc\x8a" },
- { 0x1e9a, "\x61\xca\xbe" },
- { 0x1e9b, "\xe1\xb9\xa1" },
- { 0x1f50, "\xcf\x85\xcc\x93" },
- { 0x1f52, "\xcf\x85\xcc\x93\xcc\x80" },
- { 0x1f54, "\xcf\x85\xcc\x93\xcc\x81" },
- { 0x1f56, "\xcf\x85\xcc\x93\xcd\x82" },
- { 0x1f80, "\xe1\xbc\x80\xce\xb9" },
- { 0x1f81, "\xe1\xbc\x81\xce\xb9" },
- { 0x1f82, "\xe1\xbc\x82\xce\xb9" },
- { 0x1f83, "\xe1\xbc\x83\xce\xb9" },
- { 0x1f84, "\xe1\xbc\x84\xce\xb9" },
- { 0x1f85, "\xe1\xbc\x85\xce\xb9" },
- { 0x1f86, "\xe1\xbc\x86\xce\xb9" },
- { 0x1f87, "\xe1\xbc\x87\xce\xb9" },
- { 0x1f88, "\xe1\xbc\x80\xce\xb9" },
- { 0x1f89, "\xe1\xbc\x81\xce\xb9" },
- { 0x1f8a, "\xe1\xbc\x82\xce\xb9" },
- { 0x1f8b, "\xe1\xbc\x83\xce\xb9" },
- { 0x1f8c, "\xe1\xbc\x84\xce\xb9" },
- { 0x1f8d, "\xe1\xbc\x85\xce\xb9" },
- { 0x1f8e, "\xe1\xbc\x86\xce\xb9" },
- { 0x1f8f, "\xe1\xbc\x87\xce\xb9" },
- { 0x1f90, "\xe1\xbc\xa0\xce\xb9" },
- { 0x1f91, "\xe1\xbc\xa1\xce\xb9" },
- { 0x1f92, "\xe1\xbc\xa2\xce\xb9" },
- { 0x1f93, "\xe1\xbc\xa3\xce\xb9" },
- { 0x1f94, "\xe1\xbc\xa4\xce\xb9" },
- { 0x1f95, "\xe1\xbc\xa5\xce\xb9" },
- { 0x1f96, "\xe1\xbc\xa6\xce\xb9" },
- { 0x1f97, "\xe1\xbc\xa7\xce\xb9" },
- { 0x1f98, "\xe1\xbc\xa0\xce\xb9" },
- { 0x1f99, "\xe1\xbc\xa1\xce\xb9" },
- { 0x1f9a, "\xe1\xbc\xa2\xce\xb9" },
- { 0x1f9b, "\xe1\xbc\xa3\xce\xb9" },
- { 0x1f9c, "\xe1\xbc\xa4\xce\xb9" },
- { 0x1f9d, "\xe1\xbc\xa5\xce\xb9" },
- { 0x1f9e, "\xe1\xbc\xa6\xce\xb9" },
- { 0x1f9f, "\xe1\xbc\xa7\xce\xb9" },
- { 0x1fa0, "\xe1\xbd\xa0\xce\xb9" },
- { 0x1fa1, "\xe1\xbd\xa1\xce\xb9" },
- { 0x1fa2, "\xe1\xbd\xa2\xce\xb9" },
- { 0x1fa3, "\xe1\xbd\xa3\xce\xb9" },
- { 0x1fa4, "\xe1\xbd\xa4\xce\xb9" },
- { 0x1fa5, "\xe1\xbd\xa5\xce\xb9" },
- { 0x1fa6, "\xe1\xbd\xa6\xce\xb9" },
- { 0x1fa7, "\xe1\xbd\xa7\xce\xb9" },
- { 0x1fa8, "\xe1\xbd\xa0\xce\xb9" },
- { 0x1fa9, "\xe1\xbd\xa1\xce\xb9" },
- { 0x1faa, "\xe1\xbd\xa2\xce\xb9" },
- { 0x1fab, "\xe1\xbd\xa3\xce\xb9" },
- { 0x1fac, "\xe1\xbd\xa4\xce\xb9" },
- { 0x1fad, "\xe1\xbd\xa5\xce\xb9" },
- { 0x1fae, "\xe1\xbd\xa6\xce\xb9" },
- { 0x1faf, "\xe1\xbd\xa7\xce\xb9" },
- { 0x1fb2, "\xe1\xbd\xb0\xce\xb9" },
- { 0x1fb3, "\xce\xb1\xce\xb9" },
- { 0x1fb4, "\xce\xac\xce\xb9" },
- { 0x1fb6, "\xce\xb1\xcd\x82" },
- { 0x1fb7, "\xce\xb1\xcd\x82\xce\xb9" },
- { 0x1fbc, "\xce\xb1\xce\xb9" },
- { 0x1fbe, "\xce\xb9" },
- { 0x1fc2, "\xe1\xbd\xb4\xce\xb9" },
- { 0x1fc3, "\xce\xb7\xce\xb9" },
- { 0x1fc4, "\xce\xae\xce\xb9" },
- { 0x1fc6, "\xce\xb7\xcd\x82" },
- { 0x1fc7, "\xce\xb7\xcd\x82\xce\xb9" },
- { 0x1fcc, "\xce\xb7\xce\xb9" },
- { 0x1fd2, "\xce\xb9\xcc\x88\xcc\x80" },
- { 0x1fd3, "\xce\xb9\xcc\x88\xcc\x81" },
- { 0x1fd6, "\xce\xb9\xcd\x82" },
- { 0x1fd7, "\xce\xb9\xcc\x88\xcd\x82" },
- { 0x1fe2, "\xcf\x85\xcc\x88\xcc\x80" },
- { 0x1fe3, "\xcf\x85\xcc\x88\xcc\x81" },
- { 0x1fe4, "\xcf\x81\xcc\x93" },
- { 0x1fe6, "\xcf\x85\xcd\x82" },
- { 0x1fe7, "\xcf\x85\xcc\x88\xcd\x82" },
- { 0x1ff2, "\xe1\xbd\xbc\xce\xb9" },
- { 0x1ff3, "\xcf\x89\xce\xb9" },
- { 0x1ff4, "\xcf\x8e\xce\xb9" },
- { 0x1ff6, "\xcf\x89\xcd\x82" },
- { 0x1ff7, "\xcf\x89\xcd\x82\xce\xb9" },
- { 0x1ffc, "\xcf\x89\xce\xb9" },
- { 0x2160, "\xe2\x85\xb0" },
- { 0x2161, "\xe2\x85\xb1" },
- { 0x2162, "\xe2\x85\xb2" },
- { 0x2163, "\xe2\x85\xb3" },
- { 0x2164, "\xe2\x85\xb4" },
- { 0x2165, "\xe2\x85\xb5" },
- { 0x2166, "\xe2\x85\xb6" },
- { 0x2167, "\xe2\x85\xb7" },
- { 0x2168, "\xe2\x85\xb8" },
- { 0x2169, "\xe2\x85\xb9" },
- { 0x216a, "\xe2\x85\xba" },
- { 0x216b, "\xe2\x85\xbb" },
- { 0x216c, "\xe2\x85\xbc" },
- { 0x216d, "\xe2\x85\xbd" },
- { 0x216e, "\xe2\x85\xbe" },
- { 0x216f, "\xe2\x85\xbf" },
- { 0x24b6, "\xe2\x93\x90" },
- { 0x24b7, "\xe2\x93\x91" },
- { 0x24b8, "\xe2\x93\x92" },
- { 0x24b9, "\xe2\x93\x93" },
- { 0x24ba, "\xe2\x93\x94" },
- { 0x24bb, "\xe2\x93\x95" },
- { 0x24bc, "\xe2\x93\x96" },
- { 0x24bd, "\xe2\x93\x97" },
- { 0x24be, "\xe2\x93\x98" },
- { 0x24bf, "\xe2\x93\x99" },
- { 0x24c0, "\xe2\x93\x9a" },
- { 0x24c1, "\xe2\x93\x9b" },
- { 0x24c2, "\xe2\x93\x9c" },
- { 0x24c3, "\xe2\x93\x9d" },
- { 0x24c4, "\xe2\x93\x9e" },
- { 0x24c5, "\xe2\x93\x9f" },
- { 0x24c6, "\xe2\x93\xa0" },
- { 0x24c7, "\xe2\x93\xa1" },
- { 0x24c8, "\xe2\x93\xa2" },
- { 0x24c9, "\xe2\x93\xa3" },
- { 0x24ca, "\xe2\x93\xa4" },
- { 0x24cb, "\xe2\x93\xa5" },
- { 0x24cc, "\xe2\x93\xa6" },
- { 0x24cd, "\xe2\x93\xa7" },
- { 0x24ce, "\xe2\x93\xa8" },
- { 0x24cf, "\xe2\x93\xa9" },
- { 0xfb00, "\x66\x66" },
- { 0xfb01, "\x66\x69" },
- { 0xfb02, "\x66\x6c" },
- { 0xfb03, "\x66\x66\x69" },
- { 0xfb04, "\x66\x66\x6c" },
- { 0xfb05, "\x73\x74" },
- { 0xfb06, "\x73\x74" },
- { 0xfb13, "\xd5\xb4\xd5\xb6" },
- { 0xfb14, "\xd5\xb4\xd5\xa5" },
- { 0xfb15, "\xd5\xb4\xd5\xab" },
- { 0xfb16, "\xd5\xbe\xd5\xb6" },
- { 0xfb17, "\xd5\xb4\xd5\xad" },
-};
-
-static const struct {
- gunichar ch;
- gunichar mirrored_ch;
-} bidi_mirroring_table[] =
-{
- { 0x0028, 0x0029 },
- { 0x0029, 0x0028 },
- { 0x003c, 0x003e },
- { 0x003e, 0x003c },
- { 0x005b, 0x005d },
- { 0x005d, 0x005b },
- { 0x007b, 0x007d },
- { 0x007d, 0x007b },
- { 0x00ab, 0x00bb },
- { 0x00bb, 0x00ab },
- { 0x2039, 0x203a },
- { 0x203a, 0x2039 },
- { 0x2045, 0x2046 },
- { 0x2046, 0x2045 },
- { 0x207d, 0x207e },
- { 0x207e, 0x207d },
- { 0x208d, 0x208e },
- { 0x208e, 0x208d },
- { 0x2208, 0x220b },
- { 0x2209, 0x220c },
- { 0x220a, 0x220d },
- { 0x220b, 0x2208 },
- { 0x220c, 0x2209 },
- { 0x220d, 0x220a },
- { 0x2215, 0x29f5 },
- { 0x223c, 0x223d },
- { 0x223d, 0x223c },
- { 0x2243, 0x22cd },
- { 0x2252, 0x2253 },
- { 0x2253, 0x2252 },
- { 0x2254, 0x2255 },
- { 0x2255, 0x2254 },
- { 0x2264, 0x2265 },
- { 0x2265, 0x2264 },
- { 0x2266, 0x2267 },
- { 0x2267, 0x2266 },
- { 0x2268, 0x2269 },
- { 0x2269, 0x2268 },
- { 0x226a, 0x226b },
- { 0x226b, 0x226a },
- { 0x226e, 0x226f },
- { 0x226f, 0x226e },
- { 0x2270, 0x2271 },
- { 0x2271, 0x2270 },
- { 0x2272, 0x2273 },
- { 0x2273, 0x2272 },
- { 0x2274, 0x2275 },
- { 0x2275, 0x2274 },
- { 0x2276, 0x2277 },
- { 0x2277, 0x2276 },
- { 0x2278, 0x2279 },
- { 0x2279, 0x2278 },
- { 0x227a, 0x227b },
- { 0x227b, 0x227a },
- { 0x227c, 0x227d },
- { 0x227d, 0x227c },
- { 0x227e, 0x227f },
- { 0x227f, 0x227e },
- { 0x2280, 0x2281 },
- { 0x2281, 0x2280 },
- { 0x2282, 0x2283 },
- { 0x2283, 0x2282 },
- { 0x2284, 0x2285 },
- { 0x2285, 0x2284 },
- { 0x2286, 0x2287 },
- { 0x2287, 0x2286 },
- { 0x2288, 0x2289 },
- { 0x2289, 0x2288 },
- { 0x228a, 0x228b },
- { 0x228b, 0x228a },
- { 0x228f, 0x2290 },
- { 0x2290, 0x228f },
- { 0x2291, 0x2292 },
- { 0x2292, 0x2291 },
- { 0x2298, 0x29b8 },
- { 0x22a2, 0x22a3 },
- { 0x22a3, 0x22a2 },
- { 0x22a6, 0x2ade },
- { 0x22a8, 0x2ae4 },
- { 0x22a9, 0x2ae3 },
- { 0x22ab, 0x2ae5 },
- { 0x22b0, 0x22b1 },
- { 0x22b1, 0x22b0 },
- { 0x22b2, 0x22b3 },
- { 0x22b3, 0x22b2 },
- { 0x22b4, 0x22b5 },
- { 0x22b5, 0x22b4 },
- { 0x22b6, 0x22b7 },
- { 0x22b7, 0x22b6 },
- { 0x22c9, 0x22ca },
- { 0x22ca, 0x22c9 },
- { 0x22cb, 0x22cc },
- { 0x22cc, 0x22cb },
- { 0x22cd, 0x2243 },
- { 0x22d0, 0x22d1 },
- { 0x22d1, 0x22d0 },
- { 0x22d6, 0x22d7 },
- { 0x22d7, 0x22d6 },
- { 0x22d8, 0x22d9 },
- { 0x22d9, 0x22d8 },
- { 0x22da, 0x22db },
- { 0x22db, 0x22da },
- { 0x22dc, 0x22dd },
- { 0x22dd, 0x22dc },
- { 0x22de, 0x22df },
- { 0x22df, 0x22de },
- { 0x22e0, 0x22e1 },
- { 0x22e1, 0x22e0 },
- { 0x22e2, 0x22e3 },
- { 0x22e3, 0x22e2 },
- { 0x22e4, 0x22e5 },
- { 0x22e5, 0x22e4 },
- { 0x22e6, 0x22e7 },
- { 0x22e7, 0x22e6 },
- { 0x22e8, 0x22e9 },
- { 0x22e9, 0x22e8 },
- { 0x22ea, 0x22eb },
- { 0x22eb, 0x22ea },
- { 0x22ec, 0x22ed },
- { 0x22ed, 0x22ec },
- { 0x22f0, 0x22f1 },
- { 0x22f1, 0x22f0 },
- { 0x22f2, 0x22fa },
- { 0x22f3, 0x22fb },
- { 0x22f4, 0x22fc },
- { 0x22f6, 0x22fd },
- { 0x22f7, 0x22fe },
- { 0x22fa, 0x22f2 },
- { 0x22fb, 0x22f3 },
- { 0x22fc, 0x22f4 },
- { 0x22fd, 0x22f6 },
- { 0x22fe, 0x22f7 },
- { 0x2308, 0x2309 },
- { 0x2309, 0x2308 },
- { 0x230a, 0x230b },
- { 0x230b, 0x230a },
- { 0x2329, 0x232a },
- { 0x232a, 0x2329 },
- { 0x2768, 0x2769 },
- { 0x2769, 0x2768 },
- { 0x276a, 0x276b },
- { 0x276b, 0x276a },
- { 0x276c, 0x276d },
- { 0x276d, 0x276c },
- { 0x276e, 0x276f },
- { 0x276f, 0x276e },
- { 0x2770, 0x2771 },
- { 0x2771, 0x2770 },
- { 0x2772, 0x2773 },
- { 0x2773, 0x2772 },
- { 0x2774, 0x2775 },
- { 0x2775, 0x2774 },
- { 0x27d5, 0x27d6 },
- { 0x27d6, 0x27d5 },
- { 0x27dd, 0x27de },
- { 0x27de, 0x27dd },
- { 0x27e2, 0x27e3 },
- { 0x27e3, 0x27e2 },
- { 0x27e4, 0x27e5 },
- { 0x27e5, 0x27e4 },
- { 0x27e6, 0x27e7 },
- { 0x27e7, 0x27e6 },
- { 0x27e8, 0x27e9 },
- { 0x27e9, 0x27e8 },
- { 0x27ea, 0x27eb },
- { 0x27eb, 0x27ea },
- { 0x2983, 0x2984 },
- { 0x2984, 0x2983 },
- { 0x2985, 0x2986 },
- { 0x2986, 0x2985 },
- { 0x2987, 0x2988 },
- { 0x2988, 0x2987 },
- { 0x2989, 0x298a },
- { 0x298a, 0x2989 },
- { 0x298b, 0x298c },
- { 0x298c, 0x298b },
- { 0x298d, 0x2990 },
- { 0x298e, 0x298f },
- { 0x298f, 0x298e },
- { 0x2990, 0x298d },
- { 0x2991, 0x2992 },
- { 0x2992, 0x2991 },
- { 0x2993, 0x2994 },
- { 0x2994, 0x2993 },
- { 0x2995, 0x2996 },
- { 0x2996, 0x2995 },
- { 0x2997, 0x2998 },
- { 0x2998, 0x2997 },
- { 0x29b8, 0x2298 },
- { 0x29c0, 0x29c1 },
- { 0x29c1, 0x29c0 },
- { 0x29c4, 0x29c5 },
- { 0x29c5, 0x29c4 },
- { 0x29cf, 0x29d0 },
- { 0x29d0, 0x29cf },
- { 0x29d1, 0x29d2 },
- { 0x29d2, 0x29d1 },
- { 0x29d4, 0x29d5 },
- { 0x29d5, 0x29d4 },
- { 0x29d8, 0x29d9 },
- { 0x29d9, 0x29d8 },
- { 0x29da, 0x29db },
- { 0x29db, 0x29da },
- { 0x29f5, 0x2215 },
- { 0x29f8, 0x29f9 },
- { 0x29f9, 0x29f8 },
- { 0x29fc, 0x29fd },
- { 0x29fd, 0x29fc },
- { 0x2a2b, 0x2a2c },
- { 0x2a2c, 0x2a2b },
- { 0x2a2d, 0x2a2c },
- { 0x2a2e, 0x2a2d },
- { 0x2a34, 0x2a35 },
- { 0x2a35, 0x2a34 },
- { 0x2a3c, 0x2a3d },
- { 0x2a3d, 0x2a3c },
- { 0x2a64, 0x2a65 },
- { 0x2a65, 0x2a64 },
- { 0x2a79, 0x2a7a },
- { 0x2a7a, 0x2a79 },
- { 0x2a7d, 0x2a7e },
- { 0x2a7e, 0x2a7d },
- { 0x2a7f, 0x2a80 },
- { 0x2a80, 0x2a7f },
- { 0x2a81, 0x2a82 },
- { 0x2a82, 0x2a81 },
- { 0x2a83, 0x2a84 },
- { 0x2a84, 0x2a83 },
- { 0x2a8b, 0x2a8c },
- { 0x2a8c, 0x2a8b },
- { 0x2a91, 0x2a92 },
- { 0x2a92, 0x2a91 },
- { 0x2a93, 0x2a94 },
- { 0x2a94, 0x2a93 },
- { 0x2a95, 0x2a96 },
- { 0x2a96, 0x2a95 },
- { 0x2a97, 0x2a98 },
- { 0x2a98, 0x2a97 },
- { 0x2a99, 0x2a9a },
- { 0x2a9a, 0x2a99 },
- { 0x2a9b, 0x2a9c },
- { 0x2a9c, 0x2a9b },
- { 0x2aa1, 0x2aa2 },
- { 0x2aa2, 0x2aa1 },
- { 0x2aa6, 0x2aa7 },
- { 0x2aa7, 0x2aa6 },
- { 0x2aa8, 0x2aa9 },
- { 0x2aa9, 0x2aa8 },
- { 0x2aaa, 0x2aab },
- { 0x2aab, 0x2aaa },
- { 0x2aac, 0x2aad },
- { 0x2aad, 0x2aac },
- { 0x2aaf, 0x2ab0 },
- { 0x2ab0, 0x2aaf },
- { 0x2ab3, 0x2ab4 },
- { 0x2ab4, 0x2ab3 },
- { 0x2abb, 0x2abc },
- { 0x2abc, 0x2abb },
- { 0x2abd, 0x2abe },
- { 0x2abe, 0x2abd },
- { 0x2abf, 0x2ac0 },
- { 0x2ac0, 0x2abf },
- { 0x2ac1, 0x2ac2 },
- { 0x2ac2, 0x2ac1 },
- { 0x2ac3, 0x2ac4 },
- { 0x2ac4, 0x2ac3 },
- { 0x2ac5, 0x2ac6 },
- { 0x2ac6, 0x2ac5 },
- { 0x2acd, 0x2ace },
- { 0x2ace, 0x2acd },
- { 0x2acf, 0x2ad0 },
- { 0x2ad0, 0x2acf },
- { 0x2ad1, 0x2ad2 },
- { 0x2ad2, 0x2ad1 },
- { 0x2ad3, 0x2ad4 },
- { 0x2ad4, 0x2ad3 },
- { 0x2ad5, 0x2ad6 },
- { 0x2ad6, 0x2ad5 },
- { 0x2ade, 0x22a6 },
- { 0x2ae3, 0x22a9 },
- { 0x2ae4, 0x22a8 },
- { 0x2ae5, 0x22ab },
- { 0x2aec, 0x2aed },
- { 0x2aed, 0x2aec },
- { 0x2af7, 0x2af8 },
- { 0x2af8, 0x2af7 },
- { 0x2af9, 0x2afa },
- { 0x2afa, 0x2af9 },
- { 0x3008, 0x3009 },
- { 0x3009, 0x3008 },
- { 0x300a, 0x300b },
- { 0x300b, 0x300a },
- { 0x300c, 0x300d },
- { 0x300d, 0x300c },
- { 0x300e, 0x300f },
- { 0x300f, 0x300e },
- { 0x3010, 0x3011 },
- { 0x3011, 0x3010 },
- { 0x3014, 0x3015 },
- { 0x3015, 0x3014 },
- { 0x3016, 0x3017 },
- { 0x3017, 0x3016 },
- { 0x3018, 0x3019 },
- { 0x3019, 0x3018 },
- { 0x301a, 0x301b },
- { 0x301b, 0x301a },
- { 0xff08, 0xff09 },
- { 0xff09, 0xff08 },
- { 0xff1c, 0xff1e },
- { 0xff1e, 0xff1c },
- { 0xff3b, 0xff3d },
- { 0xff3d, 0xff3b },
- { 0xff5b, 0xff5d },
- { 0xff5d, 0xff5b },
- { 0xff5f, 0xff60 },
- { 0xff60, 0xff5f },
- { 0xff62, 0xff63 },
- { 0xff63, 0xff62 }
-};
-
-#endif /* CHARTABLES_H */
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_lltot.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_lltot.cpp
deleted file mode 100644
index 05a63b887..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_lltot.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-TCHAR* lucene_i64tot(
- int64_t value, /* [I] Value to be converted */
- TCHAR* str, /* [O] Destination for the converted value */
- int radix) /* [I] Number base for conversion */
-{
- uint64_t val;
- int negative;
- TCHAR buffer[65];
- TCHAR* pos;
- int digit;
-
- if (value < 0 && radix == 10) {
- negative = 1;
- val = -value;
- } else {
- negative = 0;
- val = value;
- } /* if */
-
- pos = &buffer[64];
- *pos = '\0';
-
- do {
- digit = val % radix;
- val = val / radix;
- if (digit < 10) {
- *--pos = '0' + digit;
- } else {
- *--pos = 'a' + digit - 10;
- } /* if */
- } while (val != 0L);
-
- if (negative) {
- *--pos = '-';
- } /* if */
-
- _tcsncpy(str,pos,&buffer[64] - pos + 1); //needed for unicode to work
- return str;
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tchar.h b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tchar.h
deleted file mode 100644
index ba8aef5c6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tchar.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _CL_HAVE_TCHAR_H
-#if defined(_UCS2)
- #define TCHAR wchar_t
-
- //note: descriptions with * in front have replacement functions
-
- //formatting functions
- #define _sntprintf swprintf //* make a formatted a string
- #define _tprintf wprintf //* print a formatted string
-
- //this one has no replacement functions yet, but it is only used in the tests
- #define _vsntprintf vsnwprintf //* print a formatted string using variable arguments
-
- //we are using the internal functions of the compiler here
- //if LUCENE_USE_INTERNAL_CHAR_FUNCTIONS is defined, thesse
- //will be replaced by internal functions
- #define _istalnum iswalnum //* alpha/numeric char check
- #define _istalpha iswalpha //* alpha char check
- #define _istspace iswspace //* space char check
- #define _istdigit iswdigit //* digit char check
- #define _totlower towlower //* convert char to lower case
- #define _totupper towupper //* convert char to lower case
- #define _tcslwr wcslwr //* convert string to lower case
-
- //these are the string handling functions
- //we may need to create wide-character/multi-byte replacements for these
- #define _tcscpy wcscpy //copy a string to another string
- #define _tcsncpy wcsncpy //copy a specified amount of one string to another string.
- #define _tcscat wcscat //copy a string onto the end of the other string
- #define _tcschr wcschr //find location of one character
- #define _tcsstr wcsstr //find location of a string
- #define _tcslen wcslen //get length of a string
- #define _tcscmp wcscmp //case sensitive compare two strings
- #define _tcsncmp wcsncmp //case sensitive compare two strings
- #define _tcscspn wcscspn //location of any of a set of character in a string
-
- #ifdef _CL_HAVE_WCSICMP
- #define _tcsicmp wcsicmp //* case insensitive compare two string
- #else
- #define _tcsicmp wcscasecmp //* case insensitive compare two string
- #endif
-
- //conversion functions
- #define _tcstod wcstod //convert a string to a double
- #ifdef _PA_RISC
- #define _tcstoi64 __wcstoll //* convers a string to an 64bit bit integer
- #else
- #define _tcstoi64 wcstoll //* convers a string to an 64bit bit integer
- #endif
- #define _i64tot lltow //* converts a 64 bit integer to a string (with base)
-
-#else //if defined(_ASCII)
- #define TCHAR char
-
- //formatting functions
- #define _sntprintf snprintf
- #define _tprintf printf
- #define _vsntprintf vsnprintf
-
- //we are using the internal functions of the compiler here
- //if LUCENE_USE_INTERNAL_CHAR_FUNCTIONS is defined, thesse
- //will be replaced by internal functions
- #define _istalnum isalnum
- #define _istalpha isalpha
- #define _istspace isspace
- #define _istdigit isdigit
- #define _totlower tolower
- #define _totupper toupper
- #define _tcslwr strlwr
-
- //these are the string handling functions
- #define _tcscpy strcpy
- #define _tcsncpy strncpy
- #define _tcscat strcat
- #define _tcschr strchr
- #define _tcsstr strstr
- #define _tcslen strlen
- #define _tcscmp strcmp
- #define _tcsncmp strncmp
- #define _tcsicmp strcasecmp
- #define _tcscspn strcspn
-
- //converstion methods
- #define _tcstod strtod
- #define _tcstoi64 strtoll
- #define _i64tot lltoa
-#endif
-#else //HAVE_TCHAR_H
- #include <tchar.h>
-
-#ifdef UNDER_CE
-#include <QString>
-#define _i64tot i64tot
-inline TCHAR* i64tot(__int64 value, TCHAR* str, int radix)
-{
- QT_USE_NAMESPACE
- _tcscpy(str, (TCHAR *) QString::number(value, radix).utf16());
- return str;
-}
-
-#define _tcstoi64 tcstoi64
-inline __int64 tcstoi64(const TCHAR *nptr, TCHAR **endptr, int base)
-{
- QT_USE_NAMESPACE
- bool ok;
- return QString::fromUtf16((ushort*) nptr).toInt(&ok, base);
-}
-
-#endif
-
- //some tchar headers miss these...
- #ifndef _tcstoi64
- #if defined(_UCS2)
- #define _tcstoi64 wcstoll //* convers a string to an 64bit bit integer
- #else
- #define _tcstoi64 strtoll
- #endif
- #endif
-
-#endif //HAVE_TCHAR_H
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcscasecmp.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcscasecmp.cpp
deleted file mode 100644
index 1bee7b7a6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcscasecmp.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-#include "CLucene/StdHeader.h"
-
-int lucene_tcscasecmp(const TCHAR * sa, const TCHAR * sb){
- TCHAR ca,cb;
- if (sa == sb)
- return 0;
-
- do{
- ca = _totlower( (*(sa++)) );
- cb = _totlower( (*(sb++)) );
- } while ( ca != L'\0' && (ca == cb) );
-
- return (int)(ca - cb);
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcslwr.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcslwr.cpp
deleted file mode 100644
index 2ae6abca4..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcslwr.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-#include "CLucene/StdHeader.h"
-
-TCHAR* lucene_tcslwr( TCHAR* str )
-{
- TCHAR* ret = str;
- for ( ; *str; str++) *str = _totlower(*str);
- return ret;
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstod.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstod.cpp
deleted file mode 100644
index 1fd4ca770..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstod.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-#include "CLucene/StdHeader.h"
-
-#ifndef _ASCII
-double lucene_tcstod(const TCHAR *value, TCHAR **end){
- int32_t len = _tcslen(value)+1;
- char* avalue=_CL_NEWARRAY(char,len);
- char* aend=NULL;
- STRCPY_TtoA(avalue,value,len);
-
- double ret = strtod(avalue,&aend);
- *end=(TCHAR*)value+(aend-avalue);
- _CLDELETE_CaARRAY(avalue);
-
- return ret;
-}
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstoll.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstoll.cpp
deleted file mode 100644
index 246d66c80..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tcstoll.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-#include "CLucene/StdHeader.h"
-
-int64_t lucene_tcstoi64(const TCHAR* str, TCHAR**end, int radix){
- #define LUCENE_TCSTOI64_RADIX(x,r) ((x>=_T('0') && x<=_T('9'))?x-_T('0'):((x>=_T('a') && x<=_T('z'))?x-_T('a')+10:((x>=_T('A') && x<=_T('Z'))?x-_T('A')+10:1000)))
-
- if (radix < 2 || radix > 36)
- return 0;
-
- /* Skip white space. */
- while (_istspace (*str))
- ++str;
-
- int sign=1;
- if ( str[0] == _T('+') )
- str++;
- else if ( str[0] == _T('-') ){
- sign = -1;
- str++;
- }
-
- *end=(TCHAR*)str;
- long r = -1;
- while ( (r=LUCENE_TCSTOI64_RADIX(*end[0],radix)) >=0 && r<radix )
- (*end)++;
-
- TCHAR* p = (*end)-1;
- int64_t ret = 0;
- int pos = 0;
- for ( ;p>=str;p-- ){
- int i=LUCENE_TCSTOI64_RADIX(p[0],radix);
- if ( pos == 0 )
- ret=i;
- else
- ret += (int64_t)pow((qreal)radix,(qreal)pos) * i; //todo: might be quicker with a different pow overload
-
- pos++;
- }
- return sign*ret;
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tprintf.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tprintf.cpp
deleted file mode 100644
index 2d9b5be0c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_tprintf.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CLucene/util/StringBuffer.h"
-
-#ifdef __CL_INCLUDE_TPRINTF
-
-CL_NS_USE(util)
-
-//print a variable argument to a stream
-//currently special number formatting is not supported. it is very minimalistic
-void lucene_vfnwprintf(StringBuffer* buffer, size_t count, const wchar_t * format, va_list& valist){
- const wchar_t *iter = format;
- StringBuffer* tmp = NULL;
- if ( buffer == NULL )
- tmp = _CLNEW StringBuffer;
- else
- tmp = buffer;
-
- while (*iter)
- {
- while (*iter && *iter != '%')
- {
- tmp->appendChar(*iter++);
- }
- if (*iter == '%')
- {
- if (iter[1] == '%')
- {
- //just print a %
- tmp->appendChar('%');
- iter += 2;
- continue;
- }
-
- iter++;
- switch (*iter)
- {
- case 's':
- {
- //todo: this is faulty. it doesn't heed count
-
- //print a string or null
- TCHAR *wstr = va_arg(valist, TCHAR *);
- if ( !wstr )
- wstr = _T("(null)");
-
- tmp->append(wstr);
- iter++;
- break;
- }
-
- case 'c':
- tmp->appendChar((TCHAR)va_arg(valist, int));
- iter++;
- break;
-
- default:
- {
- //todo: this is faulty. it doesn't heed count
-
- if (*iter == 'p')
- tmp->appendInt((int32_t)va_arg(valist, long));
- else
- {
- if (*iter == 'a' || *iter == 'A' ||
- *iter == 'e' || *iter == 'E' ||
- *iter == 'f' || *iter == 'F' ||
- *iter == 'g' || *iter == 'G')
- tmp->appendFloat((qreal)va_arg(valist, double),8);
- else if (*iter == 'd' || *iter == 'i' ){
- tmp->appendInt((int32_t)va_arg(valist, int));
- }else if (*iter == 'l' ){
- TCHAR b[100];
- _i64tot((int64_t)va_arg(valist, int64_t),b,10);
- tmp->append(b);
- }/*else{
- TCHAR b[100];
- _i64tot((int64_t)va_arg(valist, void*),b,10);
- tmp->append(b);
- }*/
- }
- iter++;
- break;
- }
- }
- }
- }
-
-
- if ( buffer == NULL ){
- //we are supposed to be writing to the console
-#ifdef _UCS2
- TCHAR* pointer = tmp->getBuffer();
- char ob[MB_LEN_MAX];
- size_t v;
- size_t len = tmp->length();
- for (size_t i=0;i<len;i++){
-#if !defined(__ANDROID__) && !defined(ANDROID)
- v = wctomb(ob,*pointer);
-#else
- v = wcrtomb(ob,*pointer,0);
-#endif // __ANDROID__
- if ( v > 0 ){
- ob[v]='\0';
- fputs(ob,stdout);
- }
- pointer++;
- }
-
-
-#else
- fputs(tmp->getBuffer(),stdout);
-#endif
- _CLDELETE(tmp);
- }
-}
-
-//print a list of arguments to a string
-int lucene_snwprintf(wchar_t* strbuf, size_t count, const wchar_t * format, ...){
- va_list ap;
- va_start(ap, format);
- StringBuffer buffer;
- lucene_vfnwprintf(&buffer,count,format,ap);
- va_end(ap);
-
- size_t ret = min(count,(size_t)(buffer.length()+1));
- _tcsncpy(strbuf,buffer.getBuffer(),ret);
- return ret;
-}
-
-//print a list of arguments to the stdout
-void lucene_wprintf(const wchar_t * format, ...){
- va_list ap;
- va_start(ap, format);
- lucene_vfnwprintf(NULL,LUCENE_INT32_MAX_SHOULDBE,format,ap);
- va_end(ap);
-}
-
-//print a variable argument to a string
-int lucene_vsnwprintf(wchar_t * strbuf, size_t count, const wchar_t * format, va_list& ap){
- StringBuffer buffer;
- lucene_vfnwprintf(&buffer,count,format,ap);
- int ret = min((int32_t)count,buffer.length()+1);
- _tcsncpy(strbuf,buffer.getBuffer(),ret);
- return ret;
-}
-
-#endif //__CL_INCLUDE_TPRINTF
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_wchar.h b/src/assistant/3rdparty/clucene/src/CLucene/config/repl_wchar.h
deleted file mode 100644
index 3e05c311c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/repl_wchar.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_repl_wchar_h
-#define _lucene_repl_wchar_h
-
-#ifdef _UCS2
-
-#ifndef _CL_HAVE_WCSCPY
- //copy a string to another string
- #error wcscpy is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSNCPY
- //copy a specified amount of one string to another string.
- #error wcsncpy is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSCAT
- //copy a string onto the end of the other string
- #error wcscat is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSCHR
- //find location of one character
- #error wcschr is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSSTR
- //find location of a string
- #error wcspy is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSLEN
- //get length of a string
- #error wcslen is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSCMP
- //case sensitive compare two strings
- #error wcscmp is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSNCMP
- //case sensitive compare two strings of a specified length
- #error wcsncmp is not defined, and a licensed replacement has not been written yet
-#endif
-
-#ifndef _CL_HAVE_WCSCSPN
- //Return the length of the maximum initial segment
- //of WCS which contains only wide-characters not in REJECT.
- #error wcscspn is not defined, and a licensed replacement has not been written yet
-#endif
-
-#endif //_UCS2
-
-//string function replacements
-#if defined(LUCENE_USE_INTERNAL_CHAR_FUNCTIONS) || (defined(_UCS2) && !defined(_CL_HAVE_WCSCASECMP)) || (defined(_ASCII) && !defined(_CL_HAVE_STRCASECMP))
- int lucene_tcscasecmp(const TCHAR *, const TCHAR *);
- #undef _tcsicmp
- #define _tcsicmp lucene_tcscasecmp
-#endif
-#if defined(LUCENE_USE_INTERNAL_CHAR_FUNCTIONS) || (defined(_UCS2) && !defined(_CL_HAVE_WCSLWR)) || (defined(_ASCII) && !defined(_CL_HAVE_STRLWR))
- TCHAR* lucene_tcslwr( TCHAR* str );
- #undef _tcslwr
- #define _tcslwr lucene_tcslwr
-#endif
-
-//conversion functions
-#if (defined(_ASCII) && !defined(_CL_HAVE_LLTOA)) || (defined(_UCS2) && !defined(_CL_HAVE_LLTOW))
- TCHAR* lucene_i64tot( int64_t value, TCHAR* str, int radix);
- #undef _i64tot
- #define _i64tot lucene_i64tot
-#endif
-#if (defined(_UCS2) && !defined(_CL_HAVE_WCSTOLL)) || (defined(_ASCII) && !defined(_CL_HAVE_STRTOLL))
- int64_t lucene_tcstoi64(const TCHAR* str, TCHAR**end, int radix);
- #undef _tcstoi64
- #define _tcstoi64 lucene_tcstoi64
-#endif
-#if defined(_UCS2) && !defined(_CL_HAVE_WCSTOD)
- double lucene_tcstod(const TCHAR *value, TCHAR **end);
- #undef _tcstod
- #define _tcstod lucene_tcstod
-#endif
-
-//printf functions
-#if defined(_UCS2) && (!defined(_CL_HAVE_SNWPRINTF) || defined(_CL_HAVE_SWPRINTF_BUG) )
- #undef _sntprintf
- #define _sntprintf lucene_snwprintf
- int lucene_snwprintf(wchar_t* strbuf, size_t count, const wchar_t * format, ...);
-
- #ifndef __CL_INCLUDE_TPRINTF
- #define __CL_INCLUDE_TPRINTF
- #endif
-#endif
-#if defined(_UCS2) && !defined(_CL_HAVE_WPRINTF)
- #undef _tprintf
- #define _tprintf lucene_wprintf
- void lucene_wprintf(const wchar_t * format, ...);
-
- #ifndef __CL_INCLUDE_TPRINTF
- #define __CL_INCLUDE_TPRINTF
- #endif
-#endif
-#if defined(_UCS2) && (!defined(_CL_HAVE_VSNWPRINTF) || defined(_CL_HAVE_SWPRINTF_BUG) )
- #undef _vsntprintf
- #define _vsntprintf lucene_vsnwprintf
- int lucene_vsnwprintf(wchar_t * strbuf, size_t count, const wchar_t * format, va_list& ap);
-
- #ifndef __CL_INCLUDE_TPRINTF
- #define __CL_INCLUDE_TPRINTF
- #endif
-#endif
-
-//todo: if _CL_HAVE_SNPRINTF_BUG fails(snprintf overflow),we should use our own
-//function. but we don't have it currently, and our functions are dubious anyway...
-
-#endif //end of _lucene_repl_wchar_h
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h b/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h
deleted file mode 100644
index 02fd2556a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-//NOTE: do not include this file directly, it is included from lucene internally.
-
-#ifndef lucene_config_threadCSection_h
-#define lucene_config_threadCSection_h
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(util)
-
- #if !defined(LUCENE_USE_WINDOWS_H) && !defined(_WINDOWS_) && !defined(__MINGW32__)
- //we have not explicity included windows.h and windows.h has
- //not been included (check _WINDOWS_), then we must define
- //our own definitions to the thread locking functions:
- struct CRITICAL_SECTION
- {
- struct critical_section_debug * DebugInfo;
- long LockCount;
- long RecursionCount;
- void * OwningThread;
- void * LockSemaphore;
- #if defined(_WIN64)
- unsigned __int64 SpinCount;
- #else
- unsigned long SpinCount;
- #endif
- };
- #endif
-
- ///a windows implementation of the lock mutex
- ///todo: boost has a InterlockedExchange way of locking too. More backwards compatible/faster???
- class mutex_win32
- {
- private:
- CRITICAL_SECTION mtx;
- public:
- mutex_win32(const mutex_win32& clone);
- mutex_win32();
- ~mutex_win32();
- void lock();
- void unlock();
- };
-
- class CLuceneThreadIdCompare
- {
- public:
-
- enum
- { // parameters for hash table
- bucket_size = 4, // 0 < bucket_size
- min_buckets = 8
- }; // min_buckets = 2 ^^ N, 0 < N
-
- bool operator()( DWORD t1, DWORD t2 ) const{
- return t1 < t2;
- }
- };
-
-#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
- #define Sleep(x) WaitForSingleObjectEx(GetCurrentThread(), x, FALSE)
-#endif
- #define _LUCENE_SLEEP(x) Sleep(x)
- #define _LUCENE_THREADMUTEX CL_NS(util)::mutex_win32
- #define _LUCENE_CURRTHREADID GetCurrentThreadId()
- #define _LUCENE_THREADID_TYPE DWORD
-CL_NS_END
-
-#endif //lucene_config_threadCSection_h
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/threadPthread.h b/src/assistant/3rdparty/clucene/src/CLucene/config/threadPthread.h
deleted file mode 100644
index d0ed9c4c9..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/threadPthread.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-//NOTE: do not include this file directly, it is included from lucene internally.
-
-#ifndef lucene_config_threadPthread_h
-#define lucene_config_threadPthread_h
-
-#include <pthread.h>
-
-CL_NS_DEF(util)
-
-///a posix implementation of the lock mutex
-///todo: we need a spinlock implemenation for usage in reference counting
-class mutex_pthread
-{
-private:
- pthread_mutex_t mtx;
-
-public:
- mutex_pthread(const mutex_pthread& clone);
- mutex_pthread();
- ~mutex_pthread();
- void lock();
- void unlock();
-
-private:
- #ifndef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
- pthread_t lockOwner;
- unsigned int lockCount;
- #endif
-};
-
-#define _LUCENE_SLEEP(x) usleep(x*1000) //_LUCENE_SLEEP should be in millis, usleep is in micros
-#define _LUCENE_THREADMUTEX CL_NS(util)::mutex_pthread
-#define _LUCENE_CURRTHREADID pthread_self()
-#define _LUCENE_THREADID_TYPE pthread_t
-
-class CLuceneThreadIdCompare
-{
-public:
- enum
- { // parameters for hash table
- bucket_size = 4, // 0 < bucket_size
- min_buckets = 8
- }; // min_buckets = 2 ^^ N, 0 < N
-
- bool operator()( pthread_t t1, pthread_t t2 ) const{
- return t1 < t2;
- }
-};
-
-
-CL_NS_END
-
-#endif //lucene_config_threadPthread_h
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp
deleted file mode 100644
index 7d1222a03..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-#ifndef _CL_DISABLE_MULTITHREADING
-CL_NS_DEF(util)
-
-
-mutexGuard::mutexGuard(const mutexGuard& clone){
- //no autoclone
- mrMutex = NULL;
-}
-mutexGuard::mutexGuard( _LUCENE_THREADMUTEX& rMutex ) :
- mrMutex(&rMutex)
-{
- mrMutex->lock();
-}
-mutexGuard::~mutexGuard()
-{
- mrMutex->unlock();
-}
-
-#if defined(_LUCENE_DONTIMPLEMENT_THREADMUTEX)
- //do nothing
- #if defined(_LUCENE_PRAGMA_WARNINGS)
- #pragma message ("==================Not implementing any thread mutex==================")
- #else
- #warning "==================Not implementing any thread mutex=================="
- #endif
-
-
-
-#elif defined(_CL_HAVE_WIN32_THREADS)
- #include "CLucene/config/threadCSection.h"
-
- #if !defined(LUCENE_USE_WINDOWS_H) && !defined(_WINDOWS_)
- //we have not explicity included windows.h and windows.h has
- //not been included (check _WINDOWS_), then we must define
- //our own definitions to the thread locking functions:
-#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
- extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSectionEx(CRITICAL_SECTION *, DWORD, DWORD);
-#else
- extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(CRITICAL_SECTION *);
-#endif
- extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(CRITICAL_SECTION *);
- extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(CRITICAL_SECTION *);
- extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(CRITICAL_SECTION *);
- extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId();
- #endif
- mutex_win32::mutex_win32(const mutex_win32& clone){
-#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
- InitializeCriticalSectionEx(&mtx, 0, 0);
-#else
- InitializeCriticalSection(&mtx);
-#endif
- }
- mutex_win32::mutex_win32()
- {
-#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
- InitializeCriticalSectionEx(&mtx, 0, 0);
-#else
- InitializeCriticalSection(&mtx);
-#endif
- }
-
- mutex_win32::~mutex_win32()
- {
- DeleteCriticalSection(&mtx);
- }
-
- void mutex_win32::lock()
- {
- EnterCriticalSection(&mtx);
- }
-
- void mutex_win32::unlock()
- {
- LeaveCriticalSection(&mtx);
- }
-
-
-
-#elif defined(_CL_HAVE_PTHREAD)
- #include "CLucene/config/threadPthread.h"
-
- #ifdef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
- bool mutex_pthread_attr_initd=false;
- pthread_mutexattr_t mutex_pthread_attr;
- #endif
-
- #ifdef _CL__CND_DEBUG
- #define _CLPTHREAD_CHECK(c,m) CND_PRECONDITION(c==0,m)
- #else
- #define _CLPTHREAD_CHECK(c,m) c;
- #endif
-
- mutex_pthread::mutex_pthread(const mutex_pthread& clone){
- #ifdef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
- _CLPTHREAD_CHECK(pthread_mutex_init(&mtx, &mutex_pthread_attr), "mutex_pthread(clone) constructor failed")
- #else
- #if defined(__hpux) && defined(_DECTHREADS_)
- _CLPTHREAD_CHECK(pthread_mutex_init(&mtx, pthread_mutexattr_default), "mutex_pthread(clone) constructor failed")
- #else
- _CLPTHREAD_CHECK(pthread_mutex_init(&mtx, 0), "mutex_pthread(clone) constructor failed")
- #endif
- lockCount=0;
- lockOwner=0;
- #endif
- }
- mutex_pthread::mutex_pthread()
- {
- #ifdef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
- if ( mutex_pthread_attr_initd == false ){
- pthread_mutexattr_init(&mutex_pthread_attr);
- pthread_mutexattr_settype(&mutex_pthread_attr, PTHREAD_MUTEX_RECURSIVE);
- mutex_pthread_attr_initd = true;
- }
- _CLPTHREAD_CHECK(pthread_mutex_init(&mtx, &mutex_pthread_attr), "mutex_pthread(clone) constructor failed")
- #else
- #if defined(__hpux) && defined(_DECTHREADS_)
- _CLPTHREAD_CHECK(pthread_mutex_init(&mtx, pthread_mutexattr_default), "mutex_pthread(clone) constructor failed")
- #else
- _CLPTHREAD_CHECK(pthread_mutex_init(&mtx, 0), "mutex_pthread(clone) constructor failed")
- #endif
- lockCount=0;
- lockOwner=0;
- #endif
- }
-
- mutex_pthread::~mutex_pthread()
- {
- _CLPTHREAD_CHECK(pthread_mutex_destroy(&mtx), "~mutex_pthread destructor failed")
- }
-
- void mutex_pthread::lock()
- {
- #ifndef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
- pthread_t currentThread = pthread_self();
- if( pthread_equal( lockOwner, currentThread ) ) {
- ++lockCount;
- } else {
- _CLPTHREAD_CHECK(pthread_mutex_lock(&mtx), "mutex_pthread::lock")
- lockOwner = currentThread;
- lockCount = 1;
- }
- #else
- _CLPTHREAD_CHECK(pthread_mutex_lock(&mtx), "mutex_pthread::lock")
- #endif
- }
-
- void mutex_pthread::unlock()
- {
- #ifndef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE
- --lockCount;
- if( lockCount == 0 )
- {
- lockOwner = 0;
- _CLPTHREAD_CHECK(pthread_mutex_unlock(&mtx), "mutex_pthread::unlock")
- }
- #else
- _CLPTHREAD_CHECK(pthread_mutex_unlock(&mtx), "mutex_pthread::unlock")
- #endif
- }
-
-#endif //thread impl choice
-
-
-CL_NS_END
-#endif //!_CL_DISABLE_MULTITHREADING
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/config/utf8.cpp b/src/assistant/3rdparty/clucene/src/CLucene/config/utf8.cpp
deleted file mode 100644
index 14ccf5aa9..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/config/utf8.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 1999 Tom Tromey
- * Copyright (C) 2000 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- *
- ************************************************
- * Also licensed with permission from Tom Tromey
- * and Owen Taylor under the Apache license.
- * Original location:
- * http://cvs.gnome.org/viewcvs/glib/glib/gutf8.c?rev=1.50&view=log
- ************************************************
- *
- * Copyright 2003-2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #include "CLucene/StdHeader.h"
-
-typedef unsigned long gunichar;
-typedef unsigned char guchar;
-
-#define UTF8_COMPUTE(Char, Mask, Len) \
- if (Char < 128) \
- { \
- Len = 1; \
- Mask = 0x7f; \
- } \
- else if ((Char & 0xe0) == 0xc0) \
- { \
- Len = 2; \
- Mask = 0x1f; \
- } \
- else if ((Char & 0xf0) == 0xe0) \
- { \
- Len = 3; \
- Mask = 0x0f; \
- } \
- else if ((Char & 0xf8) == 0xf0) \
- { \
- Len = 4; \
- Mask = 0x07; \
- } \
- else if ((Char & 0xfc) == 0xf8) \
- { \
- Len = 5; \
- Mask = 0x03; \
- } \
- else if ((Char & 0xfe) == 0xfc) \
- { \
- Len = 6; \
- Mask = 0x01; \
- } \
- else \
- Len = -1;
-
-/*#define UTF8_LENGTH(Char) \
- ((Char) < 0x80 ? 1 : \
- ((Char) < 0x800 ? 2 : \
- ((Char) < 0x10000 ? 3 : \
- ((Char) < 0x200000 ? 4 : \
- ((Char) < 0x4000000 ? 5 : 6)))))*/
-
-
-#define UTF8_GET(Result, Chars, Count, Mask, Len) \
- (Result) = (Chars)[0] & (Mask); \
- for ((Count) = 1; (Count) < (Len); ++(Count)) \
- { \
- if (((Chars)[(Count)] & 0xc0) != 0x80) \
- { \
- (Result) = -1; \
- break; \
- } \
- (Result) <<= 6; \
- (Result) |= ((Chars)[(Count)] & 0x3f); \
- }
-
-
-/**
- * lucene_wctoutf8:
- * @c: a ISO10646 character code
- * @outbuf: output buffer, must have at least 6 bytes of space.
- * If %NULL, the length will be computed and returned
- * and nothing will be written to @outbuf.
- *
- * Converts a single character to UTF-8.
- *
- * Return value: number of bytes written
- **/
-size_t lucene_wctoutf8(char * outbuf, const wchar_t ch)
-{
- gunichar c = ch;
- guchar len = 0;
- int first;
- int i;
-
- if (c < 0x80)
- {
- first = 0;
- len = 1;
- }
- else if (c < 0x800)
- {
- first = 0xc0;
- len = 2;
- }
- else if (c < 0x10000)
- {
- first = 0xe0;
- len = 3;
- }
- else if (c < 0x200000)
- {
- first = 0xf0;
- len = 4;
- }
- else if (c < 0x4000000)
- {
- first = 0xf8;
- len = 5;
- }
- else
- {
- first = 0xfc;
- len = 6;
- }
-
- if (outbuf)
- {
- for (i = len - 1; i > 0; --i)
- {
- outbuf[i] = (char)((c & 0x3f) | 0x80);
- c >>= 6;
- }
- outbuf[0] = c | first;
- }
-
- return len;
-}
-
-
-/**
- * lucene_utf8towc:
- * @p: a pointer to Unicode character encoded as UTF-8
- *
- * Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
- * If @p does not point to a valid UTF-8 encoded character, results are
- * undefined. If you are not sure that the bytes are complete
- * valid Unicode characters, you should use lucene_utf8towc_validated()
- * instead.
- *
- * Return value: the resulting character
- **/
-size_t lucene_utf8towc(wchar_t *pwc, const char *p, size_t n)
-{
- int i, mask = 0;
- int result;
- unsigned char c = (unsigned char) *p;
- int len=0;
-
- UTF8_COMPUTE (c, mask, len);
- if (len == -1)
- return 0;
- UTF8_GET (result, p, i, mask, len);
-
- *pwc = result;
- return len;
-}
-
-
-//this function was not taken from gnome
-size_t lucene_wcstoutf8(char * result, const wchar_t * str, size_t result_length){
- char *p=result;
- int i = 0;
-
- while (p < result + result_length-1 && str[i] != 0)
- p += lucene_wctoutf8(p,str[i++]);
-
- *p = '\0';
-
- return p-result;
-}
-//this function was not taken from gnome
-size_t lucene_utf8towcs(wchar_t * result, const char * str, size_t result_length){
- char *sp = (char*)str;
- wchar_t *rp = result;
- int i = 0;
-
- while (rp < result + result_length && *sp!=0){
- size_t r = lucene_utf8towc(rp,sp,6);
- if ( r == -1 )
- return 0;
- sp += r;
- rp++;
- }
-
- if ( sp-str < result_length )
- *rp = '\0';
-
- size_t ret = sp-str;
- return ret;
-}
-//get the number of bytes that make up the utf8 character.
-//this function was not taken from gnome
-size_t lucene_utf8charlen(const char *p)
-{
- int mask = 0;
- int len=0;
- unsigned char c = (unsigned char) *p;
-
- UTF8_COMPUTE (c, mask, len);
- return len;
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/condition.cpp b/src/assistant/3rdparty/clucene/src/CLucene/debug/condition.cpp
deleted file mode 100644
index 7fab8d71d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/condition.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "condition.h"
-#include "CLucene/util/Misc.h"
-#ifdef _CL__CND_DEBUG
-
-#define __CND_STR_PRECONDITION "PRECONDITION"
-#define __CND_STR_CONDITION "CONDITION"
-#define __CND_STR_WARNING "WARNING"
-#define __CND_STR_MESSAGE "MESSAGE"
-#define __CND_STR_DEBUGMESSAGE "DEBUG MESSAGE"
-#define __CND_STR_EXIT "EXIT"
-
-#ifndef _CND_DEBUG_DONTIMPLEMENT_OUTDEBUG
-void _Cnd_OutDebug( const char* FormattedMsg, const char* StrTitle, const char* File, int32_t Line, int32_t Title, const char* Mes2, int32_t fatal ){
- #ifdef __WINDOWS_H
- /*Display a standard messagebox*/
- MessageBox(NULL, FormattedMsg, StrTitle, (fatal==1 ? MB_ICONSTOP:MB_ICONEXCLAMATION) | MB_OK | MB_TASKMODAL);
- #else
- printf("%s\n",FormattedMsg);
- #endif
-
- #if defined(_CND_DEBUG_WARN_DEBUGGER) /*attempt to signal windows debugger*/
- OutputDebugString(FormattedMsg);
- DebugBreak(); /*Position debugger just before exit program*/
- #endif
-
- if ( fatal )
- debugFatalExit(1);
-}
-#endif
-
-void __cnd_FormatDebug( const char* File, int32_t Line, int32_t Title, const char* Mes2, int32_t fatal ) {
- char M[512];
- const char* StrTitle = NULL;
-
- if( Mes2 )
- _snprintf(M,512,"file:%s line:%d\n%s",File,Line,Mes2);
- else
- _snprintf(M,512,"file:%s line:%d",File,Line);
-
- /*Determine which title to use*/
- switch( Title ) {
- case CND_STR_PRECONDITION: {
- StrTitle = __CND_STR_PRECONDITION;
- break;
- }
- case CND_STR_CONDITION: {
- StrTitle = __CND_STR_CONDITION;
- break;
- }
- case CND_STR_WARNING: {
- StrTitle = __CND_STR_WARNING;
- break;
- }
- case CND_STR_MESSAGE: {
- StrTitle = __CND_STR_MESSAGE;
- break;
- }
- case CND_STR_DEBUGMESSAGE: {
- StrTitle = __CND_STR_DEBUGMESSAGE;
- break;
- }
- case CND_STR_EXIT: {
- StrTitle = __CND_STR_EXIT;
- break;
- }
- default:
- break;
- }/*switch*/
-
- _Cnd_OutDebug(M, StrTitle, File, Line, Title, Mes2, fatal);
-}
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/condition.h b/src/assistant/3rdparty/clucene/src/CLucene/debug/condition.h
deleted file mode 100644
index ab227e508..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/condition.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef __CONDITION_H
-#define __CONDITION_H
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-/*
-To enable condition debugging uncomment _CND_DEBUG in CLConfig.h
-*/
-
-#ifdef _CL__CND_DEBUG /* Don't include the debug code */
- #ifndef CND_STR_DEFINES
- #define CND_STR_DEFINES
- #define CND_STR_PRECONDITION 1
- #define CND_STR_CONDITION 2
- #define CND_STR_WARNING 3
- #define CND_STR_MESSAGE 4
- #define CND_STR_DEBUGMESSAGE 5
- #define CND_STR_EXIT 6
- #endif
-
- /* _CL__CND_DEBUG defined, include debug code */
-
- #ifdef _CND_NODEBUGTEXT
- #define CND_PRECONDITION(cond,usermessage) CND__EXITCONDITION(cond,__FILE__,__LINE__,CND_STR_PRECONDITION,NULL)
- #define CND_CONDITION(cond,usermessage) CND__EXITCONDITION(cond,__FILE__,__LINE__,CND_STR_CONDITION,NULL)
- #define CND_WARNING(cond,usermessage) CND__CONDITION(cond,__FILE__,__LINE__,CND_STR_WARNING,NULL)
- #define CND_MESSAGE(cond,usermessage) CND__CONDITION(cond,__FILE__,__LINE__,CND_STR_MESSAGE,NULL)
- #define CND_DEBUGMESSAGE(usermessage) CND__MESSAGE(__FILE__,__LINE__,CND_STR_DEBUGMESSAGE,NULL)
- #else
- #define CND_PRECONDITION(cond,usermessage) CND__EXITCONDITION(cond,__FILE__,__LINE__,CND_STR_PRECONDITION,usermessage)
- #define CND_CONDITION(cond,usermessage) CND__EXITCONDITION(cond,__FILE__,__LINE__,CND_STR_CONDITION,usermessage)
- #define CND_WARNING(cond,usermessage) CND__CONDITION(cond,__FILE__,__LINE__,CND_STR_WARNING,usermessage)
- #define CND_MESSAGE(cond,usermessage) CND__CONDITION(cond,__FILE__,__LINE__,CND_STR_MESSAGE,usermessage)
- #define CND_DEBUGMESSAGE(usermessage) CND__MESSAGE(__FILE__,__LINE__,CND_STR_DEBUGMESSAGE,usermessage)
- #endif
-
- //if _CND_DEBUG_DONTIMPLEMENT_OUTDEBUG is defined, then you must implement
- //this routine in the client application. The debug callback can then
- //be better customised to the host application.
- //Here is the default implementation:
- void _Cnd_OutDebug( const char* FormattedMsg, const char* StrTitle, const char* File, int32_t Line, int32_t Title, const char* Mes2, int32_t fatal );
-
- void __cnd_FormatDebug( const char* File, int32_t Line, int32_t Title, const char* Mes2, int32_t fatal );
- #define CND__EXIT(file,line,title,mes2) {__cnd_FormatDebug(file,line,title,mes2,1);}
- #define CND__EXITCONDITION(cond,file,line,title,mes2) {if(!(cond)){__cnd_FormatDebug(file,line,title,mes2,1);}}
- #define CND__CONDITION(cond,file,line,title,mes2) {if(!(cond)){__cnd_FormatDebug(file,line,title,mes2,0);}}
- #define CND__MESSAGE(file,line,title,mes2) {__cnd_FormatDebug(file,line,title,mes2,0);}
-#else
- #define CND_PRECONDITION(cond, usermessage)
- #define CND_CONDITION(cond, usermessage)
- #define CND_WARNING(cond,usermessage)
- #define CND_MESSAGE(cond,usermessage)
- #define CND_DEBUGMESSAGE(usermessage)
-#endif
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/error.cpp b/src/assistant/3rdparty/clucene/src/CLucene/debug/error.cpp
deleted file mode 100644
index 53ea0e93b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/error.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-CL_NS_USE(util)
-
-
-#ifdef _LUCENE_DISABLE_EXCEPTIONS
- #ifdef _LUCENE_PRAGMA_WARNINGS
- #pragma message ("==================Lucene exceptions are disabled==================")
- #else
- #warning "==================Lucene exceptions are disabled=================="
- #endif
-#else
- CLuceneError::CLuceneError(int num, const char* str, bool ownstr)
- {
- error_number = num;
- _awhat=STRDUP_AtoA(str);
- _twhat=NULL;
- if ( ownstr )
- _CLDELETE_CaARRAY(str);
- }
-
- CLuceneError::CLuceneError(const CLuceneError& clone)
- {
- this->error_number = clone.error_number;
- this->_awhat = NULL;
- this->_twhat = NULL;
-
- if ( clone._awhat != NULL )
- this->_awhat = STRDUP_AtoA(clone._awhat);
- if ( clone._twhat != NULL )
- this->_twhat = STRDUP_TtoT(clone._twhat);
- }
- CLuceneError::~CLuceneError() throw(){
- _CLDELETE_CARRAY(_twhat);
- _CLDELETE_CaARRAY(_awhat);
- }
- char* CLuceneError::what(){
-#ifdef _ASCII
- if ( _twhat != NULL )
- return _twhat;
-#endif
- if ( _awhat == NULL )
- _awhat = STRDUP_TtoA(_twhat);
- return _awhat;
- }
- TCHAR* CLuceneError::twhat(){
-#ifdef _ASCII
- if ( _awhat != NULL )
- return _awhat;
-#endif
- if ( _twhat == NULL )
- _twhat = STRDUP_AtoT(_awhat);
- return _twhat;
- }
-
-#ifndef _ASCII
- CLuceneError::CLuceneError(int num, const TCHAR* str, bool ownstr)
- {
- error_number = 0;
- _awhat=NULL;
- _twhat=STRDUP_TtoT(str);
- if ( ownstr )
- _CLDELETE_CARRAY(str);
- }
-#endif
-
-#endif //_LUCENE_DISABLE_EXCEPTIONS
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/error.h b/src/assistant/3rdparty/clucene/src/CLucene/debug/error.h
deleted file mode 100644
index 5abcc802c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/error.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_debug_error_
-#define _lucene_debug_error_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#define CL_ERR_UNKNOWN -1
-#define CL_ERR_IO 1
-#define CL_ERR_NullPointer 2
-#define CL_ERR_Runtime 3
-#define CL_ERR_IllegalArgument 4
-#define CL_ERR_Parse 5
-#define CL_ERR_TokenMgr 6
-#define CL_ERR_UnsupportedOperation 7
-#define CL_ERR_InvalidState 8
-#define CL_ERR_IndexOutOfBounds 9
-#define CL_ERR_TooManyClauses 10
-#define CL_ERR_RAMTransaction 11
-#define CL_ERR_InvalidCast 12
-#define CL_ERR_IllegalState 13
-
-
-
-////////////////////////////////////////////////////////
-//error try/throw/catch definitions
-////////////////////////////////////////////////////////
-#ifdef _CL_DISABLE_NATIVE_EXCEPTIONS
- /*#define try _jpr_Try
- #define _CLCATCH _jpr_Catch
- #define _CLFINALLY(x) xxxx
- #define _CLTHROWA(y) _jpr_Throw
- #define _THROWA_DEL(y) _jpr_Throw
- #define _RETHROW(x) _jpr_Throw
- #define _CLTHROWT(y) _jpr_Throw
-
- #define _THROWS ,_jpr_Throws*/
-#else
- class CLuceneError
- {
- int error_number;
- char* _awhat;
- TCHAR* _twhat;
- public:
- CLuceneError(const CLuceneError& clone);
- CLuceneError(int num, const char* str, bool ownstr);
-#ifdef _UCS2
- CLuceneError(int num, const TCHAR* str, bool ownstr);
-#endif
- int number(){return error_number;}
- char* what();
- TCHAR* twhat();
- ~CLuceneError() throw();
- };
-
- //#define _THROWS //does nothing
- #define _CLFINALLY(x) catch(...){ x; throw; } x //note: code x is not run if return is called
- #define _CLTHROWA(number, str) throw CLuceneError(number, str,false)
- #define _CLTHROWT(number, str) throw CLuceneError(number, str,false)
- #define _CLTHROWA_DEL(number, str) throw CLuceneError(number, str,true) //throw a string ensures the value is deleted
- #define _CLTHROWT_DEL(number, str) throw CLuceneError(number, str,true) //throw a string ensures the value is deleted
-
-
-#endif //_LUCENE_DISABLE_EXCEPTIONS
-//
-////////////////////////////////////////////////////////
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/lucenebase.h b/src/assistant/3rdparty/clucene/src/CLucene/debug/lucenebase.h
deleted file mode 100644
index 86cdae1c5..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/lucenebase.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_debug_lucenebase_
-#define _lucene_debug_lucenebase_
-
-#ifdef _LUCENE_PRAGMA_ONCE
-# pragma once
-#endif
-
-CL_NS_DEF(debug)
-
-//Lucenebase is the superclass of all clucene objects. It provides
-//memory debugging tracking and/or reference counting
-class LuceneBase{
-public:
-#ifdef LUCENE_ENABLE_MEMLEAKTRACKING
- static void* operator new (size_t size);
- static void operator delete (void *p);
- int32_t __cl_initnum; ///< The order that the object was created at. This is then used to do a lookup in the objects list
-
- static void* operator new (size_t size, char const * file, int32_t line);
- static void operator delete (void *p, char const * file, int32_t line);
-
- static void* __cl_voidpadd(void* data, const char* file, int line, size_t size); ///<add arbitary data to the lucenbase_list and returns the same data
- static void __cl_voidpremove(const void* data, const char* file, int line);///<remove arbitary data to the lucenbase_list
- static void __cl_unregister(const void* obj); ///<un register object from the mem leak and ref count system
-
- static int32_t __cl_GetUnclosedObjectsCount(); ///< gets the number of unclosed objects
- static const char* __cl_GetUnclosedObject(int32_t item); ///< get the name of the nth unclosed object
- static char* __cl_GetUnclosedObjects(); ///< get a string with the names of the unclosed objects
- static void __cl_PrintUnclosedObjects(); ///< print unclosed objects to the stdout
-
- ///This will clear memory relating to refcounting
- ///other tools can be used to more accurately identify
- ///memory leaks. This should only be called just
- ///before closing, and after retrieving the
- ///unclosed object list
- static void __cl_ClearMemory();
-
-#endif //LUCENE_ENABLE_MEMLEAKTRACKING
-
- int __cl_refcount;
- LuceneBase(){
- __cl_refcount=1;
- }
- inline int __cl_getref(){
- return __cl_refcount;
- }
- inline int __cl_addref(){
- __cl_refcount++;
- return __cl_refcount;
- }
- inline int __cl_decref(){
- __cl_refcount--;
- return __cl_refcount;
- }
- virtual ~LuceneBase(){};
-};
-
-class LuceneVoidBase{
- public:
- #ifdef _DEBUG
- //a compile time check to make sure that _CLDELETE and _CLDECDELETE is being
- //used correctly.
- int dummy__see_mem_h_for_details;
- #endif
- virtual ~LuceneVoidBase(){};
-};
-
-CL_NS_END
-#endif //_lucene_debug_lucenebase_
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/mem.h b/src/assistant/3rdparty/clucene/src/CLucene/debug/mem.h
deleted file mode 100644
index c2081477b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/mem.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_debug_mem_h
-#define _lucene_debug_mem_h
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "lucenebase.h"
-
-//Macro for creating new objects
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING)
- #define _CLNEW new(__FILE__, __LINE__)
- #define LUCENE_BASE public virtual CL_NS(debug)::LuceneBase
-#elif defined(LUCENE_ENABLE_REFCOUNT)
- #define _CLNEW new
- #define LUCENE_BASE public virtual CL_NS(debug)::LuceneBase
-#else
- #define _CLNEW new
- #define LUCENE_BASE public CL_NS(debug)::LuceneVoidBase
- #define LUCENE_BASE_CHECK(obj) (obj)->dummy__see_mem_h_for_details
-#endif
-#define _CL_POINTER(x) (x==NULL?NULL:(x->__cl_addref()>=0?x:x)) //return a add-ref'd object
-#define LUCENE_REFBASE public CL_NS(debug)::LuceneBase //this is the base of classes who *always* need refcounting
-
-#if defined(_DEBUG)
- #if !defined(LUCENE_BASE_CHECK)
- #define LUCENE_BASE_CHECK(x)
- #endif
-#else
- #undef LUCENE_BASE_CHECK
- #define LUCENE_BASE_CHECK(x)
-#endif
-
-//Macro for creating new arrays
-#ifdef LUCENE_ENABLE_MEMLEAKTRACKING
- #define _CL_NEWARRAY(type,size) (type*)CL_NS(debug)::LuceneBase::__cl_voidpadd(new type[(size_t)size],__FILE__,__LINE__,(size_t)size);
- #define _CLDELETE_ARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((const void*)x,__FILE__,__LINE__); delete [] x; x=NULL;}
- #define _CLDELETE_LARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((const void*)x,__FILE__,__LINE__);delete [] x;}
- #ifndef _CLDELETE_CARRAY
- #define _CLDELETE_CARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((const void*)x,__FILE__,__LINE__);delete [] x; x=NULL;}
- #define _CLDELETE_LCARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((const void*)x,__FILE__,__LINE__);delete [] x;}
- #endif
-#else
- #define _CL_NEWARRAY(type,size) new type[size]
- #define _CLDELETE_ARRAY(x) if (x!=NULL){delete [] x; x=NULL;}
- #define _CLDELETE_LARRAY(x) if (x!=NULL){delete [] x;}
- #ifndef _CLDELETE_CARRAY
- #define _CLDELETE_CARRAY(x) if (x!=NULL){delete [] x; x=NULL;}
- #define _CLDELETE_LCARRAY(x) if (x!=NULL){delete [] x;}
- #endif
-#endif
-//a shortcut for deleting a carray and all its contents
-#define _CLDELETE_CARRAY_ALL(x) {if ( x!=NULL ){ for(int xcda=0;x[xcda]!=NULL;xcda++)_CLDELETE_CARRAY(x[xcda]);}_CLDELETE_ARRAY(x)};
-#define _CLDELETE_ARRAY_ALL(x) {if ( x!=NULL ){ for(int xcda=0;x[xcda]!=NULL;xcda++)_CLDELETE(x[xcda]);}_CLDELETE_ARRAY(x)};
-#ifndef _CLDELETE_CaARRAY
- #define _CLDELETE_CaARRAY _CLDELETE_CARRAY
- #define _CLDELETE_LCaARRAY _CLDELETE_LCARRAY
-#endif
-
-//Macro for deleting
-#ifdef LUCENE_ENABLE_REFCOUNT
- #define _CLDELETE(x) if (x!=NULL){ CND_PRECONDITION((x)->__cl_refcount>=0,"__cl_refcount was < 0"); if ((x)->__cl_decref() <= 0)delete x; x=NULL; }
- #define _CLLDELETE(x) if (x!=NULL){ CND_PRECONDITION((x)->__cl_refcount>=0,"__cl_refcount was < 0"); if ((x)->__cl_decref() <= 0)delete x; }
-#else
- #define _CLDELETE(x) if (x!=NULL){ LUCENE_BASE_CHECK(x); delete x; x=NULL; }
- #define _CLLDELETE(x) if (x!=NULL){ LUCENE_BASE_CHECK(x); delete x; }
-#endif
-
-//_CLDECDELETE deletes objects which are *always* refcounted
-#define _CLDECDELETE(x) if (x!=NULL){ CND_PRECONDITION((x)->__cl_refcount>=0,"__cl_refcount was < 0"); if ((x)->__cl_decref() <= 0)delete x; x=NULL; }
-#define _CLLDECDELETE(x) if (x!=NULL){ CND_PRECONDITION((x)->__cl_refcount>=0,"__cl_refcount was < 0"); if ((x)->__cl_decref() <= 0)delete x; }
-
-//_VDelete should be used for deleting non-clucene objects.
-//when using reference counting, _CLDELETE casts the object
-//into a LuceneBase*.
-#define _CLVDELETE(x) if(x!=NULL){delete x; x=NULL;}
-
-template<typename T>
-class Array: LUCENE_BASE{
-public:
- T* values;
- size_t length;
-
- void deleteAll(){
- for (size_t i=0;i<length;i++)
- _CLDELETE(values[i]);
- _CLDELETE_ARRAY(values);
- }
- void deleteArray(){
- _CLDELETE_ARRAY(values);
- }
-
- Array(){
- values = NULL;
- length = 0;
- }
- Array(T* values, size_t length){
- this->values = values;
- this->length = length;
- }
- Array(size_t length){
- this->values = _CL_NEWARRAY(T,length);
- this->length = length;
- }
- ~Array(){}
-
- const T operator[](size_t _Pos) const
- {
- if (length <= _Pos){
- _CLTHROWA(CL_ERR_IllegalArgument,"vector subscript out of range");
- }
- return (*(values + _Pos));
- }
- T operator[](size_t _Pos)
- {
- if (length <= _Pos){
- _CLTHROWA(CL_ERR_IllegalArgument,"vector subscript out of range");
- }
- return (*(values + _Pos));
- }
-
-};
-
-#endif //_lucene_debug_lucenebase_
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/debug/memtracking.cpp b/src/assistant/3rdparty/clucene/src/CLucene/debug/memtracking.cpp
deleted file mode 100644
index 544a125a5..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/debug/memtracking.cpp
+++ /dev/null
@@ -1,371 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CLucene/util/Misc.h"
-
-bool _lucene_disable_debuglogging = true; //if LUCENE_ENABLE_CONSTRUCTOR_LOG is on, dont do log if this is true
-bool _lucene_run_objectcheck = false; //run a memory check before deleting objects
-int _lucene_counter_break = -1; //to break at this item, change this
- //and put break points at points below
-
-CL_NS_USE(util)
-CL_NS_DEF(debug)
-
-#ifdef LUCENE_ENABLE_MEMLEAKTRACKING
-int32_t _instance_counter = 0; //counter for initnumber
-
-struct _file{
- int32_t refcount; ///times this has been used
- char* value; ///reference to the the basefile
-}; //structure for name counting
-struct _pointers{
- _file* file;
- int32_t initline;
- int32_t initnumber;
-};//structure for pointer-filename references
-
-typedef CL_NS(util)::CLSet<const char*,_file*,Compare::Char,Deletor::Dummy,Deletor::Void<_file> > defFile;
-typedef CL_NS(util)::CLSet<LuceneBase*,_pointers*,Compare::Void<LuceneBase>,Deletor::Dummy,Deletor::Void<_pointers> > defPointer;
-typedef CL_NS(util)::CLSet<const void*,_pointers*,Compare::Void<const void>,Deletor::Dummy,Deletor::Void<_pointers> > defVoid;
-
-DEFINE_MUTEX(memleak_lock)
-defFile LuceneBase_Files(false,true); //list of filenames used
-defPointer LuceneBase_Pointers(false,true); //list of pointers counted
-defVoid LuceneBase_Voids(false,true); //list of arbitary data added
-
-//variables to trim filenames to just the base names
-char _files_trim_string[CL_MAX_DIR];
-int32_t _files_trim_start=-1;
-
-//trim the filename and return the refcounted _file* structure
-_file* get_file(const char* file){
- if ( _files_trim_start == -1 ){
- //this trims the start of the name file name so
- //that the whole of the filename is not stored - more asthetic :)
- //need to find the base
- _files_trim_start = strlen(__FILE__) - 21; //(length of debug/memtracking.cpp)
- strcpy(_files_trim_string,__FILE__);
- _files_trim_string[_files_trim_start] = 0;
- }
- if ( strncmp(file,_files_trim_string,_files_trim_start) == 0 ){
- //this file should be within the same directory area as we found lucenebase.cpp
- //to be, lets trim the start
- file+=_files_trim_start;
- }
-
- //now return an existing files structure (with refcount++) or create a new one
- defFile::iterator itr = LuceneBase_Files.find((const char*)file);
- if ( itr != LuceneBase_Files.end() ){
- _file* bf = itr->second;
- bf->refcount++;
- return bf;
- }else{
- _file* ref = new _file;
- ref->value = new char[strlen(file)+1]; //cannot use _CL_NEWARRAY otherwise recursion
- strcpy(ref->value,file);
-
- ref->refcount = 1;
- LuceneBase_Files.insert(pair<const char*,_file*>(ref->value,ref));
- return ref;
- }
-}
-
-void remove_file(_file* bf){
- bf->refcount--;
- if ( bf->refcount <= 0 ){
- defFile::iterator fi = LuceneBase_Files.find(bf->value);
- CND_PRECONDITION(fi!=LuceneBase_Files.end(),"fi==NULL");
- delete[] bf->value;
- LuceneBase_Files.removeitr(fi);
- }
-}
-
-#ifdef LUCENE_ENABLE_CONSTRUCTOR_LOG
- void constructor_log(const char* type,const char* file,const int line, const int size){
- if ( _lucene_disable_debuglogging ){
- FILE* f = fopen("clucene.log","a");
- char buf[CL_MAX_DIR+5];
- sprintf(buf,"%s,%s,%d,%d\n",type,file,line,size);
- fwrite(buf,sizeof(char),strlen(buf),f);
- fclose(f);
- }
- }
- #define CONSTRUCTOR_LOG(type,file,line,size) constructor_log(type,file,line,size)
-#else
- #define CONSTRUCTOR_LOG(type,file,line,size)
-#endif
-
-////////////////////////////////////////////////////////////////////////////////
-// the _CLNEW&_CLDELETE new/delete operators
-////////////////////////////////////////////////////////////////////////////////
-void* LuceneBase::operator new (size_t size, const char * file, int32_t line)
-{
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- void* p = malloc (size);
- LuceneBase* lb = (LuceneBase*)p;
-
- //create the pointer struct
- _file* br = get_file(file);
- _pointers* bp = new _pointers;
- bp->file = br;
- bp->initnumber = _instance_counter++;
- bp->initline = line;
-
- //associate this object with the pointer
- lb->__cl_initnum = bp->initnumber;
-
- //break if necessary
- if ( _lucene_counter_break == lb->__cl_initnum )
- CLDebugBreak(); //put break point here
-
- //add the pointer object
- LuceneBase_Pointers.insert(pair<LuceneBase*,_pointers*>(lb, bp));
-
- CONSTRUCTOR_LOG("newobj",file,line,size);
- return p;
-}
-void LuceneBase::operator delete (void *p, char const * file, int32_t line)
-{
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- LuceneBase* lb=(LuceneBase*)p;
-
- defPointer::iterator itr = LuceneBase_Pointers.find(lb);
- if ( itr != LuceneBase_Pointers.end() ){
- _pointers* bp = itr->second;
- remove_file(bp->file);
-
- LuceneBase_Pointers.removeitr(itr);
- }else{
- //break
- }
- free(p);
-}
-
-///////////////////////////////////////////////////////////////////////////
-// the generic new/delete operators
-///////////////////////////////////////////////////////////////////////////
-void* LuceneBase::operator new (size_t size)
-{
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- void* p = malloc (size);
- LuceneBase* lb = (LuceneBase*)p;
-
- //create the pointer struct
- _file* br = get_file("undefined");
- _pointers* bp = new _pointers;
- bp->file = br;
- bp->initnumber = _instance_counter++;
- bp->initline = -1;
-
- //associate this object with the pointer
- lb->__cl_initnum = bp->initnumber;
-
- //break if necessary
- if ( _lucene_counter_break == lb->__cl_initnum )
- CLDebugBreak();
-
- //add the pointer object
- LuceneBase_Pointers.insert(pair<LuceneBase*,_pointers*>(lb,bp));
-
- CONSTRUCTOR_LOG("newobj","unknown",-1,size);
- return p;
-}
-void LuceneBase::operator delete (void *p)
-{
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- LuceneBase* lb=(LuceneBase*)p;
-
- defPointer::iterator itr = LuceneBase_Pointers.find(lb);
- if ( itr != LuceneBase_Pointers.end() ){
- _pointers* bp = itr->second;
- remove_file(bp->file);
- LuceneBase_Pointers.removeitr(itr);
- }else{
- CLDebugBreak();
- }
- free(p);
-}
-
-///////////////////////////////////////////////////////////////////////////
-// other memtracking functions
-///////////////////////////////////////////////////////////////////////////
-void LuceneBase::__cl_unregister(const void* obj){
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- LuceneBase* lb=(LuceneBase*)obj;
- defPointer::iterator itr = LuceneBase_Pointers.find(lb);
- CND_PRECONDITION(itr != LuceneBase_Pointers.end(),"__cl_unregister object not found");
- _pointers* bp = itr->second;
- LuceneBase_Pointers.removeitr(itr);
-}
-
-void* LuceneBase::__cl_voidpadd(void* data, const char* file, int line,size_t size){
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- _file* br = get_file(file);
- _pointers* bp = new _pointers;
- bp->file = br;
- bp->initnumber = _instance_counter++;
- bp->initline = line;
-
- LuceneBase_Voids.insert(pair<void*,_pointers*>(data,bp));
- CONSTRUCTOR_LOG("newarr",file,line,size);
- return data;
-}
-void LuceneBase::__cl_voidpremove(const void* data, const char* file, int line){
- SCOPED_LOCK_MUTEX(memleak_lock)
- defVoid::iterator itr = LuceneBase_Voids.find(data);
- if ( itr != LuceneBase_Voids.end() ){
- _pointers* bp = itr->second;
- remove_file(bp->file);
- LuceneBase_Voids.removeitr(itr);
- }else{
- printf("Data deleted when not added with _CL_NEWARRAY in %s at %d\n",file,line);
- }
-}
-
-
-////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////
-//The lucene base memory leak printout functions
-////////////////////////////////////////////////////////////
-//static
-void __internalcl_PrintUnclosedObject(bool isObject, string& sb,_pointers* bp,_file* bf, bool print){
- TCHAR ttmp[100];
- char atmp[100];
-
- sb.append(" ");
- {
- _i64tot(bp->initnumber,ttmp,10);
- STRCPY_TtoA(atmp,ttmp,100);
- sb.append(atmp);
- }
- if ( isObject ){
- sb.append("(obj). ");
- }else{
- sb.append(". ");
- }
- sb.append(bf->value);
- sb.append(", line ");
- {
- _i64tot(bp->initline,ttmp,10);
- STRCPY_TtoA(atmp,ttmp,100);
- sb.append(atmp);
- }
- sb.append("\n");
-
- if ( print && sb.length() > 0 ){
- printf("%s\n", sb.c_str());
- sb = "";
- }
-}
-char* __internalcl_GetUnclosedObjects(bool print){
- TCHAR ttmp[100];
- char atmp[100];
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- string sb;
- bool unknowns = false;
- if ( LuceneBase_Pointers.size() > 0 ){
- {
- _i64tot(LuceneBase_Pointers.size(),ttmp,10);
- STRCPY_TtoA(atmp,ttmp,100);
- sb.append(atmp);
- }
- sb.append(" clucene objects are still open\n");
-
- defPointer::iterator itr = LuceneBase_Pointers.begin();
- while ( itr != LuceneBase_Pointers.end() ){
- _pointers* bp = itr->second;
- _file* bf = bp->file;
-
- if ( bp->initline == -1 )
- unknowns = true;
- __internalcl_PrintUnclosedObject(true, sb,bp,bf,print);
-
- ++itr;
- }
-
- defVoid::iterator itr2 = LuceneBase_Voids.begin();
- while ( itr2 != LuceneBase_Voids.end() ){
- _pointers* bp = itr2->second;
- _file* bf = bp->file;
-
- if ( bp->initline == -1 )
- unknowns = true;
- __internalcl_PrintUnclosedObject(false, sb,bp,bf,print);
-
- itr2++;
- }
- }
-
- if ( unknowns == true ){
- sb.append("*** Some memory was not created with _CLNEW and was not tracked... ***\n");
- sb.append("*** Use _CLNEW instead of new when creating CLucene objects ***\n");
- sb.append("*** Memory may also have not been freed in the current context ***\n");
- }
-
- if ( print ){
- if ( sb.length() > 0 ){
- printf("%s\n", sb.c_str());
- sb = "";
- }
- return NULL;
- }else{
- if ( sb.length() > 0 )
- return STRDUP_AtoA(sb.c_str());
- else
- return NULL;
- }
-}
-
-void LuceneBase::__cl_ClearMemory(){
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- while ( LuceneBase_Files.size() > 0 ){
- defFile::iterator fi = LuceneBase_Files.begin();
- _file* f = fi->second;
- delete[] f->value;
- LuceneBase_Files.removeitr (fi);
- }
- LuceneBase_Pointers.clear();
- LuceneBase_Voids.clear();
-}
-char* LuceneBase::__cl_GetUnclosedObjects(){
- return __internalcl_GetUnclosedObjects(false);
-}
-//static
-int32_t LuceneBase::__cl_GetUnclosedObjectsCount(){
- return LuceneBase_Pointers.size();
-}
-
-const char* LuceneBase::__cl_GetUnclosedObject(int32_t item){
- SCOPED_LOCK_MUTEX(memleak_lock)
-
- defPointer::iterator itr=LuceneBase_Pointers.begin();
- int32_t i=0;
- for ( ;itr!=LuceneBase_Pointers.end() && i<item ;itr++ ){
- ++i;
- }
- if ( itr != LuceneBase_Pointers.end() )
- return itr->second->file->value;
- else
- return NULL;
-}
-void LuceneBase::__cl_PrintUnclosedObjects(){
- __internalcl_GetUnclosedObjects(true);
-}
-////////////////////////////////////////////////////////////
-
-#endif //LUCENE_ENABLE_MEMLEAKTRACKING
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/document/DateField.cpp b/src/assistant/3rdparty/clucene/src/CLucene/document/DateField.cpp
deleted file mode 100644
index ff72b12bb..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/document/DateField.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-#include "DateField.h"
-#include "CLucene/util/Misc.h"
-CL_NS_USE(util)
-CL_NS_DEF(document)
-
-DateField::~DateField(){
-}
-
-TCHAR* DateField::timeToString(const int64_t time) {
- TCHAR* buf = _CL_NEWARRAY(TCHAR,DATEFIELD_DATE_LEN + 1);
- timeToString(time,buf);
- return buf;
-}
-void DateField::timeToString(const int64_t time, TCHAR* buf) {
- CND_PRECONDITION (buf, "buf == NULL");
- *buf = '\0';
- if (time < 0)
- _CLTHROWA (CL_ERR_IllegalArgument,"time too early"); //todo: make richer error
-
- if (time > DATEFIELD_DATE_MAX)
- _CLTHROWA (CL_ERR_IllegalArgument, "time too late (past DATEFIELD_DATE_MAX"); //todo: make richer error
-
- _i64tot(time, buf, 36);
- int32_t bufLen = _tcslen(buf);
-
- CND_PRECONDITION (bufLen <= DATEFIELD_DATE_LEN, "timeToString length is greater than 9");
-
- /* Supply leading zeroes if necessary. */
- if (bufLen < DATEFIELD_DATE_LEN) {
- const int32_t nMissingZeroes = DATEFIELD_DATE_LEN - bufLen;
- /* Move buffer contents forward to make room for leading zeroes. */
- for (int32_t i = DATEFIELD_DATE_LEN - 1; i >= nMissingZeroes; i--)
- buf[i] = buf[i - nMissingZeroes];
-
- /* Insert leading zeroes. */
- {// MSVC6 scoping fix
- for (int32_t i = 0; i < nMissingZeroes; i++)
- buf[i] = '0';
- }
-
- buf[DATEFIELD_DATE_LEN] = 0;
- }
-
- CND_PRECONDITION (_tcslen(buf) == DATEFIELD_DATE_LEN, "timeToString return is not equal to DATEFIELD_DATE_LEN");
-}
-
-int64_t DateField::stringToTime(const TCHAR* time) {
- TCHAR* end;
- return _tcstoi64(time, &end, 36);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/document/DateField.h b/src/assistant/3rdparty/clucene/src/CLucene/document/DateField.h
deleted file mode 100644
index 712fe9b62..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/document/DateField.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_document_DateField_
-#define _lucene_document_DateField_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(document)
-
-//here are some constants used throughout clucene
-//make date strings long enough to last a millenium
-#define DATEFIELD_DATE_MAX _ILONGLONG(31536000000000) //1000L*365*24*60*60*1000
-
-#define DATEFIELD_DATE_LEN 9 ////Long.toString(DATEFIELD_DATE_MAX, Character.MAX_RADIX).length()
-
-/**
-* Provides support for converting dates to strings and vice-versa.
-* The strings are structured so that lexicographic sorting orders by date,
-* which makes them suitable for use as field values and search terms.
-*
-* <P>Note that this class saves dates with millisecond granularity,
-* which is bad for {@link RangeQuery} and {@link PrefixQuery}, as those
-* queries are expanded to a BooleanQuery with a potentially large number
-* of terms when searching. Thus you might want to use
-* {@link DateTools} instead.
-*
-* <P>
-* Note: dates before 1970 cannot be used, and therefore cannot be
-* indexed when using this class. See {@link DateTools} for an
-* alternative without such a limitation.
-*
-* @deprecated If you build a new index, use {@link DateTools} instead. This class is included for use with existing
-* indices and will be removed in a future release.
-*/
-class DateField :LUCENE_BASE {
-public:
- ~DateField();
-
- /**
- * Converts a millisecond time to a string suitable for indexing.
- * @throws RuntimeException if the time specified in the
- * method argument is negative, that is, before 1970
- */
- static TCHAR* timeToString(const int64_t time);
-
- /**
- * Converts a millisecond time to a string suitable for indexing.
- * @throws CL_ERR_IllegalArgument if the time specified in the
- * method argument is negative, that is, before 1970
- * @param str must be a character array DATEFIELD_DATE_LEN+1 or longer
- */
- static void timeToString(const int64_t time, TCHAR* str);
-
- /** Converts a string-encoded date into a millisecond time. */
- static int64_t stringToTime(const TCHAR* s);
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/document/Document.cpp b/src/assistant/3rdparty/clucene/src/CLucene/document/Document.cpp
deleted file mode 100644
index a0ce03942..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/document/Document.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Document.h"
-#include "Field.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(document)
-
- DocumentFieldEnumeration::DocumentFieldList::DocumentFieldList(Field* f, DocumentFieldList* n ) {
- //Func - Constructor
- //Pre - f != NULL
- // n may be NULL
- //Post - Instance has been created
- CND_PRECONDITION(f != NULL, "f is NULL");
-
- field = f;
- next = n;
- }
- DocumentFieldEnumeration::DocumentFieldList::~DocumentFieldList(){
- //Func - Destructor
- //Pre - true
- //Post - Instance has been destroyed
-
- // Instead of recursively deleting the field list we do
- // it iteratively to avoid stack overflows when
- // dealing with several thousands of fields.
-
- if (!field) {
- return; // nothing to do; deleted by different invocation of dtor
- }
-
- DocumentFieldList* cur = next;
- while (cur != NULL)
- {
- DocumentFieldList* temp = cur->next;
- cur->next = NULL;
-
- _CLDELETE(cur);
- cur = temp;
- }
- _CLDELETE(field);
- }
-
-
- DocumentFieldEnumeration::DocumentFieldEnumeration(const DocumentFieldList* fl){
- //Func - Constructor
- //Pre - fl may be NULL
- //Post - Instance has been created
-
- fields = fl;
- }
-
- DocumentFieldEnumeration::~DocumentFieldEnumeration(){
- //Func - Destructor
- //Pre - true
- //Post - Instance has been destroyed
- }
-
- bool DocumentFieldEnumeration::hasMoreElements() const {
- return fields == NULL ? false : true;
- }
-
- Field* DocumentFieldEnumeration::nextElement() {
- //Func - Return the next element in the enumeration
- //Pre - true
- //Post - The next element is returned or NULL
-
-
- Field* result = NULL;
- //Check if fields is still valid
- if (fields){
- result = fields->field;
- fields = fields->next;
- }
- return result;
- }
-
- /** Constructs a new document with no fields. */
- Document::Document(){
- //Func - Constructor
- //Pre - true
- //Post - Instance has been created
- boost = 1.0f;
- fieldList = NULL;
- }
-
- Document::~Document(){
- //Func - Destructor
- //Pre - true
- //Post - Instance has been destroyed
- boost = 1.0f;
- _CLDELETE(fieldList);
- }
-
- void Document::clear(){
- _CLDELETE(fieldList);
- }
-
- void Document::add(Field& field) {
- fieldList = _CLNEW DocumentFieldEnumeration::DocumentFieldList(&field, fieldList);
- }
-
- void Document::setBoost(qreal boost) {
- this->boost = boost;
- }
-
- qreal Document::getBoost() const {
- return boost;
- }
-
-
- Field* Document::getField(const TCHAR* name) const{
- CND_PRECONDITION(name != NULL, "name is NULL");
-
- for (DocumentFieldEnumeration::DocumentFieldList* list = fieldList; list != NULL; list = list->next)
- //cannot use interning here, because name is probably not interned
- if ( _tcscmp(list->field->name(), name) == 0 ){
- return list->field;
- }
-
- return NULL;
- }
-
- const TCHAR* Document::get(const TCHAR* field) const {
- CND_PRECONDITION(field != NULL, "field is NULL");
- Field *f = getField(field);
- if (f!=NULL)
- return f->stringValue(); //this returns null it is a binary(reader)
- else
- return NULL;
- }
-
- DocumentFieldEnumeration* Document::fields() const {
- return _CLNEW DocumentFieldEnumeration(fieldList);
- }
-
-
- TCHAR* Document::toString() const {
- StringBuffer ret(_T("Document<"));
- for (DocumentFieldEnumeration::DocumentFieldList* list = fieldList; list != NULL; list = list->next) {
- TCHAR* tmp = list->field->toString();
- ret.append( tmp );
- if (list->next != NULL)
- ret.append(_T(" "));
- _CLDELETE_ARRAY( tmp );
- }
- ret.append(_T(">"));
- return ret.toString();
- }
-
-
-
- void Document::removeField(const TCHAR* name) {
- CND_PRECONDITION(name != NULL, "name is NULL");
-
- DocumentFieldEnumeration::DocumentFieldList* previous = NULL;
- DocumentFieldEnumeration::DocumentFieldList* current = fieldList;
- while (current != NULL) {
- //cannot use interning here, because name is probably not interned
- if ( _tcscmp(current->field->name(),name) == 0 ){
- if (previous){
- previous->next = current->next;
- }else
- fieldList = current->next;
- current->next=NULL; //ensure fieldlist destructor doesnt delete it
- _CLDELETE(current);
- return;
- }
- previous = current;
- current = current->next;
- }
- }
-
- void Document::removeFields(const TCHAR* name) {
- CND_PRECONDITION(name != NULL, "name is NULL");
-
- DocumentFieldEnumeration::DocumentFieldList* previous = NULL;
- DocumentFieldEnumeration::DocumentFieldList* current = fieldList;
- while (current != NULL) {
- //cannot use interning here, because name is probably not interned
- if ( _tcscmp(current->field->name(),name) == 0 ){
- if (previous){
- previous->next = current->next;
- }else
- fieldList = current->next;
-
- current->next=NULL; //ensure fieldlist destructor doesnt delete it
- _CLDELETE(current);
-
- if ( previous )
- current = previous->next;
- else
- current = fieldList;
- }else{
- previous = current;
- current = current->next;
- }
- }
- }
-
- TCHAR** Document::getValues(const TCHAR* name) {
- DocumentFieldEnumeration* it = fields();
- int32_t count = 0;
- while ( it->hasMoreElements() ){
- Field* f = it->nextElement();
- //cannot use interning here, because name is probably not interned
- if ( _tcscmp(f->name(),name) == 0 && f->stringValue() != NULL )
- count++;
- }
- _CLDELETE(it);
- it = fields();
-
- //todo: there must be a better way of doing this, we are doing two iterations of the fields
- TCHAR** ret = NULL;
- if ( count > 0 ){
- //start again
- ret = _CL_NEWARRAY(TCHAR*,count+1);
- int32_t i=0;
- while ( it->hasMoreElements() ){
- Field* fld=it->nextElement();
- if ( _tcscmp(fld->name(),name)== 0 && fld->stringValue() != NULL ){
- ret[i] = stringDuplicate(fld->stringValue());
- i++;
- }
- }
- ret[count]=NULL;
- }
- _CLDELETE(it);
- return ret;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/document/Document.h b/src/assistant/3rdparty/clucene/src/CLucene/document/Document.h
deleted file mode 100644
index ba7a283f7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/document/Document.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_document_Document_
-#define _lucene_document_Document_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Field.h"
-
-///todo: jlucene has change from using DocumentFieldList/Enumeration
-///to using a java List... do we want to do this too?
-CL_NS_DEF(document)
-
-class Document; //predefine
-class DocumentFieldEnumeration :LUCENE_BASE{
- class DocumentFieldList :LUCENE_BASE{
- public:
- DocumentFieldList(Field* f, DocumentFieldList* n);
- ~DocumentFieldList();
- Field* field;
- DocumentFieldList* next;
- };
- friend class Document;
-private:
- const DocumentFieldList* fields;
-public:
- DocumentFieldEnumeration(const DocumentFieldList* fl);
- ~DocumentFieldEnumeration();
- bool hasMoreElements() const;
- Field* nextElement();
-};
-
-/** Documents are the unit of indexing and search.
-*
-* A Document is a set of fields. Each field has a name and a textual value.
-* A field may be {@link Field#isStored() stored} with the document, in which
-* case it is returned with search hits on the document. Thus each document
-* should typically contain one or more stored fields which uniquely identify
-* it.
-*
-* <p>Note that fields which are <i>not</i> {@link Field#isStored() stored} are
-* <i>not</i> available in documents retrieved from the index, e.g. with {@link
-* Hits#doc(int32_t, Document*)}, {@link Searcher#doc(int32_t, Document*)} or {@link
-* IndexReader#document(int32_t, Document*)}.
-*/
-class Document:LUCENE_BASE {
-private:
- DocumentFieldEnumeration::DocumentFieldList* fieldList;
- qreal boost;
-public:
- Document();
- ~Document();
-
- /**
- * <p>Adds a field to a document. Several fields may be added with
- * the same name. In this case, if the fields are indexed, their text is
- * treated as though appended for the purposes of search.</p>
- * <p> Note that add like the removeField(s) methods only makes sense
- * prior to adding a document to an index. These methods cannot
- * be used to change the content of an existing index! In order to achieve this,
- * a document has to be deleted from an index and a new changed version of that
- * document has to be added.</p>
- *
- */
- void add(Field& field);
- /** Returns a field with the given name if any exist in this document, or
- * null. If multiple fields exists with this name, this method returns the
- * first value added.
- * Note: name is case sensitive
- */
- Field* getField(const TCHAR* name) const;
-
- /** Returns the string value of the field with the given name if any exist in
- * this document, or null. If multiple fields exist with this name, this
- * method returns the first value added. If only binary fields with this name
- * exist, returns null.
- * Note: name is case sensitive
- */
- const TCHAR* get(const TCHAR* field) const;
-
- /** Returns an Enumeration of all the fields in a document. */
- DocumentFieldEnumeration* fields() const;
- /** Prints the fields of a document for human consumption. */
- TCHAR* toString() const;
-
- /** Sets a boost factor for hits on any field of this document. This value
- * will be multiplied into the score of all hits on this document.
- *
- * <p>Values are multiplied into the value of {@link Field#getBoost()} of
- * each field in this document. Thus, this method in effect sets a default
- * boost for the fields of this document.
- *
- * @see Field#setBoost(qreal)
- */
- void setBoost(qreal boost);
-
- /** Returns the boost factor for hits on any field of this document.
- *
- * <p>The default value is 1.0.
- *
- * <p>Note: This value is not stored directly with the document in the index.
- * Documents returned from {@link IndexReader#document(int32_t, Document*)} and
- * {@link Hits#doc(int32_t, Document*)} may thus not have the same value present as when
- * this document was indexed.
- *
- * @see #setBoost(qreal)
- */
- qreal getBoost() const;
-
-
- /**
- * <p>Removes field with the specified name from the document.
- * If multiple fields exist with this name, this method removes the first field that has been added.
- * If there is no field with the specified name, the document remains unchanged.</p>
- * <p> Note that the removeField(s) methods like the add method only make sense
- * prior to adding a document to an index. These methods cannot
- * be used to change the content of an existing index! In order to achieve this,
- * a document has to be deleted from an index and a new changed version of that
- * document has to be added.</p>
- * Note: name is case sensitive
- */
- void removeField(const TCHAR* name);
-
- /**
- * <p>Removes all fields with the given name from the document.
- * If there is no field with the specified name, the document remains unchanged.</p>
- * <p> Note that the removeField(s) methods like the add method only make sense
- * prior to adding a document to an index. These methods cannot
- * be used to change the content of an existing index! In order to achieve this,
- * a document has to be deleted from an index and a new changed version of that
- * document has to be added.</p>
- * Note: name is case sensitive
- */
- void removeFields(const TCHAR* name);
-
- /**
- * Returns an array of values of the field specified as the method parameter.
- * This method can return <code>null</code>.
- * Note: name is case sensitive
- *
- * @param name the name of the field
- * @return a <code>String[]</code> of field values
- */
- TCHAR** getValues(const TCHAR* name);
-
- /**
- * Empties out the document so that it can be reused
- */
- void clear();
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/document/Field.cpp b/src/assistant/3rdparty/clucene/src/CLucene/document/Field.cpp
deleted file mode 100644
index 8cd88a36b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/document/Field.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CLucene/util/Reader.h"
-#include "Field.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/util/StringIntern.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(document)
-
-Field::Field(const TCHAR* Name, const TCHAR* String, bool store, bool index, bool token, const bool storeTermVector)
-{
-//Func - Constructor
-//Pre - Name != NULL and contains the name of the field
-// String != NULL and contains the value of the field
-// store indicates if the field must be stored
-// index indicates if the field must be indexed
-// token indicates if the field must be tokenized
-//Post - The instance has been created
-
- CND_PRECONDITION(Name != NULL, "Name is NULL");
- CND_PRECONDITION(String != NULL,"String is NULL");
- CND_PRECONDITION(!(!index && storeTermVector),"cannot store a term vector for fields that are not indexed.");
-
- _name = CLStringIntern::intern( Name CL_FILELINE);
- _stringValue = stringDuplicate( String );
- _readerValue = NULL;
- _streamValue = NULL;
- boost=1.0f;
- omitNorms = false;
-
- int cfg = 0;
- if ( store )
- cfg |= STORE_YES;
- if ( index && token )
- cfg |= INDEX_TOKENIZED;
- else if ( index && !token )
- cfg |= INDEX_UNTOKENIZED;
-
- if ( storeTermVector )
- _CLTHROWA(CL_ERR_IllegalArgument,"Stored term vector is deprecated with using this constructor");
-
- setConfig(cfg);
-}
-
-Field::Field(const TCHAR* Name, Reader* reader, bool store, bool index, bool token, const bool storeTermVector)
-{
-//Func - Constructor
-//Pre - Name != NULL and contains the name of the field
-// reader != NULL and contains a Reader
-// store indicates if the field must be stored
-// index indicates if the field must be indexed
-// token indicates if the field must be tokenized
-//Post - The instance has been created
-
- CND_PRECONDITION(Name != NULL, "Name is NULL");
- CND_PRECONDITION(reader != NULL, "reader is NULL");
-
- _name = CLStringIntern::intern( Name CL_FILELINE);
- _stringValue = NULL;
- _readerValue = reader;
- _streamValue = NULL;
- boost=1.0f;
- omitNorms = false;
-
- int cfg = 0;
- if ( store )
- cfg |= STORE_YES;
- if ( index && token )
- cfg |= INDEX_TOKENIZED;
- else if ( index && !token )
- cfg |= INDEX_UNTOKENIZED;
-
- if ( storeTermVector )
- _CLTHROWA(CL_ERR_IllegalArgument,"Stored term vector is deprecated with using this constructor");
-
- setConfig(cfg);
-}
-
-Field::Field(const TCHAR* Name, Reader* reader, int config)
-{
- CND_PRECONDITION(Name != NULL, "Name is NULL");
- CND_PRECONDITION(reader != NULL, "reader is NULL");
-
- _name = CLStringIntern::intern( Name CL_FILELINE);
- _stringValue = NULL;
- _readerValue = reader;
- _streamValue = NULL;
- boost=1.0f;
- omitNorms = false;
-
- setConfig(config);
-}
-
-
-Field::Field(const TCHAR* Name, const TCHAR* Value, int config)
-{
- CND_PRECONDITION(Name != NULL, "Name is NULL");
- CND_PRECONDITION(Value != NULL, "value is NULL");
-
- _name = CLStringIntern::intern( Name CL_FILELINE);
- _stringValue = stringDuplicate( Value );
- _readerValue = NULL;
- _streamValue = NULL;
- boost=1.0f;
- omitNorms = false;
-
- setConfig(config);
-}
-
-Field::Field(const TCHAR* Name, jstreams::StreamBase<char>* Value, int config)
-{
- CND_PRECONDITION(Name != NULL, "Name is NULL");
- CND_PRECONDITION(Value != NULL, "value is NULL");
-
- _name = CLStringIntern::intern( Name CL_FILELINE);
- _stringValue = NULL;
- _readerValue = NULL;
- _streamValue = Value;
- boost=1.0f;
- omitNorms = false;
-
- setConfig(config);
-}
-
-Field::~Field(){
-//Func - Destructor
-//Pre - true
-//Post - Instance has been destroyed
-
- CLStringIntern::unintern(_name);
- _CLDELETE_CARRAY(_stringValue);
- _CLDELETE(_readerValue);
- _CLVDELETE( _streamValue );
-}
-
-
-/*===============FIELDS=======================*/
-const TCHAR* Field::name() { return _name; } ///<returns reference
-TCHAR* Field::stringValue() { return _stringValue; } ///<returns reference
-Reader* Field::readerValue() { return _readerValue; } ///<returns reference
-jstreams::StreamBase<char>* Field::streamValue() { return _streamValue; } ///<returns reference
-
-bool Field::isStored() { return (config & STORE_YES) != 0; }
-bool Field::isIndexed() { return (config & INDEX_TOKENIZED)!=0 || (config & INDEX_UNTOKENIZED)!=0; }
-bool Field::isTokenized() { return (config & INDEX_TOKENIZED) != 0; }
-bool Field::isCompressed() { return (config & STORE_COMPRESS) != 0; }
-bool Field::isBinary() { return _streamValue!=NULL; }
-
-bool Field::isTermVectorStored() { return (config & TERMVECTOR_YES) != 0; }
-bool Field::isStoreOffsetWithTermVector() { return (config & TERMVECTOR_YES) != 0 && (config & TERMVECTOR_WITH_OFFSETS) != 0; }
-bool Field::isStorePositionWithTermVector() { return (config & TERMVECTOR_YES) != 0 && (config & TERMVECTOR_WITH_POSITIONS) != 0; }
-
-bool Field::getOmitNorms() { return omitNorms; }
-void Field::setOmitNorms(bool omitNorms) { this->omitNorms=omitNorms; }
-
-void Field::setBoost(qreal boost) { this->boost = boost; }
-qreal Field::getBoost() { return boost; }
-
-void Field::setConfig(int x){
- int newConfig=0;
-
- //set storage settings
- if ( (x & STORE_YES) || (x & STORE_COMPRESS) ){
- newConfig |= STORE_YES;
- if ( x & STORE_COMPRESS )
- newConfig |= STORE_COMPRESS;
- }else
- newConfig |= STORE_NO;
-
- if ( (x & INDEX_NO)==0 ){
- bool index=false;
-
- if ( x & INDEX_NONORMS ){
- newConfig |= INDEX_NONORMS;
- index = true;
- }
-
- if ( x & INDEX_TOKENIZED && x & INDEX_UNTOKENIZED )
- _CLTHROWA(CL_ERR_IllegalArgument,"it doesn't make sense to have an untokenised and tokenised field");
- if ( x & INDEX_TOKENIZED ){
- newConfig |= INDEX_TOKENIZED;
- index = true;
- }
- if ( x & INDEX_UNTOKENIZED ){
- newConfig |= INDEX_UNTOKENIZED;
- index = true;
- }
- if ( !index )
- newConfig |= INDEX_NO;
- }else
- newConfig |= INDEX_NO;
-
- if ( newConfig & INDEX_NO && newConfig & STORE_NO )
- _CLTHROWA(CL_ERR_IllegalArgument,"it doesn't make sense to have a field that is neither indexed nor stored");
-
- //set termvector settings
- if ( (x & TERMVECTOR_NO) == 0 ){
- bool termVector=false;
- if ( x & TERMVECTOR_YES ){
- termVector=true;
- }
- if ( x & TERMVECTOR_WITH_OFFSETS ){
- newConfig |= TERMVECTOR_WITH_OFFSETS;
- termVector=true;
- }
- if ( x & TERMVECTOR_WITH_POSITIONS ){
- newConfig |= TERMVECTOR_WITH_POSITIONS;
- termVector=true;
- }
- if ( termVector ){
- if ( newConfig & INDEX_NO )
- _CLTHROWA(CL_ERR_IllegalArgument,"cannot store a term vector for fields that are not indexed.");
-
- newConfig |= TERMVECTOR_YES;
- }else
- newConfig |= TERMVECTOR_NO;
- }else
- newConfig |= TERMVECTOR_NO;
-
- config = newConfig;
-}
-
-TCHAR* Field::toString() {
- CL_NS(util)::StringBuffer result;
- if (isStored()) {
- result.append( _T("stored") );
- }
- if (isIndexed()) {
- if (result.length() > 0)
- result.append( _T(",") );
- result.append( _T("indexed") );
- }
- if (isTokenized()) {
- if (result.length() > 0)
- result.append( _T(",") );
- result.append( _T("tokenized") );
- }
- if (isTermVectorStored()) {
- if (result.length() > 0)
- result.append( _T(",") );
- result.append( _T("termVector") );
- }
- if (isStoreOffsetWithTermVector()) {
- if (result.length() > 0)
- result.appendChar( ',' );
- result.append( _T("termVectorOffsets") );
- }
- if (isStorePositionWithTermVector()) {
- if (result.length() > 0)
- result.appendChar( ',' );
- result.append( _T("termVectorPosition") );
- }
- if (isBinary()) {
- if (result.length() > 0)
- result.appendChar( ',' );
- result.append( _T("binary") );
- }
- if (getOmitNorms()) {
- result.append( _T(",omitNorms") );
- }
- result.appendChar('<');
- result.append(name());
- result.appendChar(':');
-
- if (_stringValue != NULL)
- result.append(_stringValue);
- else if ( _readerValue != NULL )
- result.append( _T("Reader") );
- else if ( _streamValue != NULL )
- result.append( _T("Stream") );
- else
- result.append( _T("NULL") );
-
- result.appendChar('>');
- return result.toString();
-}
-
-
-Field* Field::Keyword(const TCHAR* Name, const TCHAR* Value) {
- return _CLNEW Field(Name,Value,Field::STORE_YES | Field::INDEX_UNTOKENIZED);
-}
-
-Field* Field::UnIndexed(const TCHAR* Name, const TCHAR* Value) {
- return _CLNEW Field(Name,Value,Field::STORE_YES | Field::INDEX_NO);
-}
-
-Field* Field::Text(const TCHAR* Name, const TCHAR* Value, const bool storeTermVector) {
- if ( storeTermVector )
- return _CLNEW Field(Name,Value,Field::STORE_YES | Field::INDEX_TOKENIZED | Field::TERMVECTOR_YES);
- else
- return _CLNEW Field(Name,Value,Field::STORE_YES | Field::INDEX_TOKENIZED);
-}
-
-Field* Field::UnStored(const TCHAR* Name, const TCHAR* Value, const bool storeTermVector) {
- if ( storeTermVector )
- return _CLNEW Field(Name,Value,Field::STORE_NO | Field::INDEX_TOKENIZED | Field::TERMVECTOR_YES);
- else
- return _CLNEW Field(Name,Value,Field::STORE_NO | Field::INDEX_TOKENIZED);
-}
-
-Field* Field::Text(const TCHAR* Name, Reader* Value, const bool storeTermVector) {
- if ( storeTermVector )
- return _CLNEW Field(Name,Value,Field::INDEX_TOKENIZED | Field::TERMVECTOR_YES);
- else
- return _CLNEW Field(Name,Value,Field::INDEX_TOKENIZED);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/document/Field.h b/src/assistant/3rdparty/clucene/src/CLucene/document/Field.h
deleted file mode 100644
index 771a1382b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/document/Field.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_document_Field_
-#define _lucene_document_Field_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/Reader.h"
-#include "CLucene/util/streambase.h"
-
-CL_NS_DEF(document)
-/**
-A field is a section of a Document. Each field has two parts, a name and a
-value. Values may be free text, provided as a String or as a Reader, or they
-may be atomic keywords, which are not further processed. Such keywords may
-be used to represent dates, urls, etc. Fields are optionally stored in the
-index, so that they may be returned with hits on the document.
-
-PORTING: CLucene doesn't directly support compressed fields. However, it is easy
-to reproduce this functionality by using the GZip streams in the contrib package.
-Also note that binary fields are not read immediately in CLucene, a substream
-is pointed directly to the field's data, in affect creating a lazy load ability.
-This means that large fields are best saved in binary format (even if they are
-text), so that they can be loaded lazily.
-*/
-class Field :LUCENE_BASE{
-private:
- const TCHAR* _name;
- TCHAR* _stringValue;
- CL_NS(util)::Reader* _readerValue;
- jstreams::StreamBase<char>* _streamValue;
-
- int config;
- qreal boost;
- bool omitNorms;
-public:
- enum Store{
- /** Store the original field value in the index. This is useful for short texts
- * like a document's title which should be displayed with the results. The
- * value is stored in its original form, i.e. no analyzer is used before it is
- * stored.
- */
- STORE_YES=1,
- /** Do not store the field value in the index. */
- STORE_NO=2,
-
- /** Store the original field value in the index in a compressed form. This is
- * useful for long documents and for binary valued fields.
- * NOTE: CLucene does not directly support compressed fields, to store a
- * compressed field.
- * //TODO: need better documentation on how to add a compressed field
- * //because actually we still need to write a GZipOutputStream...
- */
- STORE_COMPRESS=4
- };
-
- enum Index{
- /** Do not index the field value. This field can thus not be searched,
- * but one can still access its contents provided it is
- * {@link Field::Store stored}. */
- INDEX_NO=16,
- /** Index the field's value so it can be searched. An Analyzer will be used
- * to tokenize and possibly further normalize the text before its
- * terms will be stored in the index. This is useful for common text.
- */
- INDEX_TOKENIZED=32,
- /** Index the field's value without using an Analyzer, so it can be searched.
- * As no analyzer is used the value will be stored as a single term. This is
- * useful for unique Ids like product numbers.
- */
- INDEX_UNTOKENIZED=64,
- /** Index the field's value without an Analyzer, and disable
- * the storing of norms. No norms means that index-time boosting
- * and field length normalization will be disabled. The benefit is
- * less memory usage as norms take up one byte per indexed field
- * for every document in the index.
- */
- INDEX_NONORMS=128
- };
-
- enum TermVector{
- /** Do not store term vectors. */
- TERMVECTOR_NO=256,
- /** Store the term vectors of each document. A term vector is a list
- * of the document's terms and their number of occurences in that document. */
- TERMVECTOR_YES=512,
- /**
- * Store the term vector + token position information
- *
- * @see #YES
- */
- TERMVECTOR_WITH_POSITIONS=1024,
- /**
- * Store the term vector + Token offset information
- *
- * @see #YES
- */
- TERMVECTOR_WITH_OFFSETS=2048
- };
-
- _CL_DEPRECATED( another overload ) Field(const TCHAR* name, const TCHAR* value, bool store, bool index, bool token, const bool storeTermVector=false);
- _CL_DEPRECATED( another overload ) Field(const TCHAR* name, CL_NS(util)::Reader* reader, bool store, bool index, bool token, const bool storeTermVector=false);
-
- Field(const TCHAR* name, const TCHAR* value, int configs);
- Field(const TCHAR* name, CL_NS(util)::Reader* reader, int configs);
- Field(const TCHAR* name, jstreams::StreamBase<char>* stream, int configs);
- ~Field();
-
- /** Constructs a String-valued Field that is not tokenized, but is indexed
- * and stored. Useful for non-text fields, e.g. date or url.
- * @deprecated Use new Field(name,value,Field::STORE_YES | Field::INDEX_UNTOKENIZED)
- */
- _CL_DEPRECATED( new Field(*) ) static Field* Keyword(const TCHAR* name, const TCHAR* value);
-
- /** Constructs a String-valued Field that is not tokenized nor indexed,
- * but is stored in the index, for return with hits.
- * @deprecated Use new Field(name,value,Field::STORE_YES | Field::INDEX_NO)
- */
- _CL_DEPRECATED( new Field(*) ) static Field* UnIndexed(const TCHAR* name, const TCHAR* value);
-
- /** Constructs a String-valued Field that is tokenized and indexed,
- * and is stored in the index, for return with hits. Useful for short text
- * fields, like "title" or "subject".
- * @deprecated Use new Field(name,value,Field::STORE_YES | Field::INDEX_TOKENIZED)
- */
- _CL_DEPRECATED( new Field(*) ) static Field* Text(const TCHAR* name, const TCHAR* value, const bool storeTermVector=false);
-
- /** Constructs a String-valued Field that is tokenized and indexed,
- * but that is not stored in the index.
- * @deprecated Use new Field(name,value,Field::STORE_NO | Field::INDEX_TOKENIZED)
- */
- _CL_DEPRECATED( new Field(*) ) static Field* UnStored(const TCHAR* name, const TCHAR* value, const bool storeTermVector=false);
-
- /** Constructs a Reader-valued Field that is tokenized and indexed, but is
- * *not* stored in the index verbatim. Useful for longer text fields, like
- * "body".
- * @deprecated Use new Field(name,value, Field::INDEX_TOKENIZED)
- */
- _CL_DEPRECATED( new Field(*) ) static Field* Text(const TCHAR* name, CL_NS(util)::Reader* value, const bool storeTermVector=false);
-
- /** The name of the field (e.g., "date", "subject", "title", "body", etc.)
- * as an interned string. */
- const TCHAR* name(); ///<returns reference
-
- /** The value of the field as a String, or null. If null, the Reader value
- * or binary value is used. Exactly one of stringValue(), readerValue() and
- * streamValue() must be set. */
- TCHAR* stringValue(); ///<returns reference
-
- /** The value of the field as a reader, or null. If null, the String value
- * or stream value is used. Exactly one of stringValue(), readerValue() and
- * streamValue() must be set. */
- CL_NS(util)::Reader* readerValue();
-
- /** The value of the field as a String, or null. If null, the String value
- * or Reader value is used. Exactly one of stringValue(), readerValue() and
- * streamValue() must be set. */
- jstreams::StreamBase<char>* streamValue();
-
- // True iff the value of the field is to be stored in the index for return
- // with search hits. It is an error for this to be true if a field is
- // Reader-valued.
- bool isStored();
-
- // True iff the value of the field is to be indexed, so that it may be
- // searched on.
- bool isIndexed();
-
- // True iff the value of the field should be tokenized as text prior to
- // indexing. Un-tokenized fields are indexed as a single word and may not be
- // Reader-valued.
- bool isTokenized();
-
- /** True if the value of the field is stored and compressed within the index
- * NOTE: CLucene does not actually support compressed fields, Instead, a reader
- * will be returned with a pointer to a SubIndexInputStream. A GZipInputStream
- * and a UTF8 reader must be used to actually read the content. This flag
- * will only be set if the index was created by another lucene implementation.
- */
- bool isCompressed();
-
- //Set configs using XOR. This resets all the settings
- //For example, to use term vectors with positions and offsets do:
- //object->setConfig(TERMVECTOR_WITH_POSITIONS | TERMVECTOR_WITH_OFFSETS);
- void setConfig(int termVector);
-
- /** True iff the term or terms used to index this field are stored as a term
- * vector, available from {@link IndexReader#getTermFreqVector(int32_t,TCHAR*)}.
- * These methods do not provide access to the original content of the field,
- * only to terms used to index it. If the original content must be
- * preserved, use the <code>stored</code> attribute instead.
- *
- * @see IndexReader#getTermFreqVector(int32_t, String)
- */
- bool isTermVectorStored();
-
- /**
- * True iff terms are stored as term vector together with their offsets
- * (start and end positon in source text).
- */
- bool isStoreOffsetWithTermVector();
-
- /**
- * True iff terms are stored as term vector together with their token positions.
- */
- bool isStorePositionWithTermVector();
-
- /** Returns the boost factor for hits for this field.
- *
- * <p>The default value is 1.0.
- *
- * <p>Note: this value is not stored directly with the document in the index.
- * Documents returned from {@link IndexReader#document(int)} and
- * {@link Hits#doc(int)} may thus not have the same value present as when
- * this field was indexed.
- *
- * @see #setBoost(float)
- */
- qreal getBoost();
-
- /** Sets the boost factor hits on this field. This value will be
- * multiplied into the score of all hits on this field of this document.
- *
- * <p>The boost is multiplied by {@link Document#getBoost()} of the document
- * containing this field. If a document has multiple fields with the same
- * name, all such values are multiplied together. This product is then
- * multipled by the value {@link Similarity#lengthNorm(String,int)}, and
- * rounded by {@link Similarity#encodeNorm(float)} before it is stored in the
- * index. One should attempt to ensure that this product does not overflow
- * the range of that encoding.
- *
- * @see Document#setBoost(float)
- * @see Similarity#lengthNorm(String, int)
- * @see Similarity#encodeNorm(float)
- */
- void setBoost(qreal value);
-
- /** True iff the value of the filed is stored as binary */
- bool isBinary();
-
- /** True if norms are omitted for this indexed field */
- bool getOmitNorms();
-
- /** Expert:
- *
- * If set, omit normalization factors associated with this indexed field.
- * This effectively disables indexing boosts and length normalization for this field.
- */
- void setOmitNorms(bool omitNorms);
-
- // Prints a Field for human consumption.
- TCHAR* toString();
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.cpp
deleted file mode 100644
index cb915de5e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.cpp
+++ /dev/null
@@ -1,380 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CompoundFile.h"
-#include "CLucene/util/Misc.h"
-
-CL_NS_USE(store)
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-CompoundFileReader::CSIndexInput::CSIndexInput(CL_NS(store)::IndexInput* base,
- const int64_t fileOffset, const int64_t length)
-{
- this->base = base;
- this->fileOffset = fileOffset;
- this->_length = length;
-}
-
-void CompoundFileReader::CSIndexInput::readInternal(uint8_t* b, const int32_t len)
-{
- SCOPED_LOCK_MUTEX(base->THIS_LOCK)
-
- int64_t start = getFilePointer();
- if(start + len > _length)
- _CLTHROWA(CL_ERR_IO, "read past EOF");
- base->seek(fileOffset + start);
- base->readBytes(b, len);
-}
-
-CompoundFileReader::CSIndexInput::~CSIndexInput()
-{
-}
-
-IndexInput* CompoundFileReader::CSIndexInput::clone() const
-{
- return _CLNEW CSIndexInput(*this);
-}
-
-CompoundFileReader::CSIndexInput::CSIndexInput(const CSIndexInput& clone)
- : BufferedIndexInput(clone)
-{
- this->base = clone.base; //no need to clone this..
- this->fileOffset = clone.fileOffset;
- this->_length = clone._length;
-}
-
-void CompoundFileReader::CSIndexInput::close()
-{
-}
-
-CompoundFileReader::CompoundFileReader(Directory* dir, const QString& name)
- : entries(false, true)
-{
- directory = dir;
- fileName = name;
-
- bool success = false;
- try {
- stream = dir->openInput(name);
-
- // read the directory and init files
- int32_t count = stream->readVInt();
- FileEntry* entry = NULL;
- TCHAR tid[CL_MAX_PATH];
- for (int32_t i = 0; i < count; i++) {
- int64_t offset = stream->readLong();
- int32_t read = stream->readString(tid, CL_MAX_PATH);
- QString aid(QString::fromWCharArray(tid, read));
-
- // set length of the previous entry
- if (entry != NULL)
- entry->length = offset - entry->offset;
-
- entry = _CLNEW FileEntry(offset);
- entries.put(aid, entry);
- }
-
- // set the length of the final entry
- if (entry != NULL)
- entry->length = stream->length() - entry->offset;
- success = true;
- } _CLFINALLY (
- if (!success && (stream != NULL)) {
- try {
- stream->close();
- _CLDELETE(stream);
- } catch (CLuceneError& err) {
- if (err.number() != CL_ERR_IO)
- throw err;
- }
- }
- )
-}
-
-CompoundFileReader::~CompoundFileReader()
-{
- close();
-}
-
-Directory* CompoundFileReader::getDirectory()
-{
- return directory;
-}
-
-QString CompoundFileReader::getName() const
-{
- return fileName;
-}
-
-void CompoundFileReader::close()
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- if (stream != NULL) {
- entries.clear();
- stream->close();
- _CLDELETE(stream);
- }
-}
-
-IndexInput* CompoundFileReader::openInput(const QString& id)
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- if (stream == NULL)
- _CLTHROWA(CL_ERR_IO, "Stream closed");
-
- const FileEntry* entry = entries.get(id);
- if (entry == NULL) {
- char buf[CL_MAX_PATH + 30];
- strcpy(buf,"No sub-file with id ");
- strncat(buf, id.toLocal8Bit().constData(), CL_MAX_PATH);
- strcat(buf, " found");
- _CLTHROWA(CL_ERR_IO,buf);
- }
- return _CLNEW CSIndexInput(stream, entry->offset, entry->length);
-}
-
-QStringList CompoundFileReader::list() const
-{
- // for (EntriesType::const_iterator i=entries.begin();i!=entries.end();i++){
- // names->push_back(i->first);
- // ++i;
- // }
-
- QStringList names;
- EntriesType::const_iterator itr;
- // TODO: verify this, see old code above ???
- for (itr = entries.begin(); itr != entries.end(); ++itr)
- names.push_back(itr->first);
-
- return names;
-}
-
-bool CompoundFileReader::fileExists(const QString& name) const
-{
- return entries.exists(name);
-}
-
-int64_t CompoundFileReader::fileModified(const QString& name) const
-{
- return directory->fileModified(fileName);
-}
-
-void CompoundFileReader::touchFile(const QString& name)
-{
- directory->touchFile(fileName);
-}
-
-bool CompoundFileReader::doDeleteFile(const QString& name)
-{
- _CLTHROWA(CL_ERR_UnsupportedOperation,
- "UnsupportedOperationException: CompoundFileReader::doDeleteFile");
-}
-
-void CompoundFileReader::renameFile(const QString& from, const QString& to)
-{
- _CLTHROWA(CL_ERR_UnsupportedOperation,
- "UnsupportedOperationException: CompoundFileReader::renameFile");
-}
-
-int64_t CompoundFileReader::fileLength(const QString& name) const
-{
- FileEntry* e = entries.get(name);
- if (e == NULL) {
- char buf[CL_MAX_PATH + 30];
- strcpy(buf,"File ");
- strncat(buf, name.toLocal8Bit().constData(), CL_MAX_PATH);
- strcat(buf," does not exist");
- _CLTHROWA(CL_ERR_IO,buf);
- }
- return e->length;
-}
-
-IndexOutput* CompoundFileReader::createOutput(const QString& name)
-{
- _CLTHROWA(CL_ERR_UnsupportedOperation,
- "UnsupportedOperationException: CompoundFileReader::createOutput");
-}
-
-LuceneLock* CompoundFileReader::makeLock(const QString& name)
-{
- _CLTHROWA(CL_ERR_UnsupportedOperation,
- "UnsupportedOperationException: CompoundFileReader::makeLock");
-}
-
-QString CompoundFileReader::toString() const
-{
- QString ret(QLatin1String("CompoundFileReader@"));
- return ret.append(fileName);
-}
-
-CompoundFileWriter::CompoundFileWriter(Directory* dir, const QString& name)
- : ids(false)
- , entries(true)
-{
- if (dir == NULL)
- _CLTHROWA(CL_ERR_NullPointer, "directory cannot be null");
-
- if (name.isEmpty())
- _CLTHROWA(CL_ERR_NullPointer, "name cannot be null");
-
- merged = false;
- directory = dir;
- fileName = name;
-}
-
-CompoundFileWriter::~CompoundFileWriter()
-{
-}
-
-Directory* CompoundFileWriter::getDirectory()
-{
- return directory;
-}
-
-/** Returns the name of the compound file. */
-QString CompoundFileWriter::getName() const
-{
- return fileName;
-}
-
-void CompoundFileWriter::addFile(const QString& file)
-{
- if (merged)
- _CLTHROWA(CL_ERR_IO, "Can't add extensions after merge has been called");
-
- if (file.isEmpty())
- _CLTHROWA(CL_ERR_NullPointer, "file cannot be null");
-
- if (ids.find(file) != ids.end()) {
- char buf[CL_MAX_PATH + 30];
- strcpy(buf, "File ");
- strncat(buf, file.toLocal8Bit().constData(), CL_MAX_PATH);
- strcat(buf," already added");
- _CLTHROWA(CL_ERR_IO,buf);
- }
- ids.insert(file);
- entries.push_back(_CLNEW WriterFileEntry(file));
-}
-
-void CompoundFileWriter::close()
-{
- if (merged)
- _CLTHROWA(CL_ERR_IO, "Merge already performed");
-
- if (entries.size() == 0) // isEmpty()
- _CLTHROWA(CL_ERR_IO, "No entries to merge have been defined");
-
- merged = true;
-
- // open the compound stream
- IndexOutput* os = NULL;
- try {
- os = directory->createOutput(fileName);
-
- // Write the number of entries
- os->writeVInt(entries.size());
-
- // Write the directory with all offsets at 0.
- // Remember the positions of directory entries so that we can
- // adjust the offsets later
- { //msvc6 for scope fix
- TCHAR tfile[CL_MAX_PATH];
- for (CLLinkedList<WriterFileEntry*>::iterator i = entries.begin();
- i != entries.end(); i++) {
- WriterFileEntry* fe = *i;
- fe->directoryOffset = os->getFilePointer();
- os->writeLong(0); // for now
- tfile[fe->file.toWCharArray(tfile)] = '\0';
- os->writeString(tfile, _tcslen(tfile));
- }
- }
-
- // Open the files and copy their data into the stream.
- // Remember the locations of each file's data section.
- { //msvc6 for scope fix
- int32_t bufferLength = 1024;
- uint8_t buffer[1024];
- for (CLLinkedList<WriterFileEntry*>::iterator i = entries.begin();
- i != entries.end(); i++) {
- WriterFileEntry* fe = *i;
- fe->dataOffset = os->getFilePointer();
- copyFile(fe, os, buffer, bufferLength);
- }
- }
-
- { //msvc6 for scope fix
- // Write the data offsets into the directory of the compound stream
- for (CLLinkedList<WriterFileEntry*>::iterator i = entries.begin();
- i != entries.end(); i++) {
- WriterFileEntry* fe = *i;
- os->seek(fe->directoryOffset);
- os->writeLong(fe->dataOffset);
- }
- }
-
-
- } _CLFINALLY (
- if (os != NULL) {
- try {
- os->close();
- _CLDELETE(os);
- } catch (...) { }
- }
- );
-}
-
-void CompoundFileWriter::copyFile(WriterFileEntry* source, IndexOutput* os,
- uint8_t* buffer, int32_t bufferLength)
-{
- IndexInput* is = NULL;
- try {
- int64_t startPtr = os->getFilePointer();
-
- is = directory->openInput(source->file);
- int64_t length = is->length();
- int64_t remainder = length;
- int32_t chunk = bufferLength;
-
- while(remainder > 0) {
- int32_t len = (int32_t)min((int64_t)chunk, remainder);
- is->readBytes(buffer, len);
- os->writeBytes(buffer, len);
- remainder -= len;
- }
-
- // Verify that remainder is 0
- if (remainder != 0) {
- TCHAR buf[CL_MAX_PATH+100];
- _sntprintf(buf, CL_MAX_PATH + 100, _T("Non-zero remainder length ")
- _T("after copying: %d (id: %s, length: %d, buffer size: %d)"),
- remainder, source->file.toLocal8Bit().constData(), length, chunk);
- _CLTHROWT(CL_ERR_IO, buf);
- }
-
- // Verify that the output length diff is equal to original file
- int64_t endPtr = os->getFilePointer();
- int64_t diff = endPtr - startPtr;
- if (diff != length) {
- TCHAR buf[100];
- _sntprintf(buf, 100, _T("Difference in the output file offsets %d ")
- _T("does not match the original file length %d"), diff, length);
- _CLTHROWT(CL_ERR_IO,buf);
- }
- } _CLFINALLY (
- if (is != NULL) {
- is->close();
- _CLDELETE(is);
- }
- );
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.h b/src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.h
deleted file mode 100644
index 52e64b3ea..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/CompoundFile.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_compoundfile_h
-#define _lucene_index_compoundfile_h
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-
-#include "CLucene/store/IndexInput.h"
-#include "CLucene/store/IndexOutput.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/Lock.h"
-#include "CLucene/util/VoidList.h"
-#include "CLucene/util/VoidMap.h"
-
-CL_NS_DEF(index)
-
-// Class for accessing a compound stream.
-// This class implements a directory, but is limited to only read operations.
-// Directory methods that would normally modify data throw an exception.
-class CompoundFileReader : public CL_NS(store)::Directory
-{
-private:
- /** Implementation of an IndexInput that reads from a portion of the
- * compound file. The visibility is left as "package" *only* because
- * this helps with testing since JUnit test cases in a different class
- * can then access package fields of this class.
- */
- class CSIndexInput : public CL_NS(store)::BufferedIndexInput
- {
- private:
- CL_NS(store)::IndexInput* base;
- int64_t fileOffset;
- int64_t _length;
- protected:
- /** Expert: implements buffer refill. Reads uint8_ts from the current
- * position in the input.
- * @param b the array to read uint8_ts into
- * @param length the number of uint8_ts to read
- */
- void readInternal(uint8_t* b, const int32_t len);
- void seekInternal(const int64_t pos) {}
-
- public:
- CSIndexInput(CL_NS(store)::IndexInput* base, const int64_t fileOffset,
- const int64_t length);
- CSIndexInput(const CSIndexInput& clone);
- ~CSIndexInput();
-
- /** Closes the stream to futher operations. */
- void close();
- CL_NS(store)::IndexInput* clone() const;
-
- int64_t length() { return _length; }
-
- QString getDirectoryType() const {
- return CompoundFileReader::DirectoryType(); }
- };
-
- class FileEntry : LUCENE_BASE
- {
- public:
- FileEntry()
- : offset(0), length(0) {}
- FileEntry(int64_t _offset)
- : offset(_offset), length(0) {}
- ~FileEntry() {}
-
- int64_t offset;
- int64_t length;
- };
-
- // Base info
- CL_NS(store)::Directory* directory;
- QString fileName;
-
- CL_NS(store)::IndexInput* stream;
-
- typedef CL_NS(util)::CLHashMap<QString, FileEntry*,
- CL_NS(util)::Compare::Qstring,
- CL_NS(util)::Equals::Qstring,
- CL_NS(util)::Deletor::DummyQString,
- CL_NS(util)::Deletor::Object<FileEntry> > EntriesType;
- EntriesType entries;
-protected:
- // Removes an existing file in the directory->
- bool doDeleteFile(const QString& name);
-
-public:
- CompoundFileReader(CL_NS(store)::Directory* dir, const QString& name);
- ~CompoundFileReader();
- CL_NS(store)::Directory* getDirectory();
- QString getName() const;
-
- void close();
- CL_NS(store)::IndexInput* openInput(const QString& id);
-
- /** Returns an array of strings, one for each file in the directory-> */
- QStringList list() const;
- /** Returns true iff a file with the given name exists. */
- bool fileExists(const QString& name) const;
- /** Returns the time the named file was last modified. */
- int64_t fileModified(const QString& name) const;
- /** Set the modified time of an existing file to now. */
- void touchFile(const QString& name);
- /** Renames an existing file in the directory->
- If a file already exists with the new name, then it is replaced.
- This replacement should be atomic. */
- void renameFile(const QString& from, const QString& to);
- /** Returns the length of a file in the directory.
- * @throws IOException if the file does not exist */
- int64_t fileLength(const QString& name) const;
- /** Not implemented
- * @throws UnsupportedOperationException */
- CL_NS(store)::IndexOutput* createOutput(const QString& name);
- /** Not implemented
- * @throws UnsupportedOperationException */
- CL_NS(store)::LuceneLock* makeLock(const QString& name);
-
- QString toString() const;
-
- static QString DirectoryType() { return QLatin1String("CFS"); }
- QString getDirectoryType() const { return DirectoryType(); }
-};
-
-
-
-// Combines multiple files into a single compound file.
-// The file format:<br>
-// <ul>
-// <li>VInt fileCount</li>
-// <li>{Directory}
-// fileCount entries with the following structure:</li>
-// <ul>
-// <li>int64_t dataOffset</li>
-// <li>UTFString extension</li>
-// </ul>
-// <li>{File Data}
-// fileCount entries with the raw data of the corresponding file</li>
-// </ul>
-// The fileCount integer indicates how many files are contained in this compound
-// file. The {directory} that follows has that many entries. Each directory entry
-// contains an encoding identifier, an int64_t pointer to the start of this file's
-// data section, and a UTF String with that file's extension.
-class CompoundFileWriter : LUCENE_BASE
-{
- class WriterFileEntry : LUCENE_BASE {
- public:
- WriterFileEntry()
- : dataOffset(0), directoryOffset(0) {}
- WriterFileEntry(const QString& _file)
- : file(_file), dataOffset(0), directoryOffset(0) {}
- ~WriterFileEntry() {}
-
- QString file;
- // temporary holder for the start of this file's data section
- int64_t dataOffset;
- // temporary holder for the start of directory entry for this file
- int64_t directoryOffset;
- };
-
- bool merged;
- QString fileName;
- CL_NS(store)::Directory* directory;
-
- CL_NS(util)::CLHashSet<QString, CL_NS(util)::Compare::Qstring,
- CL_NS(util)::Deletor::DummyQString> ids;
-
- CL_NS(util)::CLLinkedList<WriterFileEntry*,
- CL_NS(util)::Deletor::Object<WriterFileEntry> > entries;
-
- // Copy the contents of the file with specified extension into the
- // provided output stream. Use the provided buffer for moving data
- // to reduce memory allocation.
- void copyFile(WriterFileEntry* source, CL_NS(store)::IndexOutput* os,
- uint8_t* buffer, int32_t bufferLength);
-
-public:
- // Create the compound stream in the specified file. The file name is the
- // entire name (no extensions are added).
- CompoundFileWriter(CL_NS(store)::Directory* dir, const QString& name);
- ~CompoundFileWriter();
-
- // Returns the directory of the compound file.
- CL_NS(store)::Directory* getDirectory();
-
- QString getName() const ;
- /* Add a source stream. <code>file</code> is the string by which the
- * sub-stream will be known in the compound stream.
- *
- * @throws IllegalStateException if this writer is closed
- * @throws NullPointerException if <code>file</code> is null
- * @throws IllegalArgumentException if a file with the same name
- * has been added already
- */
- void addFile(const QString& file);
- /* Merge files with the extensions added up to now.
- * All files with these extensions are combined sequentially into the
- * compound stream. After successful merge, the source files
- * @throws IllegalStateException if close() had been called before or
- * if no file has been added to this object
- * are deleted.
- */
- void close();
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.cpp
deleted file mode 100644
index 941e822d1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.cpp
+++ /dev/null
@@ -1,571 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-
-#include "DocumentWriter.h"
-#include "FieldInfos.h"
-#include "IndexWriter.h"
-#include "FieldsWriter.h"
-#include "Term.h"
-#include "TermInfo.h"
-#include "TermInfosWriter.h"
-
-#include "CLucene/analysis/AnalysisHeader.h"
-
-#include "CLucene/search/Similarity.h"
-#include "TermInfosWriter.h"
-#include "FieldsWriter.h"
-
-CL_NS_USE(util)
-CL_NS_USE(store)
-CL_NS_USE(analysis)
-CL_NS_USE(document)
-CL_NS_DEF(index)
-
-/*Posting*/
-
-DocumentWriter::Posting::Posting(Term* t, const int32_t position,
- TermVectorOffsetInfo* offset)
-{
- //Func - Constructor
- //Pre - t contains a valid reference to a Term
- //Post - Instance has been created
- freq = 1;
-
- term = _CL_POINTER(t);
- positions.values = (int32_t*)malloc(sizeof(int32_t));
- positions.values[0] = position;
- positions.length = 1;
-
- if ( offset != NULL ){
- this->offsets.values =(TermVectorOffsetInfo*)malloc(sizeof(TermVectorOffsetInfo));
- this->offsets.values[0] = *offset;
- this->offsets.length = 1;
- }
-}
-
-DocumentWriter::Posting::~Posting()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- free(positions.values);
- if ( this->offsets.values != NULL )
- free(this->offsets.values);
- _CLDECDELETE(term);
-}
-
-DocumentWriter::DocumentWriter(Directory* d, Analyzer* a,
- CL_NS(search)::Similarity* sim, const int32_t mfl)
- : analyzer(a)
- , directory(d)
- , maxFieldLength(mfl)
- , fieldInfos(NULL)
- , fieldLengths(NULL)
- , similarity(sim)
- , termIndexInterval(IndexWriter::DEFAULT_TERM_INDEX_INTERVAL)
- , fieldPositions(NULL)
- , fieldBoosts(NULL)
- , termBuffer(_CLNEW Term)
-{
- //Pre - d contains a valid reference to a Directory
- // d contains a valid reference to a Analyzer
- // mfl > 0 and contains the maximum field length
- //Post - Instance has been created
-
- CND_PRECONDITION(((mfl > 0) || (mfl == IndexWriter::FIELD_TRUNC_POLICY__WARN)),
- "mfl is 0 or smaller than IndexWriter::FIELD_TRUNC_POLICY__WARN")
-
- fieldInfos = NULL;
- fieldLengths = NULL;
-}
-
-DocumentWriter::DocumentWriter(CL_NS(store)::Directory* d,
- CL_NS(analysis)::Analyzer* a, IndexWriter* writer)
- : analyzer(a)
- , directory(d)
- , maxFieldLength(writer->getMaxFieldLength())
- , fieldInfos(NULL)
- , fieldLengths(NULL)
- , similarity(writer->getSimilarity())
- , termIndexInterval(writer->getTermIndexInterval())
- , fieldPositions(NULL)
- , fieldBoosts(NULL)
- , termBuffer(_CLNEW Term)
-{
- //Pre - d contains a valid reference to a Directory
- // d contains a valid reference to a Analyzer
- // mfl > 0 and contains the maximum field length
- //Post - Instance has been created
-
- CND_PRECONDITION(((maxFieldLength > 0)
- || (maxFieldLength == IndexWriter::FIELD_TRUNC_POLICY__WARN)),
- "mfl is 0 or smaller than IndexWriter::FIELD_TRUNC_POLICY__WARN")
-
- fieldInfos = NULL;
- fieldLengths = NULL;
-
-}
-
-DocumentWriter::~DocumentWriter()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
- clearPostingTable();
- _CLDELETE( fieldInfos );
- _CLDELETE_ARRAY(fieldLengths);
- _CLDELETE_ARRAY(fieldPositions);
- _CLDELETE_ARRAY(fieldBoosts);
- _CLDELETE_ARRAY(fieldOffsets);
-
- _CLDECDELETE(termBuffer);
-}
-
-void DocumentWriter::clearPostingTable()
-{
- PostingTableType::iterator itr = postingTable.begin();
- while (itr != postingTable.end()){
- _CLDELETE(itr->second);
- _CLLDECDELETE(itr->first);
- ++itr;
- }
- postingTable.clear();
-}
-
-void DocumentWriter::addDocument(const QString& segment, Document* doc)
-{
- CND_PRECONDITION(fieldInfos == NULL, "fieldInfos!=NULL")
-
- // write field names
- fieldInfos = _CLNEW FieldInfos();
- fieldInfos->add(doc);
-
- QString buf = Misc::segmentname(segment, QLatin1String(".fnm"));
- fieldInfos->write(directory, buf);
-
- // write field values
- FieldsWriter fieldsWriter(directory, segment, fieldInfos);
- try {
- fieldsWriter.addDocument(doc);
- } _CLFINALLY (
- fieldsWriter.close()
- );
-
- // clear postingTable
- clearPostingTable();
-
- int32_t fieldInfoSize = fieldInfos->size();
- fieldLengths = _CL_NEWARRAY(int32_t, fieldInfoSize); // init fieldLengths
- fieldPositions = _CL_NEWARRAY(int32_t, fieldInfoSize); // init fieldPositions
- fieldOffsets = _CL_NEWARRAY(int32_t, fieldInfoSize); // init fieldOffsets
- fieldBoosts = _CL_NEWARRAY(qreal, fieldInfoSize); // init fieldBoosts
-
- qreal fbd = doc->getBoost();
- for (int32_t i = 0; i < fieldInfoSize; ++i) {
- fieldLengths[i] = 0;
- fieldPositions[i] = 0;
- fieldOffsets[i] = 0;
- //initialise fieldBoost array with default boost
- fieldBoosts[i] = fbd;
- }
-
- // invert doc into postingTable
- invertDocument(doc);
-
- // sort postingTable into an array
- Posting** postings = NULL;
- int32_t postingsLength = 0;
- sortPostingTable(postings, postingsLength);
-
- //DEBUG:
- /*for (int32_t i = 0; i < postingsLength; i++) {
- Posting* posting = postings[i];
-
- TCHAR* b = posting->term->toString();
- _cout << b << " freq=" << posting->freq;
- _CLDELETE(b);
-
- _cout << " pos=" << posting->positions[0];
- for (int32_t j = 1; j < posting->freq; j++)
- _cout <<"," << posting->positions[j];
-
- _cout << endl;
- }*/
-
-
- // write postings
- writePostings(postings, postingsLength, segment);
-
- // write norms of indexed fields
- writeNorms(segment);
- _CLDELETE_ARRAY(postings);
-}
-
-void DocumentWriter::sortPostingTable(Posting**& array, int32_t& arraySize)
-{
- // copy postingTable into an array
- arraySize = postingTable.size();
- array = _CL_NEWARRAY(Posting*,arraySize);
- PostingTableType::iterator postings = postingTable.begin();
- int32_t i=0;
- while ( postings != postingTable.end() ){
- array[i] = (Posting*)postings->second;
- postings++;
- i++;
- }
- // sort the array
- quickSort(array, 0, i - 1);
-}
-
-
-void DocumentWriter::invertDocument(const Document* doc)
-{
- DocumentFieldEnumeration* fields = doc->fields();
- try {
- while (fields->hasMoreElements()) {
- Field* field = (Field*)fields->nextElement();
- const TCHAR* fieldName = field->name();
- const int32_t fieldNumber = fieldInfos->fieldNumber(fieldName);
-
- int32_t length = fieldLengths[fieldNumber]; // length of field
- int32_t position = fieldPositions[fieldNumber]; // position in field
- if (length>0)
- position+=analyzer->getPositionIncrementGap(fieldName);
- int32_t offset = fieldOffsets[fieldNumber]; // offset field
-
- if (field->isIndexed()) {
- if (!field->isTokenized()) { // un-tokenized field
- //FEATURE: this is bug in java: if using a Reader, then
- //field value will not be added. With CLucene, an untokenized
- //field with a reader will still be added (if it isn't stored,
- //because if it's stored, then the reader has already been read.
- const TCHAR* charBuf = NULL;
- int64_t dataLen = 0;
-
- if (field->stringValue() == NULL && !field->isStored() ) {
- CL_NS(util)::Reader* r = field->readerValue();
- // this call tries to read the entire stream
- // this may invalidate the string for the further calls
- // it may be better to do this via a FilterReader
- // TODO make a better implementation of this
- dataLen = r->read(charBuf, LUCENE_INT32_MAX_SHOULDBE);
- if (dataLen == -1)
- dataLen = 0;
- //todo: would be better to pass the string length, in case
- //a null char is passed, but then would need to test the output too.
- } else {
- charBuf = field->stringValue();
- dataLen = _tcslen(charBuf);
- }
-
- if(field->isStoreOffsetWithTermVector()){
- TermVectorOffsetInfo tio;
- tio.setStartOffset(offset);
- tio.setEndOffset(offset + dataLen);
- addPosition(fieldName, charBuf, position++, &tio );
- }else
- addPosition(fieldName, charBuf, position++, NULL);
- offset += dataLen;
- length++;
- } else { // field must be tokenized
- CL_NS(util)::Reader* reader; // find or make Reader
- bool delReader = false;
- if (field->readerValue() != NULL) {
- reader = field->readerValue();
- } else if (field->stringValue() != NULL) {
- reader = _CLNEW CL_NS(util)::StringReader(
- field->stringValue(),_tcslen(field->stringValue()),
- false);
- delReader = true;
- } else {
- _CLTHROWA(CL_ERR_IO,"field must have either String or Reader value");
- }
-
- try {
- // Tokenize field and add to postingTable.
- CL_NS(analysis)::TokenStream* stream =
- analyzer->tokenStream(fieldName, reader);
-
- try {
- CL_NS(analysis)::Token t;
- int32_t lastTokenEndOffset = -1;
- while (stream->next(&t)) {
- position += (t.getPositionIncrement() - 1);
-
- if(field->isStoreOffsetWithTermVector()){
- TermVectorOffsetInfo tio;
- tio.setStartOffset(offset + t.startOffset());
- tio.setEndOffset(offset + t.endOffset());
- addPosition(fieldName, t.termText(), position++, &tio);
- } else
- addPosition(fieldName, t.termText(), position++, NULL);
-
- lastTokenEndOffset = t.endOffset();
- length++;
- // Apply field truncation policy.
- if (maxFieldLength != IndexWriter::FIELD_TRUNC_POLICY__WARN) {
- // The client programmer has explicitly authorized us to
- // truncate the token stream after maxFieldLength tokens.
- if ( length > maxFieldLength)
- break;
- } else if (length > IndexWriter::DEFAULT_MAX_FIELD_LENGTH) {
- const TCHAR* errMsgBase =
- _T("Indexing a huge number of tokens from a single")
- _T(" field (\"%s\", in this case) can cause CLucene")
- _T(" to use memory excessively.")
- _T(" By default, CLucene will accept only %s tokens")
- _T(" tokens from a single field before forcing the")
- _T(" client programmer to specify a threshold at")
- _T(" which to truncate the token stream.")
- _T(" You should set this threshold via")
- _T(" IndexReader::maxFieldLength (set to LUCENE_INT32_MAX")
- _T(" to disable truncation, or a value to specify maximum number of fields).");
-
- TCHAR defaultMaxAsChar[34];
- _i64tot(IndexWriter::DEFAULT_MAX_FIELD_LENGTH,
- defaultMaxAsChar, 10
- );
- int32_t errMsgLen = _tcslen(errMsgBase)
- + _tcslen(fieldName)
- + _tcslen(defaultMaxAsChar);
- TCHAR* errMsg = _CL_NEWARRAY(TCHAR,errMsgLen+1);
-
- _sntprintf(errMsg, errMsgLen,errMsgBase, fieldName, defaultMaxAsChar);
-
- _CLTHROWT_DEL(CL_ERR_Runtime,errMsg);
- }
- } // while token->next
-
- if(lastTokenEndOffset != -1 )
- offset += lastTokenEndOffset + 1;
- } _CLFINALLY (
- stream->close();
- _CLDELETE(stream);
- );
- } _CLFINALLY (
- if (delReader) {
- _CLDELETE(reader);
- }
- );
- } // if/else field is to be tokenized
- fieldLengths[fieldNumber] = length; // save field length
- fieldPositions[fieldNumber] = position; // save field position
- fieldBoosts[fieldNumber] *= field->getBoost();
- fieldOffsets[fieldNumber] = offset;
- } // if field is to beindexed
- } // while more fields available
- } _CLFINALLY (
- _CLDELETE(fields);
- );
-}
-
-void DocumentWriter::addPosition(const TCHAR* field, const TCHAR* text,
- const int32_t position, TermVectorOffsetInfo* offset)
-{
- termBuffer->set(field,text,false);
-
- Posting* ti = postingTable.get(termBuffer);
- if (ti != NULL) { // word seen before
- int32_t freq = ti->freq;
- if (ti->positions.length == freq) {
- // positions array is full, realloc its size
- ti->positions.length = freq*2;
- ti->positions.values = (int32_t*)realloc(ti->positions.values, ti->positions.length * sizeof(int32_t));
- }
- ti->positions.values[freq] = position; // add new position
-
- if (offset != NULL) {
- if (ti->offsets.length == freq){
- ti->offsets.length = freq*2;
- ti->offsets.values = (TermVectorOffsetInfo*)realloc(ti->offsets.values, ti->offsets.length * sizeof(TermVectorOffsetInfo));
- }
- ti->offsets[freq] = *offset;
- }
-
- ti->freq = freq + 1; // update frequency
- } else { // word not seen before
- Term* term = _CLNEW Term( field, text, false);
- postingTable.put(term, _CLNEW Posting(term, position, offset));
- }
-}
-
-//static
-void DocumentWriter::quickSort(Posting**& postings, const int32_t lo, const int32_t hi)
-{
- if(lo >= hi)
- return;
-
- int32_t mid = (lo + hi) / 2;
-
- if(postings[lo]->term->compareTo(postings[mid]->term) > 0) {
- Posting* tmp = postings[lo];
- postings[lo] = postings[mid];
- postings[mid] = tmp;
- }
-
- if(postings[mid]->term->compareTo(postings[hi]->term) > 0) {
- Posting* tmp = postings[mid];
- postings[mid] = postings[hi];
- postings[hi] = tmp;
-
- if(postings[lo]->term->compareTo(postings[mid]->term) > 0) {
- Posting* tmp2 = postings[lo];
- postings[lo] = postings[mid];
- postings[mid] = tmp2;
- }
- }
-
- int32_t left = lo + 1;
- int32_t right = hi - 1;
-
- if (left >= right)
- return;
-
- const Term* partition = postings[mid]->term; //not kept, so no need to finalize
-
- for( ;; ) {
- while(postings[right]->term->compareTo(partition) > 0)
- --right;
-
- while(left < right && postings[left]->term->compareTo(partition) <= 0)
- ++left;
-
- if(left < right) {
- Posting* tmp = postings[left];
- postings[left] = postings[right];
- postings[right] = tmp;
- --right;
- } else {
- break;
- }
- }
-
- quickSort(postings, lo, left);
- quickSort(postings, left + 1, hi);
-}
-
-void DocumentWriter::writePostings(Posting** postings,
- const int32_t postingsLength, const QString& segment)
-{
- #define __DOCLOSE(obj) \
- if (obj!=NULL) { \
- try { \
- obj->close(); \
- _CLDELETE(obj); \
- } catch(CLuceneError &e) { \
- ierr = e.number(); \
- err = e.what(); \
- } catch(...) { \
- err = "Unknown error while closing posting tables"; \
- } \
- }
-
- IndexOutput* freq = NULL;
- IndexOutput* prox = NULL;
- TermInfosWriter* tis = NULL;
- TermVectorsWriter* termVectorWriter = NULL;
- try {
- //open files for inverse index storage
- QString buf = Misc::segmentname(segment, QLatin1String(".frq"));
- freq = directory->createOutput(buf);
-
- buf = Misc::segmentname(segment, QLatin1String(".prx"));
- prox = directory->createOutput(buf);
-
- tis = _CLNEW TermInfosWriter(directory, segment, fieldInfos,
- termIndexInterval);
- TermInfo* ti = _CLNEW TermInfo();
- const TCHAR* currentField = NULL;
- for (int32_t i = 0; i < postingsLength; i++) {
- Posting* posting = postings[i];
-
- // add an entry to the dictionary with pointers to prox and freq files
- ti->set(1, freq->getFilePointer(), prox->getFilePointer(), -1);
- tis->add(posting->term, ti);
-
- // add an entry to the freq file
- int32_t postingFreq = posting->freq;
- if (postingFreq == 1) // optimize freq=1
- freq->writeVInt(1); // set low bit of doc num.
- else {
- freq->writeVInt(0); // the document number
- freq->writeVInt(postingFreq); // frequency in doc
- }
-
- int32_t lastPosition = 0; // write positions
- for (int32_t j = 0; j < postingFreq; ++j) { // use delta-encoding
- prox->writeVInt(posting->positions.values[j] - lastPosition);
- lastPosition = posting->positions.values[j];
- }
-
- // check to see if we switched to a new field
- const TCHAR* termField = posting->term->field();
- if ( currentField == NULL || _tcscmp(currentField,termField) != 0 ) {
- //todo, can we do an intern'd check?
- // changing field - see if there is something to save
- currentField = termField;
- FieldInfo* fi = fieldInfos->fieldInfo(currentField);
-
- if (fi->storeTermVector) {
- if (termVectorWriter == NULL) {
- termVectorWriter = _CLNEW TermVectorsWriter(directory,
- segment, fieldInfos);
- termVectorWriter->openDocument();
- }
- termVectorWriter->openField(currentField);
- } else if (termVectorWriter != NULL) {
- termVectorWriter->closeField();
- }
- }
- if (termVectorWriter != NULL && termVectorWriter->isFieldOpen()) {
- termVectorWriter->addTerm(posting->term->text(), postingFreq,
- &posting->positions, &posting->offsets);
- }
- }
- if (termVectorWriter != NULL)
- termVectorWriter->closeDocument();
- _CLDELETE(ti);
- } _CLFINALLY (
- const char* err = NULL;
- int32_t ierr = 0;
-
- // make an effort to close all streams we can but remember and re-throw
- // the first exception encountered in this process
- __DOCLOSE(freq);
- __DOCLOSE(prox);
- __DOCLOSE(tis);
- __DOCLOSE(termVectorWriter);
- if (err != NULL)
- _CLTHROWA(ierr,err);
- );
-}
-
-void DocumentWriter::writeNorms(const QString& segment)
-{
- for(int32_t n = 0; n < fieldInfos->size(); n++){
- FieldInfo* fi = fieldInfos->fieldInfo(n);
- if(fi->isIndexed && !fi->omitNorms) {
- qreal norm = fieldBoosts[n] * similarity->lengthNorm(
- fi->name, fieldLengths[n]);
-
- QString fn(segment + QLatin1String(".f%1"));
- IndexOutput* norms = directory->createOutput(fn.arg(n));
- try {
- norms->writeByte(CL_NS(search)::Similarity::encodeNorm(norm));
- }_CLFINALLY (
- norms->close();
- _CLDELETE(norms);
- )
- }
- }
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.h b/src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.h
deleted file mode 100644
index 2d1b70279..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/DocumentWriter.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_DocumentWriter_
-#define _lucene_index_DocumentWriter_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/store/Directory.h"
-#include "FieldInfos.h"
-#include "IndexWriter.h"
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/document/Field.h"
-#include "TermInfo.h"
-#include "CLucene/search/Similarity.h"
-#include "TermInfosWriter.h"
-#include "FieldsWriter.h"
-#include "Term.h"
-
-CL_NS_DEF(index)
-
-class DocumentWriter : LUCENE_BASE
-{
-public:
- // info about a Term in a doc
- class Posting : LUCENE_BASE
- {
- public:
- Term* term; // the Term
- int32_t freq; // its frequency in doc
- Array<int32_t> positions; // positions it occurs at
- Array<TermVectorOffsetInfo> offsets;
-
- Posting(Term* t, const int32_t position, TermVectorOffsetInfo* offset);
- ~Posting();
- };
-
-private:
- CL_NS(analysis)::Analyzer* analyzer;
- CL_NS(store)::Directory* directory;
- FieldInfos* fieldInfos; //array
- const int32_t maxFieldLength;
- CL_NS(search)::Similarity* similarity;
- int32_t termIndexInterval;
-
- // Keys are Terms, values are Postings.
- // Used to buffer a document before it is written to the index.
- typedef CL_NS(util)::CLHashtable<Term*, Posting*, Term::Compare,
- Term::Equals> PostingTableType;
- PostingTableType postingTable;
- int32_t* fieldLengths; //array
- int32_t* fieldPositions; //array
- int32_t* fieldOffsets; //array
- qreal* fieldBoosts; //array
-
- Term* termBuffer;
-public:
- /** This ctor used by test code only.
- *
- * @param directory The directory to write the document information to
- * @param analyzer The analyzer to use for the document
- * @param similarity The Similarity function
- * @param maxFieldLength The maximum number of tokens a field may have
- */
- DocumentWriter(CL_NS(store)::Directory* d, CL_NS(analysis)::Analyzer* a,
- CL_NS(search)::Similarity* similarity, const int32_t maxFieldLength);
-
- DocumentWriter(CL_NS(store)::Directory* directory,
- CL_NS(analysis)::Analyzer* analyzer, IndexWriter* writer);
- ~DocumentWriter();
-
- void addDocument(const QString& segment, CL_NS(document)::Document* doc);
-
-
-private:
- // Tokenizes the fields of a document into Postings.
- void invertDocument(const CL_NS(document)::Document* doc);
-
- void addPosition(const TCHAR* field, const TCHAR* text,
- const int32_t position, TermVectorOffsetInfo* offset);
-
- void sortPostingTable(Posting**& array, int32_t& arraySize);
-
- static void quickSort(Posting**& postings, const int32_t lo, const int32_t hi);
-
- void writePostings(Posting** postings, const int32_t postingsLength,
- const QString& segment);
-
- void writeNorms(const QString& segment);
-
- void clearPostingTable();
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfo.h b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfo.h
deleted file mode 100644
index 387c4a6ac..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfo.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_FieldInfo_
-#define _lucene_index_FieldInfo_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#error "This header is deprecated, use FieldInfos.h instead"
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.cpp
deleted file mode 100644
index f132ed9ea..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "FieldInfos.h"
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/document/Field.h"
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/util/StringIntern.h"
-
-CL_NS_USE(store)
-CL_NS_USE(document)
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-FieldInfo::FieldInfo(const TCHAR* _fieldName, bool _isIndexed,
- int32_t _fieldNumber, bool _storeTermVector, bool _storeOffsetWithTermVector,
- bool _storePositionWithTermVector, bool _omitNorms)
- : name(CLStringIntern::intern(_fieldName CL_FILELINE))
- , isIndexed(_isIndexed)
- , number(_fieldNumber)
- , storeTermVector(_storeTermVector)
- , storeOffsetWithTermVector(_storeOffsetWithTermVector)
- , storePositionWithTermVector(_storeTermVector)
- , omitNorms(_omitNorms)
-{
-}
-
-FieldInfo::~FieldInfo()
-{
- CL_NS(util)::CLStringIntern::unintern(name);
-}
-
-// #pragma mark -- FieldInfos
-
-FieldInfos::FieldInfos()
- : byName(false, false)
- , byNumber(true)
-{
-}
-
-FieldInfos::~FieldInfos()
-{
- byName.clear();
- byNumber.clear();
-}
-
-FieldInfos::FieldInfos(Directory* d, const QString& name)
- : byName(false, false)
- , byNumber(true)
-{
- IndexInput* input = d->openInput(name);
- try {
- read(input);
- } _CLFINALLY (
- input->close();
- _CLDELETE(input);
- );
-}
-
-void FieldInfos::add(const Document* doc)
-{
- DocumentFieldEnumeration* fields = doc->fields();
- Field* field;
- while (fields->hasMoreElements()) {
- field = fields->nextElement();
- add(field->name(), field->isIndexed(), field->isTermVectorStored());
- }
- _CLDELETE(fields);
-}
-
-void FieldInfos::add(const TCHAR* name, bool isIndexed, bool storeTermVector,
- bool storePositionWithTermVector, bool storeOffsetWithTermVector, bool omitNorms)
-{
- FieldInfo* fi = fieldInfo(name);
- if (fi == NULL) {
- addInternal(name, isIndexed, storeTermVector,
- storePositionWithTermVector,
- storeOffsetWithTermVector, omitNorms);
- } else {
- if (fi->isIndexed != isIndexed) {
- // once indexed, always index
- fi->isIndexed = true;
- }
-
- if (fi->storeTermVector != storeTermVector) {
- // once vector, always vector
- fi->storeTermVector = true;
- }
-
- if (fi->storePositionWithTermVector != storePositionWithTermVector) {
- // once vector, always vector
- fi->storePositionWithTermVector = true;
- }
-
- if (fi->storeOffsetWithTermVector != storeOffsetWithTermVector) {
- // once vector, always vector
- fi->storeOffsetWithTermVector = true;
- }
-
- if (fi->omitNorms != omitNorms) {
- // once norms are stored, always store
- fi->omitNorms = false;
- }
- }
-}
-
-void FieldInfos::add(const TCHAR** names, bool isIndexed, bool storeTermVectors,
- bool storePositionWithTermVector, bool storeOffsetWithTermVector, bool omitNorms)
-{
- int32_t i=0;
- while (names[i] != NULL) {
- add(names[i], isIndexed, storeTermVectors, storePositionWithTermVector,
- storeOffsetWithTermVector, omitNorms);
- ++i;
- }
-}
-
-int32_t FieldInfos::fieldNumber(const TCHAR* fieldName) const
-{
- FieldInfo* fi = fieldInfo(fieldName);
- return (fi != NULL) ? fi->number : -1;
-}
-
-FieldInfo* FieldInfos::fieldInfo(const TCHAR* fieldName) const
-{
- return byName.get(fieldName);
-}
-
-const TCHAR* FieldInfos::fieldName(const int32_t fieldNumber) const
-{
- FieldInfo* fi = fieldInfo(fieldNumber);
- return (fi == NULL) ? LUCENE_BLANK_STRING : fi->name;
-}
-
-FieldInfo* FieldInfos::fieldInfo(const int32_t fieldNumber) const
-{
- if (fieldNumber < 0 || (size_t)fieldNumber >= byNumber.size())
- return NULL;
- return byNumber[fieldNumber];
-}
-
-int32_t FieldInfos::size() const
-{
- return byNumber.size();
-}
-
-void FieldInfos::write(Directory* d, const QString& name) const
-{
- IndexOutput* output = d->createOutput(name);
- try {
- write(output);
- } _CLFINALLY (
- output->close();
- _CLDELETE(output);
- );
-}
-
-void FieldInfos::write(IndexOutput* output) const
-{
- output->writeVInt(size());
- FieldInfo* fi;
- uint8_t bits;
- for (int32_t i = 0; i < size(); ++i) {
- fi = fieldInfo(i);
- bits = 0x0;
- if (fi->isIndexed)
- bits |= IS_INDEXED;
-
- if (fi->storeTermVector)
- bits |= STORE_TERMVECTOR;
-
- if (fi->storePositionWithTermVector)
- bits |= STORE_POSITIONS_WITH_TERMVECTOR;
-
- if (fi->storeOffsetWithTermVector)
- bits |= STORE_OFFSET_WITH_TERMVECTOR;
-
- if (fi->omitNorms)
- bits |= OMIT_NORMS;
-
- output->writeString(fi->name, _tcslen(fi->name));
- output->writeByte(bits);
- }
-}
-
-void FieldInfos::read(IndexInput* input)
-{
- int32_t size = input->readVInt();
- for (int32_t i = 0; i < size; ++i) {
- // we could read name into a string buffer, but we can't be sure what
- // the maximum field length will be.
- TCHAR* name = input->readString();
- uint8_t bits = input->readByte();
- bool isIndexed = (bits & IS_INDEXED) != 0;
- bool storeTermVector = (bits & STORE_TERMVECTOR) != 0;
- bool storePositionsWithTermVector =
- (bits & STORE_POSITIONS_WITH_TERMVECTOR) != 0;
- bool storeOffsetWithTermVector = (bits & STORE_OFFSET_WITH_TERMVECTOR) != 0;
- bool omitNorms = (bits & OMIT_NORMS) != 0;
-
- addInternal(name, isIndexed, storeTermVector,
- storePositionsWithTermVector, storeOffsetWithTermVector, omitNorms);
- _CLDELETE_CARRAY(name);
- }
-}
-
-void FieldInfos::addInternal(const TCHAR* name, bool isIndexed,
- bool storeTermVector, bool storePositionWithTermVector,
- bool storeOffsetWithTermVector, bool omitNorms)
-{
- FieldInfo* fi = _CLNEW FieldInfo(name, isIndexed, byNumber.size(),
- storeTermVector, storePositionWithTermVector, storeOffsetWithTermVector,
- omitNorms);
- byNumber.push_back(fi);
- byName.put(fi->name, fi);
-}
-
-bool FieldInfos::hasVectors() const
-{
- for (int32_t i = 0; i < size(); i++) {
- if (fieldInfo(i)->storeTermVector)
- return true;
- }
- return false;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.h b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.h
deleted file mode 100644
index 5ae8f3468..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldInfos.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_FieldInfos_
-#define _lucene_index_FieldInfos_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/VoidList.h"
-
-CL_NS_DEF(index)
-
-class FieldInfo : LUCENE_BASE
-{
- public:
- //name of the field
- const TCHAR* name;
-
- //Is field indexed? true = yes false = no
- bool isIndexed;
-
- //field number
- const int32_t number;
-
- // true if term vector for this field should be stored
- bool storeTermVector;
- bool storeOffsetWithTermVector;
- bool storePositionWithTermVector;
-
- bool omitNorms; // omit norms associated with indexed fields
-
- //Func - Constructor
- // Initialises FieldInfo.
- // na holds the name of the field
- // tk indicates whether this field is indexed or not
- // nu indicates its number
- //Pre - na != NULL and holds the name of the field
- // tk is true or false
- // number >= 0
- //Post - The FieldInfo instance has been created and initialized.
- // name holds the duplicated string of na
- // isIndexed = tk
- // number = nu
- FieldInfo(const TCHAR* fieldName, bool isIndexed, int32_t fieldNumber,
- bool storeTermVector, bool storeOffsetWithTermVector,
- bool storePositionWithTermVector, bool omitNorms);
-
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
- ~FieldInfo();
-};
-
-/* Access to the Field Info file that describes document fields and whether or
- * not they are indexed. Each segment has a separate Field Info file. Objects
- * of this class are thread-safe for multiple readers, but only one thread can
- * be adding documents at a time, with no other reader or writer threads
- * accessing this object.
-*/
-class FieldInfos : LUCENE_BASE
-{
-private:
- // we now use internd field names, so we can use the voidCompare to
- // directly compare the strings
- typedef CL_NS(util)::CLHashMap<const TCHAR*, FieldInfo*,
- CL_NS(util)::Compare::TChar,CL_NS(util)::Equals::TChar > defByName;
- defByName byName;
-
- CL_NS(util)::CLArrayList<FieldInfo*,
- CL_NS(util)::Deletor::Object<FieldInfo> > byNumber;
-
-public:
- enum {
- IS_INDEXED = 0x1,
- STORE_TERMVECTOR = 0x2,
- STORE_POSITIONS_WITH_TERMVECTOR = 0x4,
- STORE_OFFSET_WITH_TERMVECTOR = 0x8,
- OMIT_NORMS = 0x10
- };
-
- FieldInfos();
- ~FieldInfos();
-
- // Construct a FieldInfos object using the directory and the name of the
- // file IndexInput
- // @param d The directory to open the IndexInput from
- // @param name Name of the file to open the IndexInput from in the Directory
- // @throws IOException
- // @see #read
- FieldInfos(CL_NS(store)::Directory* d, const QString& name);
-
- int32_t fieldNumber(const TCHAR* fieldName)const;
-
- // Return the fieldinfo object referenced by the fieldNumber.
- // @param fieldNumber
- // @return the FieldInfo object or null when the given fieldNumber
- // doesn't exist.
- FieldInfo* fieldInfo(const TCHAR* fieldName) const;
-
- // Return the fieldName identified by its number.
- // @param fieldNumber
- // @return the fieldName or an empty string when the field
- // with the given number doesn't exist.
- const TCHAR* fieldName(const int32_t fieldNumber) const;
-
- FieldInfo* fieldInfo(const int32_t fieldNumber) const;
-
- int32_t size()const;
-
- bool hasVectors() const;
-
- // Adds field info for a Document.
- void add(const CL_NS(document)::Document* doc);
-
- // Merges in information from another FieldInfos.
- void add(FieldInfos* other);
-
-
- /** If the field is not yet known, adds it. If it is known, checks to make
- * sure that the isIndexed flag is the same as was given previously for this
- * field. If not - marks it as being indexed. Same goes for the TermVector
- * parameters.
- *
- * @param name The name of the field
- * @param isIndexed true if the field is indexed
- * @param storeTermVector true if the term vector should be stored
- * @param storePositionWithTermVector true if the term vector with positions should be stored
- * @param storeOffsetWithTermVector true if the term vector with offsets should be stored
- */
- void add(const TCHAR* name, bool isIndexed, bool storeTermVector = false,
- bool storePositionWithTermVector = false,
- bool storeOffsetWithTermVector = false, bool omitNorms = false);
-
- /**
- * Assumes the fields are not storing term vectors
- * @param names The names of the fields
- * @param isIndexed true if the field is indexed
- * @param storeTermVector true if the term vector should be stored
- *
- * @see #add(String, boolean)
- */
- void add(const TCHAR** names, bool isIndexed, bool storeTermVector = false,
- bool storePositionWithTermVector = false,
- bool storeOffsetWithTermVector = false, bool omitNorms = false);
-
- void write(CL_NS(store)::Directory* d, const QString& name) const;
- void write(CL_NS(store)::IndexOutput* output) const;
-
-private:
- void read(CL_NS(store)::IndexInput* input);
- void addInternal(const TCHAR* name, bool isIndexed, bool storeTermVector,
- bool storePositionWithTermVector, bool storeOffsetWithTermVector,
- bool omitNorms);
-
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.cpp
deleted file mode 100644
index c9d71ce2f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "FieldsReader.h"
-
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/document/Field.h"
-#include "FieldInfos.h"
-#include "FieldsWriter.h"
-
-CL_NS_USE(store)
-CL_NS_USE(document)
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-FieldsReader::FieldsReader(Directory* d, const QString& segment, FieldInfos* fn)
- : fieldInfos(fn)
-{
- //Func - Constructor
- //Pre - d contains a valid reference to a Directory
- // segment != NULL
- // fn contains a valid reference to a FieldInfos
- //Post - The instance has been created
-
- CND_PRECONDITION(!segment.isEmpty(), "segment != NULL");
-
- QString buf = Misc::segmentname(segment, QLatin1String(".fdt"));
- fieldsStream = d->openInput(buf);
-
- buf = Misc::segmentname(segment, QLatin1String(".fdx"));
- indexStream = d->openInput(buf);
-
- _size = (int32_t)indexStream->length() / 8;
-}
-
-FieldsReader::~FieldsReader()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
- close();
-}
-
-void FieldsReader::close()
-{
- //Func - Closes the FieldsReader
- //Pre - true
- //Post - The FieldsReader has been closed
- if (fieldsStream) {
- fieldsStream->close();
- _CLDELETE(fieldsStream);
- }
-
- if(indexStream) {
- indexStream->close();
- _CLDELETE(indexStream);
- }
-}
-
-int32_t FieldsReader::size() const
-{
- return _size;
-}
-
-bool FieldsReader::doc(int32_t n, Document* doc)
-{
- if ( n * 8L > indexStream->length() )
- return false;
-
- indexStream->seek(n * 8L);
- int64_t position = indexStream->readLong();
- fieldsStream->seek(position);
-
- int32_t numFields = fieldsStream->readVInt();
- for (int32_t i = 0; i < numFields; i++) {
- int32_t fieldNumber = fieldsStream->readVInt();
- FieldInfo* fi = fieldInfos->fieldInfo(fieldNumber);
-
- if ( fi == NULL )
- _CLTHROWA(CL_ERR_IO, "Field stream is invalid");
-
- uint8_t bits = fieldsStream->readByte();
- if ((bits & FieldsWriter::FIELD_IS_BINARY) != 0) {
- int32_t fieldLen = fieldsStream->readVInt();
- FieldsReader::FieldsStreamHolder* subStream = new
- FieldsReader::FieldsStreamHolder(fieldsStream, fieldLen);
- uint8_t bits = Field::STORE_YES;
- Field* f = _CLNEW Field(
- fi->name, // name
- subStream, // read value
- bits);
-
- doc->add(*f);
-
- //now skip over the rest of the field
- if (fieldsStream->getFilePointer() + fieldLen
- == fieldsStream->length()) {
- // set to eof
- fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen - 1);
- fieldsStream->readByte();
- } else {
- fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen);
- }
- } else {
- uint8_t bits = Field::STORE_YES;
- if (fi->isIndexed && (bits & FieldsWriter::FIELD_IS_TOKENIZED)!=0 )
- bits |= Field::INDEX_TOKENIZED;
- else if (fi->isIndexed && (bits & FieldsWriter::FIELD_IS_TOKENIZED) == 0)
- bits |= Field::INDEX_UNTOKENIZED;
- else
- bits |= Field::INDEX_NO;
-
- if (fi->storeTermVector) {
- if (fi->storeOffsetWithTermVector) {
- if (fi->storePositionWithTermVector) {
- bits |= Field::TERMVECTOR_WITH_OFFSETS;
- bits |= Field::TERMVECTOR_WITH_POSITIONS;
- } else {
- bits |= Field::TERMVECTOR_WITH_OFFSETS;
- }
- } else if (fi->storePositionWithTermVector) {
- bits |= Field::TERMVECTOR_WITH_POSITIONS;
- } else {
- bits |= Field::TERMVECTOR_YES;
- }
- } else {
- bits |= Field::TERMVECTOR_NO;
- }
-
- if ( (bits & FieldsWriter::FIELD_IS_COMPRESSED) != 0 ) {
- bits |= Field::STORE_COMPRESS;
- int32_t fieldLen = fieldsStream->readVInt();
- FieldsStreamHolder* subStream = new
- FieldsStreamHolder(fieldsStream, fieldLen);
-
- // TODO: we dont have gzip inputstream available, must alert
- // user to somehow use a gzip inputstream
- Field* f = _CLNEW Field(
- fi->name, // name
- subStream, // read value
- bits);
-
- f->setOmitNorms(fi->omitNorms);
- doc->add(*f);
-
- // now skip over the rest of the field
- if (fieldsStream->getFilePointer() + fieldLen
- == fieldsStream->length()) {
- //set to eof
- fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen - 1);
- fieldsStream->readByte();
- } else {
- fieldsStream->seek(fieldsStream->getFilePointer() + fieldLen);
- }
- } else {
- TCHAR* fvalue = fieldsStream->readString(true);
- Field* f = _CLNEW Field(
- fi->name, // name
- fvalue, // read value
- bits);
- // TODO: could optimise this
- _CLDELETE_CARRAY(fvalue);
- f->setOmitNorms(fi->omitNorms);
- doc->add(*f);
- }
- }
- }
- return true;
-}
-
-FieldsReader::FieldsStreamHolder::FieldsStreamHolder(IndexInput* indexInput,
- int32_t subLength)
-{
- this->indexInput = indexInput->clone();
- this->indexInputStream = new IndexInputStream(this->indexInput);
- this->subStream = new jstreams::SubInputStream<char>(indexInputStream,
- subLength);
-
- this->size = subStream->getSize();
- this->position = subStream->getPosition();
- this->error = subStream->getError();
- this->status = subStream->getStatus();
-}
-
-FieldsReader::FieldsStreamHolder::~FieldsStreamHolder()
-{
- delete subStream;
- delete indexInputStream;
-
- indexInput->close();
- _CLDELETE(indexInput);
-}
-
-int32_t FieldsReader::FieldsStreamHolder::read(const char*& start, int32_t _min,
- int32_t _max)
-{
- int32_t ret = subStream->read(start,_min,_max);
- this->position = subStream->getPosition();
- this->error = subStream->getError();
- this->status = subStream->getStatus();
- return ret;
-}
-
-int64_t FieldsReader::FieldsStreamHolder::skip(int64_t ntoskip)
-{
- int64_t ret = subStream->skip(ntoskip);
- this->position = subStream->getPosition();
- this->error = subStream->getError();
- this->status = subStream->getStatus();
- return ret;
-}
-
-int64_t FieldsReader::FieldsStreamHolder::reset(int64_t pos)
-{
- int64_t ret = subStream->reset(pos);
- this->position = subStream->getPosition();
- this->error = subStream->getError();
- this->status = subStream->getStatus();
- return ret;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.h b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.h
deleted file mode 100644
index 79308e907..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsReader.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_FieldsReader_
-#define _lucene_index_FieldsReader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/util/subinputstream.h"
-#include "CLucene/store/IndexInput.h"
-
-CL_NS_DEF(index)
-
-class FieldInfos;
-
-class FieldsReader : LUCENE_BASE
-{
-private:
- const FieldInfos* fieldInfos;
- CL_NS(store)::IndexInput* fieldsStream;
- CL_NS(store)::IndexInput* indexStream;
- int32_t _size;
-
- class FieldsStreamHolder : public jstreams::StreamBase<char>
- {
- CL_NS(store)::IndexInput* indexInput;
- CL_NS(store)::IndexInputStream* indexInputStream;
- jstreams::SubInputStream<char>* subStream;
-
- public:
- FieldsStreamHolder(CL_NS(store)::IndexInput* indexInput, int32_t subLength);
- ~FieldsStreamHolder();
- int32_t read(const char*& start, int32_t _min, int32_t _max);
- int64_t skip(int64_t ntoskip);
- int64_t reset(int64_t pos);
- };
-
-public:
- FieldsReader(CL_NS(store)::Directory* d, const QString& segment, FieldInfos* fn);
- ~FieldsReader();
- void close();
- int32_t size() const;
- // loads the fields from n'th document into doc. returns true on success.
- bool doc(int32_t n, CL_NS(document)::Document* doc);
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.cpp
deleted file mode 100644
index d09845b1a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "FieldsWriter.h"
-
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/IndexOutput.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/document/Field.h"
-#include "FieldInfos.h"
-
-CL_NS_USE(store)
-CL_NS_USE(util)
-CL_NS_USE(document)
-CL_NS_DEF(index)
-
-FieldsWriter::FieldsWriter(Directory* d, const QString& segment, FieldInfos* fn)
- : fieldInfos(fn)
-{
- //Func - Constructor
- //Pre - d contains a valid reference to a directory
- // segment != NULL and contains the name of the segment
- //Post - fn contains a valid reference toa a FieldInfos
-
- CND_PRECONDITION(!segment.isEmpty(), "segment is NULL");
-
- QString buf = Misc::segmentname(segment, QLatin1String(".fdt"));
- fieldsStream = d->createOutput(buf);
-
- buf = Misc::segmentname(segment, QLatin1String(".fdx"));
- indexStream = d->createOutput(buf);
-
- CND_CONDITION(indexStream != NULL, "indexStream is NULL");
-}
-
-FieldsWriter::~FieldsWriter()
-{
- //Func - Destructor
- //Pre - true
- //Post - Instance has been destroyed
-
- close();
-}
-
-void FieldsWriter::close()
-{
- //Func - Closes all streams and frees all resources
- //Pre - true
- //Post - All streams have been closed all resources have been freed
-
- //Check if fieldsStream is valid
- if (fieldsStream) {
- //Close fieldsStream
- fieldsStream->close();
- _CLDELETE(fieldsStream);
- }
-
- //Check if indexStream is valid
- if (indexStream) {
- //Close indexStream
- indexStream->close();
- _CLDELETE(indexStream);
- }
-}
-
-void FieldsWriter::addDocument(Document* doc)
-{
- //Func - Adds a document
- //Pre - doc contains a valid reference to a Document
- // indexStream != NULL
- // fieldsStream != NULL
- //Post - The document doc has been added
-
- CND_PRECONDITION(indexStream != NULL, "indexStream is NULL");
- CND_PRECONDITION(fieldsStream != NULL, "fieldsStream is NULL");
-
- indexStream->writeLong(fieldsStream->getFilePointer());
-
- int32_t storedCount = 0;
- DocumentFieldEnumeration* fields = doc->fields();
- while (fields->hasMoreElements()) {
- Field* field = fields->nextElement();
- if (field->isStored())
- storedCount++;
- }
- _CLDELETE(fields);
- fieldsStream->writeVInt(storedCount);
-
- fields = doc->fields();
- while (fields->hasMoreElements()) {
- Field* field = fields->nextElement();
- if (field->isStored()) {
- fieldsStream->writeVInt(fieldInfos->fieldNumber(field->name()));
-
- uint8_t bits = 0;
- if (field->isTokenized())
- bits |= FieldsWriter::FIELD_IS_TOKENIZED;
- if (field->isBinary())
- bits |= FieldsWriter::FIELD_IS_BINARY;
- if (field->isCompressed())
- bits |= FieldsWriter::FIELD_IS_COMPRESSED;
-
- fieldsStream->writeByte(bits);
-
- if ( field->isCompressed()) {
- _CLTHROWA(CL_ERR_Runtime,
- "CLucene does not directly support compressed fields. "
- "Write a compressed byte array instead");
- } else {
- // FEATURE: this problem in Java Lucene too, if using Reader,
- // data is not stored.
- //
- // TODO: this is a logic bug...
- // if the field is stored, and indexed, and is using a reader
- // the field wont get indexed
- //
- // if we could write zero prefixed vints (therefore static
- // length), then we could write a reader directly to the field
- // indexoutput and then go back and write the data length.
- // however this is not supported in lucene yet...
- // if this is ever implemented, then it would make sense to
- // also be able to combine the FieldsWriter and
- // DocumentWriter::invertDocument process, and use a
- // streamfilter to write the field data while the documentwrite
- // analyses the document! how cool would that be! it would cut
- // out all these buffers!!!
-
- // compression is disabled for the current field
- if (field->isBinary()) {
- // TODO: since we currently don't support static length vints,
- // we have to read the entire stream into memory first.... ugly!
- jstreams::StreamBase<char>* stream = field->streamValue();
- const char* sd;
- // how do we make sure we read the entire index in now???
- // TODO: we need to have a max amount, and guarantee its all
- // in or throw an error...
- int32_t rl = stream->read(sd,10000000,0);
-
- if ( rl < 0 ) {
- // TODO: could we detect this earlier and not actually
- // write the field??
- fieldsStream->writeVInt(0);
- } else {
- // TODO: if this int could be written with a constant
- // length, then the stream could be read and written a
- // bit at a time then the length is re-written at the end.
- fieldsStream->writeVInt(rl);
- fieldsStream->writeBytes((uint8_t*)sd, rl);
- }
- } else if (field->stringValue() == NULL ) {
- // we must be using readerValue
- CND_PRECONDITION(!field->isIndexed(),
- "Cannot store reader if it is indexed too")
- Reader* r = field->readerValue();
-
- //read the entire string
- const TCHAR* rv;
- int64_t rl = r->read(rv, LUCENE_INT32_MAX_SHOULDBE);
- if ( rl > LUCENE_INT32_MAX_SHOULDBE )
- _CLTHROWA(CL_ERR_Runtime, "Field length too long");
- else if ( rl < 0 )
- rl = 0;
-
- fieldsStream->writeString( rv, (int32_t)rl);
- } else if (field->stringValue() != NULL ) {
- fieldsStream->writeString(field->stringValue(),
- _tcslen(field->stringValue()));
- } else {
- _CLTHROWA(CL_ERR_Runtime, "No values are set for the field");
- }
- }
- }
- }
- _CLDELETE(fields);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.h b/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.h
deleted file mode 100644
index b43b66b15..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/FieldsWriter.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_FieldsWriter_
-#define _lucene_index_FieldsWriter_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/document/Document.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/IndexOutput.h"
-
-CL_NS_DEF(index)
-
-class FieldInfos;
-
-class FieldsWriter : LUCENE_BASE
-{
-private:
- FieldInfos* fieldInfos;
-
- CL_NS(store)::IndexOutput* fieldsStream;
- CL_NS(store)::IndexOutput* indexStream;
-
-public:
- LUCENE_STATIC_CONSTANT(uint8_t, FIELD_IS_TOKENIZED = 0x1);
- LUCENE_STATIC_CONSTANT(uint8_t, FIELD_IS_BINARY = 0x2);
- LUCENE_STATIC_CONSTANT(uint8_t, FIELD_IS_COMPRESSED = 0x4);
-
- FieldsWriter(CL_NS(store)::Directory* d, const QString& segment, FieldInfos* fn);
- ~FieldsWriter();
-
- void close();
-
- void addDocument(CL_NS(document)::Document* doc);
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.cpp
deleted file mode 100644
index 92b5efe21..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "IndexModifier.h"
-
-#include "Term.h"
-#include "IndexWriter.h"
-#include "IndexReader.h"
-
-CL_NS_DEF(index)
-CL_NS_USE(util)
-CL_NS_USE(store)
-CL_NS_USE(analysis)
-CL_NS_USE(document)
-
-IndexModifier::IndexModifier(Directory* directory, Analyzer* analyzer, bool create) {
- init(directory, analyzer, create);
-}
-
-IndexModifier::IndexModifier(const QString& dirName, Analyzer* analyzer, bool create) {
- Directory* dir = FSDirectory::getDirectory(dirName, create);
- init(dir, analyzer, create);
-}
-
-void IndexModifier::init(Directory* directory, Analyzer* analyzer, bool create) {
- indexWriter = NULL;
- indexReader = NULL;
- this->analyzer = analyzer;
- open = false;
-
- useCompoundFile = true;
- int32_t maxBufferedDocs = IndexWriter::DEFAULT_MAX_BUFFERED_DOCS;
- this->maxFieldLength = IndexWriter::DEFAULT_MAX_FIELD_LENGTH;
- int32_t mergeFactor = IndexWriter::DEFAULT_MERGE_FACTOR;
-
- this->directory = _CL_POINTER(directory);
- createIndexReader();
- open = true;
-}
-
-IndexModifier::~IndexModifier(){
- close();
-}
-
-void IndexModifier::assureOpen() const{
- if (!open) {
- _CLTHROWA(CL_ERR_IllegalState,"Index is closed");
- }
-}
-
-void IndexModifier::createIndexWriter() {
- if (indexWriter == NULL) {
- if (indexReader != NULL) {
- indexReader->close();
- _CLDELETE(indexReader);
- }
- indexWriter = _CLNEW IndexWriter(directory, analyzer, false);
- indexWriter->setUseCompoundFile(useCompoundFile);
- //indexWriter->setMaxBufferedDocs(maxBufferedDocs);
- indexWriter->setMaxFieldLength(maxFieldLength);
- //indexWriter->setMergeFactor(mergeFactor);
- }
-}
-
-void IndexModifier::createIndexReader() {
- if (indexReader == NULL) {
- if (indexWriter != NULL) {
- indexWriter->close();
- _CLDELETE(indexWriter);
- }
- indexReader = IndexReader::open(directory);
- }
-}
-
-void IndexModifier::flush() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- if (indexWriter != NULL) {
- indexWriter->close();
- _CLDELETE(indexWriter);
- createIndexWriter();
- } else {
- indexReader->close();
- _CLDELETE(indexReader);
- createIndexReader();
- }
-}
-
-void IndexModifier::addDocument(Document* doc, Analyzer* docAnalyzer) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexWriter();
- if (docAnalyzer != NULL)
- indexWriter->addDocument(doc, docAnalyzer);
- else
- indexWriter->addDocument(doc);
-}
-
-int32_t IndexModifier::deleteDocuments(Term* term) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexReader();
- return indexReader->deleteDocuments(term);
-}
-
-void IndexModifier::deleteDocument(int32_t docNum) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexReader();
- indexReader->deleteDocument(docNum);
-}
-
-int32_t IndexModifier::docCount() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- if (indexWriter != NULL)
- return indexWriter->docCount();
- else
- return indexReader->numDocs();
-}
-
-void IndexModifier::optimize() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexWriter();
- indexWriter->optimize();
-}
-
-void IndexModifier::setUseCompoundFile(bool useCompoundFile) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- if (indexWriter != NULL)
- indexWriter->setUseCompoundFile(useCompoundFile);
- this->useCompoundFile = useCompoundFile;
-}
-
-bool IndexModifier::getUseCompoundFile() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexWriter();
- return indexWriter->getUseCompoundFile();
-}
-
-void IndexModifier::setMaxFieldLength(int32_t maxFieldLength) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- if (indexWriter != NULL)
- indexWriter->setMaxFieldLength(maxFieldLength);
- this->maxFieldLength = maxFieldLength;
-}
-
-int32_t IndexModifier::getMaxFieldLength() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexWriter();
- return indexWriter->getMaxFieldLength();
-}
-
-void IndexModifier::setMaxBufferedDocs(int32_t maxBufferedDocs) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- if (indexWriter != NULL)
- indexWriter->setMaxBufferedDocs(maxBufferedDocs);
- this->maxBufferedDocs = maxBufferedDocs;
-}
-
-int32_t IndexModifier::getMaxBufferedDocs() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexWriter();
- return indexWriter->getMaxBufferedDocs();
-}
-void IndexModifier::setMergeFactor(int32_t mergeFactor) {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- if (indexWriter != NULL)
- indexWriter->setMergeFactor(mergeFactor);
- this->mergeFactor = mergeFactor;
-}
-
-int32_t IndexModifier::getMergeFactor() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexWriter();
- return indexWriter->getMergeFactor();
-}
-
-void IndexModifier::close() {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- if (indexWriter != NULL) {
- indexWriter->close();
- _CLDELETE(indexWriter);
- } else {
- indexReader->close();
- _CLDELETE(indexReader);
- }
- _CLDECDELETE(directory)
- open = false;
-}
-
-QString IndexModifier::toString() const
-{
- QString ret(QLatin1String("Index@"));
- return ret.append(directory->toString());
-}
-
-
-
-int64_t IndexModifier::getCurrentVersion() const{
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- return IndexReader::getCurrentVersion(directory);
-}
-
-TermDocs* IndexModifier::termDocs(Term* term){
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexReader();
- return indexReader->termDocs(term);
-}
-
-TermEnum* IndexModifier::terms(Term* term){
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexReader();
- if ( term != NULL )
- return indexReader->terms(term);
- else
- return indexReader->terms();
-}
-
-
- CL_NS(document)::Document* IndexModifier::document(const int32_t n){
- Document* ret = _CLNEW Document;
- if (!document(n,ret) )
- _CLDELETE(ret);
- return ret;
- }
-bool IndexModifier::document(int32_t n, CL_NS(document)::Document* doc){
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- assureOpen();
- createIndexReader();
- return indexReader->document(n, doc);
-}
-CL_NS(store)::Directory* IndexModifier::getDirectory(){
- return directory;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.h b/src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.h
deleted file mode 100644
index a4f59ce8b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexModifier.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_IndexModifier_
-#define _lucene_index_IndexModifier_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/analysis/AnalysisHeader.h"
-
-CL_NS_DEF(index)
-
-class IndexReader;
-class IndexWriter;
-class Term;
-class TermDocs;
-class TermEnum;
-
-/**
-* A class to modify an index, i.e. to delete and add documents. This
-* class hides {@link IndexReader} and {@link IndexWriter} so that you
-* do not need to care about implementation details such as that adding
-* documents is done via IndexWriter and deletion is done via IndexReader.
-*
-* <p>Note that you cannot create more than one <code>IndexModifier</code> object
-* on the same directory at the same time.
-*
-* <p>Example usage:
-*
-* <div align="left" class="java">
-* <table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-* <tr>
-* <td nowrap="nowrap" valign="top" align="left">
-* <code>
-* //note this code will leak memory :)
-* Analyzer* analyzer = <b>new</b> StandardAnalyzer();<br/>
-* // create an index in /tmp/index, overwriting an existing one:<br/>
-* IndexModifier* indexModifier = <b>new</b> IndexModifier("/tmp/index", analyzer, <b>true</b>);<br/>
-* Document* doc = <b>new </b>Document*();<br/>
-* doc->add(*<b>new </b>Field("id", "1", Field::STORE_YES| Field::INDEX_UNTOKENIZED));<br/>
-* doc->add(*<b>new </b>Field("body", "a simple test", Field::STORE_YES, Field::INDEX_TOKENIZED));<br/>
-* indexModifier->addDocument(doc);<br/>
-* <b>int32_t </b>deleted = indexModifier->deleteDocuments(<b>new </b>Term("id", "1"));<br/>
-* printf("Deleted %d document", deleted);<br/>
-* indexModifier->flush();<br/>
-* printf( "$d docs in index", indexModifier->docCount() );<br/>
-* indexModifier->close();
-* </code></td>
-* </tr>
-* </table>
-* </div>
-*
-* <p>Not all methods of IndexReader and IndexWriter are offered by this
-* class. If you need access to additional methods, either use those classes
-* directly or implement your own class that extends <code>IndexModifier</code>.
-*
-* <p>Although an instance of this class can be used from more than one
-* thread, you will not get the best performance. You might want to use
-* IndexReader and IndexWriter directly for that (but you will need to
-* care about synchronization yourself then).
-*
-* <p>While you can freely mix calls to add() and delete() using this class,
-* you should batch you calls for best performance. For example, if you
-* want to update 20 documents, you should first delete all those documents,
-* then add all the new documents.
-*
-*/
-class IndexModifier : LUCENE_BASE
-{
-protected:
- IndexWriter* indexWriter;
- IndexReader* indexReader;
-
- CL_NS(store)::Directory* directory;
- CL_NS(analysis)::Analyzer* analyzer;
- bool open;
-
- // Lucene defaults:
- bool useCompoundFile;
- int32_t maxBufferedDocs;
- int32_t maxFieldLength;
- int32_t mergeFactor;
-
-public:
-
- /**
- * Open an index with write access.
- *
- * @param directory the index directory
- * @param analyzer the analyzer to use for adding new documents
- * @param create <code>true</code> to create the index or overwrite
- * the existing one; <code>false</code> to append to the existing index
- */
- IndexModifier(CL_NS(store)::Directory* directory,
- CL_NS(analysis)::Analyzer* analyzer, bool create);
-
- ~IndexModifier();
-
- /**
- * Open an index with write access.
- *
- * @param dirName the index directory
- * @param analyzer the analyzer to use for adding new documents
- * @param create <code>true</code> to create the index or overwrite
- * the existing one; <code>false</code> to append to the existing index
- */
- IndexModifier(const QString& dirName, CL_NS(analysis)::Analyzer* analyzer,
- bool create);
-
-protected:
-
- // Initialize an IndexWriter. @throws IOException
- void init(CL_NS(store)::Directory* directory,
- CL_NS(analysis)::Analyzer* analyzer, bool create);
-
- // Throw an IllegalStateException if the index is closed.
- // @throws IllegalStateException
- void assureOpen() const;
-
- // Close the IndexReader and open an IndexWriter. @throws IOException
- void createIndexWriter();
-
- // Close the IndexWriter and open an IndexReader. @throws IOException
- void createIndexReader();
-
-public:
- // Make sure all changes are written to disk. @throws IOException
- void flush();
-
- // Adds a document to this index, using the provided analyzer instead of
- // the one specific in the constructor. If the document contains more than
- // {@link #setMaxFieldLength(int32_t)} terms for a given field, the
- // remainder are discarded.
- // @see IndexWriter#addDocument(Document*, Analyzer*)
- // @throws IllegalStateException if the index is closed
- void addDocument(CL_NS(document)::Document* doc, CL_NS(analysis)::Analyzer*
- docAnalyzer = NULL);
-
-
- /**
- * Deletes all documents containing <code>term</code>.
- * This is useful if one uses a document field to hold a unique ID string for
- * the document. Then to delete such a document, one merely constructs a
- * term with the appropriate field and the unique ID string as its text and
- * passes it to this method. Returns the number of documents deleted.
- * @return the number of documents deleted
- * @see IndexReader#deleteDocuments(Term*)
- * @throws IllegalStateException if the index is closed
- */
- int32_t deleteDocuments(Term* term);
-
- /**
- * Deletes the document numbered <code>docNum</code>.
- * @see IndexReader#deleteDocument(int32_t)
- * @throws IllegalStateException if the index is closed
- */
- void deleteDocument(int32_t docNum);
-
- /**
- * Returns the number of documents currently in this index.
- * @see IndexWriter#docCount()
- * @see IndexReader#numDocs()
- * @throws IllegalStateException if the index is closed
- */
- int32_t docCount();
-
- /**
- * Merges all segments together into a single segment, optimizing an index
- * for search.
- * @see IndexWriter#optimize()
- * @throws IllegalStateException if the index is closed
- */
- void optimize();
-
- /**
- * Setting to turn on usage of a compound file. When on, multiple files
- * for each segment are merged into a single file once the segment creation
- * is finished. This is done regardless of what directory is in use.
- * @see IndexWriter#setUseCompoundFile(bool)
- * @throws IllegalStateException if the index is closed
- */
- void setUseCompoundFile(bool useCompoundFile);
-
- /**
- * @throws IOException
- * @see IndexModifier#setUseCompoundFile(bool)
- */
- bool getUseCompoundFile();
-
- /**
- * The maximum number of terms that will be indexed for a single field in a
- * document. This limits the amount of memory required for indexing, so that
- * collections with very large files will not crash the indexing process by
- * running out of memory.<p/>
- * Note that this effectively truncates large documents, excluding from the
- * index terms that occur further in the document. If you know your source
- * documents are large, be sure to set this value high enough to accomodate
- * the expected size. If you set it to Integer.MAX_VALUE, then the only limit
- * is your memory, but you should anticipate an OutOfMemoryError.<p/>
- * By default, no more than 10,000 terms will be indexed for a field.
- * @see IndexWriter#setMaxFieldLength(int32_t)
- * @throws IllegalStateException if the index is closed
- */
- void setMaxFieldLength(int32_t maxFieldLength);
-
- /**
- * @throws IOException
- * @see IndexModifier#setMaxFieldLength(int32_t)
- */
- int32_t getMaxFieldLength();
-
- /*
- * The maximum number of terms that will be indexed for a single field in a
- * document. This limits the amount of memory required for indexing, so that
- * collections with very large files will not crash the indexing process by
- * running out of memory.<p/>
- * Note that this effectively truncates large documents, excluding from the
- * index terms that occur further in the document. If you know your source
- * documents are large, be sure to set this value high enough to accomodate
- * the expected size. If you set it to Integer.MAX_VALUE, then the only limit
- * is your memory, but you should anticipate an OutOfMemoryError.<p/>
- * By default, no more than 10,000 terms will be indexed for a field.
- * @see IndexWriter#setMaxBufferedDocs(int32_t)
- * @throws IllegalStateException if the index is closed
- */
- void setMaxBufferedDocs(int32_t maxBufferedDocs);
-
- // @see IndexModifier#setMaxBufferedDocs(int32_t) @throws IOException
- int32_t getMaxBufferedDocs();
-
- /*
- * Determines how often segment indices are merged by addDocument(). With
- * smaller values, less RAM is used while indexing, and searches on
- * unoptimized indices are faster, but indexing speed is slower. With larger
- * values, more RAM is used during indexing, and while searches on unoptimized
- * indices are slower, indexing is faster. Thus larger values (&gt; 10) are
- * best for batch index creation, and smaller values (&lt; 10) for indices
- * that are interactively maintained.
- * <p>This must never be less than 2. The default value is 10.
- *
- * @see IndexWriter#setMergeFactor(int32_t)
- * @throws IllegalStateException if the index is closed
- */
- void setMergeFactor(int32_t mergeFactor);
-
- /**
- * @throws IOException
- * @see IndexModifier#setMergeFactor(int32_t)
- */
- int32_t getMergeFactor();
-
- /**
- * Close this index, writing all pending changes to disk.
- *
- * @throws IllegalStateException if the index has been closed before already
- */
- void close();
-
- QString toString() const;
-
- /**
- * Gets the version number of the currently open index.
- */
- int64_t getCurrentVersion() const;
-
- /**
- * Returns an enumeration of all the documents which contain term.
- *
- * Warning: This is not threadsafe. Make sure you lock the modifier object
- * while using the TermDocs. If the IndexReader that the modifier manages
- * is closed, the TermDocs object will fail.
- */
- TermDocs* termDocs(Term* term = NULL);
-
- /**
- * Returns an enumeration of all terms after a given term.
- * If no term is given, an enumeration of all the terms
- * in the index is returned.
- * The enumeration is ordered by Term.compareTo(). Each term
- * is greater than all that precede it in the enumeration.
- *
- * Warning: This is not threadsafe. Make sure you lock the modifier object
- * while using the TermDocs. If the IndexReader that the modifier manages
- * is closed, the Document will be invalid
- */
- TermEnum* terms(Term* term = NULL);
-
- /**
- * Returns the stored fields of the n-th Document in this index.
- *
- * Warning: This is not threadsafe. Make sure you lock the modifier object
- * while using the TermDocs. If the IndexReader that the modifier manages
- * is closed, the Document will be invalid
- */
- bool document(const int32_t n, CL_NS(document)::Document* doc);
- _CL_DEPRECATED(document(i, document))
- CL_NS(document)::Document* document(const int32_t n);
-
- // Returns the directory used by this index.
- CL_NS(store)::Directory* getDirectory();
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.cpp
deleted file mode 100644
index 0f7c2c6f1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.cpp
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-# include <QtCore/QFile>
-# include <QtCore/QStringList>
-
-#include "CLucene/StdHeader.h"
-#include "IndexReader.h"
-#include "IndexWriter.h"
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/FSDirectory.h"
-#include "CLucene/store/Lock.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/search/Similarity.h"
-#include "SegmentInfos.h"
-#include "MultiReader.h"
-#include "Terms.h"
-
-CL_NS_USE(util)
-CL_NS_USE(store)
-CL_NS_DEF(index)
-
-IndexReader::IndexReader(Directory* dir)
- : stale(false)
- , hasChanges(false)
- , closeDirectory(false)
- , directoryOwner(false)
- , segmentInfos(NULL)
- , directory(_CL_POINTER(dir))
- , writeLock(NULL)
-{
-}
-
-IndexReader::IndexReader(Directory* dir, SegmentInfos* infos, bool close)
- : stale(false)
- , hasChanges(false)
- , closeDirectory(close)
- , directoryOwner(true)
- , segmentInfos(infos)
- , directory(_CL_POINTER(dir))
- , writeLock(NULL)
-{
-}
-
-IndexReader::~IndexReader()
-{
- if (writeLock != NULL) {
- writeLock->release();
- _CLDELETE(writeLock);
- }
- _CLDELETE(segmentInfos);
- _CLDECDELETE(directory);
-}
-
-IndexReader* IndexReader::open(const QString& path)
-{
- //Func - Static method.
- // Returns an IndexReader reading the index in an FSDirectory in the named path.
- //Pre - path != NULL and contains the path of the index for which an IndexReader must be
- // instantiated
- // closeDir indicates if the directory needs to be closed
- //Post - An IndexReader has been returned that reads tnhe index located at path
-
- CND_PRECONDITION(!path.isEmpty(), "path is NULL");
-
- Directory* dir = FSDirectory::getDirectory(path, false);
- IndexReader* reader = open(dir, true);
- //because fsdirectory will now have a refcount of 1 more than
- //if the reader had been opened with a directory object,
- //we need to do a refdec
- _CLDECDELETE(dir);
- return reader;
-}
-
-IndexReader* IndexReader::open(Directory* directory, bool closeDirectory)
-{
- //Func - Static method.
- // Returns an IndexReader reading the index in an FSDirectory in the named path.
- //Pre - directory represents a directory
- // closeDir indicates if the directory needs to be closed
- //Post - An IndexReader has been returned that reads the index located at directory
-
- // in- & inter-process sync
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
-
- //Instantiate an IndexReader::LockWith which can produce an IndexReader
- LuceneLock* lock = directory->makeLock(QLatin1String("commit.lock"));
- IndexReader::LockWith with(lock, directory);
-
- IndexReader* ret = NULL;
- try {
- //Create an IndexReader reading the index
- ret = with.runAndReturn();
- } _CLFINALLY (
- _CLDELETE(lock);
- );
-
- CND_CONDITION(ret != NULL, "ret is NULL");
- ret->closeDirectory = closeDirectory;
-
- return ret;
-}
-
-CL_NS(document)::Document* IndexReader::document(const int32_t n)
-{
- CL_NS(document)::Document* ret = _CLNEW CL_NS(document)::Document;
- if (!document(n, ret))
- _CLDELETE(ret);
- return ret;
-}
-
-IndexReader* IndexReader::LockWith::doBody()
-{
- //Func - Reads the segmentinfo file and depending on the number of segments found
- // it returns a SegmentsReader or a SegmentReader
- //Pre - directory != NULL
- //Post - Depending on the number of Segments present in directory this method
- // returns an empty SegmentsReader when there are no segments, a SegmentReader when
- // directory contains 1 segment and a nonempty SegmentsReader when directory
- // contains multiple segements
-
- CND_PRECONDITION(directory != NULL, "directory is NULL");
-
- //Instantiate SegmentInfos
- SegmentInfos* infos = _CLNEW SegmentInfos;
- try {
- //Have SegmentInfos read the segments file in directory
- infos->read(directory);
- } catch(...) {
- //make sure infos is cleaned up
- _CLDELETE(infos);
- throw;
- }
-
- // If there is at least one segment (if infos.size() >= 1), the last
- // SegmentReader object will close the directory when the SegmentReader
- // object itself is closed (see SegmentReader::doClose).
- // If there are no segments, there will be no "last SegmentReader object"
- // to fulfill this responsibility, so we need to explicitly close the
- // directory in the segmentsreader.close
-
- //Count the number segments in the directory
- const uint32_t nSegs = infos->size();
-
- if (nSegs == 1 ) {
- // index is optimized
- return _CLNEW SegmentReader(infos, infos->info(0));
- } else {
- //Instantiate an array of pointers to SegmentReaders of size nSegs (The number of segments in the index)
- IndexReader** readers = NULL;
-
- if (nSegs > 0){
- uint32_t infosize = infos->size();
- readers = _CL_NEWARRAY(IndexReader*,infosize+1);
- for (uint32_t i = 0; i < infosize; ++i) {
- //Instantiate a SegementReader responsible for reading the i-th segment and store it in
- //the readers array
- readers[i] = _CLNEW SegmentReader(infos->info(i));
- }
- readers[infosize] = NULL;
- }
-
- //return an instance of SegmentsReader which is a reader that manages all Segments
- return _CLNEW MultiReader(directory, infos, readers);
- }// end if
-}
-
-uint64_t IndexReader::lastModified(const QString& directory)
-{
- //Func - Static method
- // Returns the time the index in the named directory was last modified.
- //Pre - directory != NULL and contains the path name of the directory to check
- //Post - The last modified time of the index has been returned
-
- CND_PRECONDITION(!directory.isEmpty(), "directory is NULL");
-
- return FSDirectory::fileModified(directory, QLatin1String("segments"));
-}
-
-int64_t IndexReader::getCurrentVersion(Directory* directory)
-{
- // in- & inter-process sync
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
-
- int64_t ret = 0;
- bool locked = false;
- LuceneLock* commitLock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
- try {
- locked = commitLock->obtain(IndexWriter::COMMIT_LOCK_TIMEOUT);
- ret = SegmentInfos::readCurrentVersion(directory);
- } _CLFINALLY (
- if (locked)
- commitLock->release();
- _CLDELETE(commitLock);
- )
- return ret;
-}
-
-int64_t IndexReader::getCurrentVersion(const QString& directory)
-{
- Directory* dir = FSDirectory::getDirectory(directory, false);
- int64_t version = getCurrentVersion(dir);
- dir->close();
- _CLDECDELETE(dir);
- return version;
-}
-
-int64_t IndexReader::getVersion()
-{
- return segmentInfos->getVersion();
-}
-
-bool IndexReader::isCurrent()
-{
- // in- & inter-process sync
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
-
- bool ret = false;
- bool locked = false;
- LuceneLock* commitLock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
- try {
- locked = commitLock->obtain(IndexWriter::COMMIT_LOCK_TIMEOUT);
- ret = SegmentInfos::readCurrentVersion(directory)
- == segmentInfos->getVersion();
- } _CLFINALLY(
- if (locked)
- commitLock->release();
- _CLDELETE(commitLock);
- )
- return ret;
-}
-
-uint64_t IndexReader::lastModified(const Directory* directory)
-{
- //Func - Static method
- // Returns the time the index in this directory was last modified.
- //Pre - directory contains a valid reference
- //Post - The last modified time of the index has been returned
-
- return directory->fileModified(QLatin1String("segments"));
-}
-
-
-bool IndexReader::indexExists(const QString& directory)
-{
- //Func - Static method
- // Checks if an index exists in the named directory
- //Pre - directory != NULL
- //Post - Returns true if an index exists at the specified directory->
- // If the directory does not exist or if there is no index in it.
- // false is returned.
-
- CND_PRECONDITION(!directory.isEmpty(), "directory is NULL");
- return QFile(directory + QLatin1String("/segments")).exists();
-}
-
-
-void IndexReader::setNorm(int32_t doc, const TCHAR* field, uint8_t value)
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if(directoryOwner)
- aquireWriteLock();
- doSetNorm(doc, field, value);
- hasChanges = true;
-}
-
-void IndexReader::aquireWriteLock()
-{
- if (stale) {
- _CLTHROWA(CL_ERR_IO,
- "IndexReader out of date and no longer valid for delete, "
- "undelete, or setNorm operations");
- }
-
- if (writeLock == NULL) {
- LuceneLock* writeLock = directory->makeLock(QLatin1String("write.lock"));
- if (!writeLock->obtain(IndexWriter::WRITE_LOCK_TIMEOUT)) // obtain write lock
- _CLTHROWA(CL_ERR_IO,"Index locked for write"); // + writeLock
- this->writeLock = writeLock;
-
- // we have to check whether index has changed since this reader was opened.
- // if so, this reader is no longer valid for deletion
- if (SegmentInfos::readCurrentVersion(directory) > segmentInfos->getVersion()) {
- stale = true;
- this->writeLock->release();
- _CLDELETE(this->writeLock);
- _CLTHROWA(CL_ERR_IO,"IndexReader out of date and no longer valid "
- "for delete, undelete, or setNorm operations");
- }
- }
-}
-
-
-void IndexReader::setNorm(int32_t doc, const TCHAR* field, qreal value)
-{
- setNorm(doc, field, CL_NS(search)::Similarity::encodeNorm(value));
-}
-
-bool IndexReader::indexExists(const Directory* directory)
-{
- //Func - Static method
- // Checks if an index exists in the directory
- //Pre - directory is a valid reference
- //Post - Returns true if an index exists at the specified directory->
- // If the directory does not exist or if there is no index in it.
- // false is returned.
-
- return directory->fileExists(QLatin1String("segments"));
-}
-
-TermDocs* IndexReader::termDocs(Term* term) const
-{
- //Func - Returns an enumeration of all the documents which contain
- // term. For each document, the document number, the frequency of
- // the term in that document is also provided, for use in search scoring.
- // Thus, this method implements the mapping:
- //
- // Term => <docNum, freq>*
- // The enumeration is ordered by document number. Each document number
- // is greater than all that precede it in the enumeration.
- //Pre - term != NULL
- //Post - A reference to TermDocs containing an enumeration of all found documents
- // has been returned
-
- CND_PRECONDITION(term != NULL, "term is NULL");
-
- //Reference an instantiated TermDocs instance
- TermDocs* _termDocs = termDocs();
- //Seek all documents containing term
- _termDocs->seek(term);
- //return the enumaration
- return _termDocs;
-}
-
-TermPositions* IndexReader::termPositions(Term* term) const
-{
- //Func - Returns an enumeration of all the documents which contain term. For each
- // document, in addition to the document number and frequency of the term in
- // that document, a list of all of the ordinal positions of the term in the document
- // is available. Thus, this method implements the mapping:
- //
- // Term => <docNum, freq,<pos 1, pos 2, ...pos freq-1>>*
- //
- // This positional information faciliates phrase and proximity searching.
- // The enumeration is ordered by document number. Each document number is greater than
- // all that precede it in the enumeration.
- //Pre - term != NULL
- //Post - A reference to TermPositions containing an enumeration of all found documents
- // has been returned
-
- CND_PRECONDITION(term != NULL, "term is NULL");
-
- //Reference an instantiated termPositions instance
- TermPositions* _termPositions = termPositions();
- //Seek all documents containing term
- _termPositions->seek(term);
- //return the enumeration
- return _termPositions;
-}
-
-void IndexReader::deleteDocument(const int32_t docNum)
-{
- //Func - Deletes the document numbered docNum. Once a document is deleted it will not appear
- // in TermDocs or TermPostitions enumerations. Attempts to read its field with the document
- // method will result in an error. The presence of this document may still be reflected in
- // the docFreq statistic, though this will be corrected eventually as the index is further modified.
- //Pre - docNum >= 0
- //Post - If successful the document identified by docNum has been deleted. If no writelock
- // could be obtained an exception has been thrown stating that the index was locked or has no write access
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CND_PRECONDITION(docNum >= 0, "docNum is negative");
-
- if (directoryOwner)
- aquireWriteLock();
-
- //Have the document identified by docNum deleted
- doDelete(docNum);
- hasChanges = true;
-}
-
-/**
-* Commit changes resulting from delete, undeleteAll, or setNorm operations
-*
-* @throws IOException
-*/
-void IndexReader::commit()
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if(hasChanges){
- if(directoryOwner){
- {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK) // in- & inter-process sync
-
- LuceneLock* commitLock = directory->makeLock(QLatin1String("commit.lock"));
- IndexReader::CommitLockWith cl(commitLock,this);
- cl.run();
- _CLDELETE(commitLock);
-
- }
- if (writeLock != NULL) {
- writeLock->release(); // release write lock
- _CLDELETE(writeLock);
- }
- }else
- doCommit();
- }
- hasChanges = false;
-}
-
-
-void IndexReader::undeleteAll()
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if(directoryOwner)
- aquireWriteLock();
- doUndeleteAll();
- hasChanges = true;
-}
-
-int32_t IndexReader::deleteDocuments(Term* term)
-{
- //Func - Deletes all documents containing term. This is useful if one uses a
- // document field to hold a unique ID string for the document. Then to delete such
- // a document, one merely constructs a term with the appropriate field and the unique
- // ID string as its text and passes it to this method.
- //Pre - term != NULL
- //Post - All documents containing term have been deleted. The number of deleted documents
- // has been returned
-
- CND_PRECONDITION(term != NULL, "term is NULL");
-
- //Search for the documents contain term
- TermDocs* docs = termDocs(term);
-
- //Check if documents have been found
- if ( docs == NULL ){
- return 0;
- }
-
- //initialize
- int32_t Counter = 0;
- try {
- //iterate through the found documents
- while (docs->next()) {
- //Delete the document
- deleteDocument(docs->doc());
- ++Counter;
- }
- }_CLFINALLY(
- //Close the enumeration
- docs->close();
- );
-
- //Delete the enumeration of found documents
- _CLDELETE( docs );
-
- //Return the number of deleted documents
- return Counter;
-}
-
-TCHAR** IndexReader::getFieldNames()
-{
- CL_NS(util)::StringArrayWithDeletor array;
- getFieldNames(IndexReader::ALL, array);
-
- array.setDoDelete(false);
- TCHAR** ret = _CL_NEWARRAY(TCHAR*,array.size()+1);
- int j=0;
- CL_NS(util)::StringArrayWithDeletor::iterator itr = array.begin();
- while ( itr != array.end() ){
- ret[j]=*itr;
- ++j;++itr;
- }
- ret[j]=NULL;
- return ret;
-}
-
-TCHAR** IndexReader::getFieldNames(bool indexed)
-{
- CL_NS(util)::StringArrayWithDeletor array;
- getFieldNames(indexed?IndexReader::INDEXED:IndexReader::UNINDEXED, array);
-
- array.setDoDelete(false);
- TCHAR** ret = _CL_NEWARRAY(TCHAR*,array.size()+1);
- int j=0;
- CL_NS(util)::StringArrayWithDeletor::iterator itr = array.begin();
- while ( itr != array.end() ){
- ret[j]=*itr;
- ++j;++itr;
- }
- ret[j]=NULL;
- return ret;
-}
-
-void IndexReader::close()
-{
- //Func - Closes files associated with this index and also saves any new deletions to disk.
- // No other methods should be called after this has been called.
- //Pre - true
- //Post - All files associated with this index have been deleted and new deletions have been
- // saved to disk
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CloseCallbackMap::iterator iter;
- for (iter = closeCallbacks.begin(); iter != closeCallbacks.end(); iter++) {
- CloseCallback callback = *iter->first;
- callback(this, iter->second);
- }
-
- commit();
- doClose();
-
- if(closeDirectory) {
- directory->close();
- _CLDECDELETE(directory);
- }
-}
-
-bool IndexReader::isLocked(Directory* directory)
-{
- //Func - Static method
- // Checks if the index in the directory is currently locked.
- //Pre - directory is a valid reference to a directory to check for a lock
- //Post - Returns true if the index in the named directory is locked otherwise false
-
- //Check the existence of the file write.lock and return true when it does and false
- //when it doesn't
- LuceneLock* l1 = directory->makeLock(QLatin1String("write.lock"));
- LuceneLock* l2 = directory->makeLock(QLatin1String("commit.lock"));
-
- bool ret = l1->isLocked() || l2->isLocked();
-
- _CLDELETE(l1);
- _CLDELETE(l2);
- return ret;
-}
-
-bool IndexReader::isLocked(const QString& directory)
-{
- //Func - Static method
- // Checks if the index in the named directory is currently locked.
- //Pre - directory != NULL and contains the directory to check for a lock
- //Post - Returns true if the index in the named directory is locked otherwise false
-
- CND_PRECONDITION(!directory.isEmpty(), "directory is NULL");
-
- Directory* dir = FSDirectory::getDirectory(directory, false);
- bool ret = isLocked(dir);
- dir->close();
- _CLDECDELETE(dir);
-
- return ret;
-}
-
-/** Returns true if there are norms stored for this field. */
-bool IndexReader::hasNorms(const TCHAR* field)
-{
- // backward compatible implementation.
- // SegmentReader has an efficient implementation.
- return norms(field) != NULL;
-}
-
-void IndexReader::unlock(const QString& path)
-{
- FSDirectory* dir = FSDirectory::getDirectory(path, false);
- unlock(dir);
- dir->close();
- _CLDECDELETE(dir);
-}
-
-void IndexReader::unlock(Directory* directory)
-{
- //Func - Static method
- // Forcibly unlocks the index in the named directory->
- // Caution: this should only be used by failure recovery code,
- // when it is known that no other process nor thread is in fact
- // currently accessing this index.
- //Pre - directory is a valid reference to a directory
- //Post - The directory has been forcibly unlocked
- LuceneLock* lock;
-
- lock = directory->makeLock(QLatin1String("write.lock"));
- lock->release();
- _CLDELETE(lock);
-
- lock = directory->makeLock(QLatin1String("commit.lock"));
- lock->release();
- _CLDELETE(lock);
-}
-
-bool IndexReader::isLuceneFile(const QString& filename)
-{
- if (filename.isNull() || filename.isEmpty())
- return false;
-
- size_t len = filename.length();
- if (len < 6) //need at least x.frx
- return false;
-
- if (filename == QLatin1String("segments"))
- return true;
-
- if (filename == QLatin1String("segments.new"))
- return true;
-
- if (filename == QLatin1String("deletable"))
- return true;
-
- QStringList extList;
- extList << QLatin1String(".cfs")
- << QLatin1String(".fnm") << QLatin1String(".fdx") << QLatin1String(".fdt")
- << QLatin1String(".tii") << QLatin1String(".tis") << QLatin1String(".frq")
- << QLatin1String(".prx") << QLatin1String(".del") << QLatin1String(".tvx")
- << QLatin1String(".tvd") << QLatin1String(".tvf") << QLatin1String(".tvp");
-
- QString suffix = filename.right(4);
- if (extList.contains(suffix, Qt::CaseInsensitive))
- return true;
-
- if (suffix.leftRef(2) == QLatin1String(".f")) {
- suffix = suffix.remove(0, 2);
- if (suffix.length() > 0) {
- for (int i = 0; i < suffix.length(); ++i) {
- if (!suffix.at(i).isDigit())
- return false;
- }
- return true;
- }
- }
- return false;
-}
-
-void IndexReader::addCloseCallback(CloseCallback callback, void* parameter)
-{
- closeCallbacks.put(callback, parameter);
-}
-
-// #pragma mark -- IndexReader::LockWith
-
-IndexReader::LockWith::LockWith(CL_NS(store)::LuceneLock* lock, CL_NS(store)::Directory* dir)
- : CL_NS(store)::LuceneLockWith<IndexReader*>(lock, IndexWriter::COMMIT_LOCK_TIMEOUT)
-{
- this->directory = dir;
-}
-
-// #pragma mark -- IndexReader::CommitLockWith
-
-IndexReader::CommitLockWith::CommitLockWith(CL_NS(store)::LuceneLock* lock, IndexReader* r)
- : CL_NS(store)::LuceneLockWith<void>(lock,IndexWriter::COMMIT_LOCK_TIMEOUT)
- , reader(r)
-{
-}
-
-void IndexReader::CommitLockWith::doBody()
-{
- reader->doCommit();
- reader->segmentInfos->write(reader->getDirectory());
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.h b/src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.h
deleted file mode 100644
index ad643d638..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexReader.h
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_IndexReader_
-#define _lucene_index_IndexReader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/FSDirectory.h"
-#include "CLucene/store/Lock.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/index/TermVector.h"
-#include "SegmentInfos.h"
-#include "Terms.h"
-
-
-CL_NS_DEF(index)
-
-
-/** IndexReader is an abstract class, providing an interface for accessing an
- index. Search of an index is done entirely through this abstract interface,
- so that any subclass which implements it is searchable.
-
- <p> Concrete subclasses of IndexReader are usually constructed with a call to
- one of the static <code>open()</code> methods, e.g. {@link #open(String)}.
-
- <p> For efficiency, in this API documents are often referred to via
- <i>document numbers</i>, non-negative integers which each name a unique
- document in the index. These document numbers are ephemeral--they may change
- as documents are added to and deleted from an index. Clients should thus not
- rely on a given document having the same number between sessions.
-
- <p> An IndexReader can be opened on a directory for which an IndexWriter is
- opened already, but it cannot be used to delete documents from the index then.
-*/
-class IndexReader : LUCENE_BASE
-{
-public:
- //Callback for classes that need to know if IndexReader is closing.
- typedef void (*CloseCallback)(IndexReader*, void*);
-
- class CloseCallbackCompare:public CL_NS(util)::Compare::_base{
- public:
- bool operator()( CloseCallback t1, CloseCallback t2 ) const{
- return t1 > t2;
- }
- static void doDelete(CloseCallback dummy){
- }
- };
-
-
- enum FieldOption {
- // all fields
- ALL = 1,
- // all indexed fields
- INDEXED = 2,
- // all fields which are not indexed
- UNINDEXED = 4,
- // all fields which are indexed with termvectors enables
- INDEXED_WITH_TERMVECTOR = 8,
- // all fields which are indexed but don't have termvectors enabled
- INDEXED_NO_TERMVECTOR = 16,
- // all fields where termvectors are enabled. Please note that only standard termvector fields are returned
- TERMVECTOR = 32,
- // all field with termvectors wiht positions enabled
- TERMVECTOR_WITH_POSITION = 64,
- // all fields where termvectors with offset position are set
- TERMVECTOR_WITH_OFFSET = 128,
- // all fields where termvectors with offset and position values set
- TERMVECTOR_WITH_POSITION_OFFSET = 256
- };
-
-
-private:
- bool stale;
- bool hasChanges;
- bool closeDirectory;
- bool directoryOwner;
-
- SegmentInfos* segmentInfos;
- CL_NS(store)::Directory* directory;
- CL_NS(store)::LuceneLock* writeLock;
-
- typedef CL_NS(util)::CLSet<CloseCallback, void*, CloseCallbackCompare,
- CloseCallbackCompare> CloseCallbackMap;
- CloseCallbackMap closeCallbacks;
-
- /** Internal use. Implements commit */
- virtual void doCommit() = 0;
-
- /**
- * Tries to acquire the WriteLock on this directory.
- * this method is only valid if this IndexReader is directory owner.
- *
- * @throws IOException If WriteLock cannot be acquired.
- */
- void aquireWriteLock();
-protected:
- /**
- * Constructor used if IndexReader is not owner of its directory.
- * This is used for IndexReaders that are used within other IndexReaders that take care or locking directories.
- *
- * @param directory Directory where IndexReader files reside.
- */
- IndexReader(CL_NS(store)::Directory* dir);
-
- /**
- * Constructor used if IndexReader is owner of its directory.
- * If IndexReader is owner of its directory, it locks its directory in case of write operations.
- *
- * @param directory Directory where IndexReader files reside.
- * @param segmentInfos Used for write-l
- * @param closeDirectory
- */
- IndexReader(CL_NS(store)::Directory* directory, SegmentInfos* segmentInfos, bool closeDirectory);
-
-
- /// Implements close.
- virtual void doClose() = 0;
-
- /** Implements setNorm in subclass.*/
- virtual void doSetNorm(int32_t doc, const TCHAR* field, uint8_t value) = 0;
-
- /** Implements actual undeleteAll() in subclass. */
- virtual void doUndeleteAll() = 0;
-
-
- /** Implements deletion of the document numbered <code>docNum</code>.
- * Applications should call {@link #deleteDocument(int32_t)} or {@link #deleteDocuments(Term*)}.
- */
- virtual void doDelete(const int32_t docNum) = 0;
-
-public:
-
- DEFINE_MUTEX(THIS_LOCK)
-
- ///Do not access this directly, only public so that MultiReader can access it
- virtual void commit();
-
-
- /** Undeletes all documents currently marked as deleted in this index.*/
- void undeleteAll();
-
- /**
- * Get a list of unique field names that exist in this index and have the specified
- * field option information.
- * @param fldOption specifies which field option should be available for the returned fields
- * @return Collection of Strings indicating the names of the fields.
- * @see IndexReader.FieldOption
- */
- virtual void getFieldNames(FieldOption fldOption, CL_NS(util)::StringArrayWithDeletor& retarray) = 0;
-
- _CL_DEPRECATED( getFieldNames(FieldOption, StringArrayWithDeletor&) ) virtual TCHAR** getFieldNames();
- _CL_DEPRECATED( getFieldNames(FieldOption, StringArrayWithDeletor&) ) virtual TCHAR** getFieldNames(bool indexed);
-
- /** Returns the byte-encoded normalization factor for the named field of
- * every document. This is used by the search code to score documents.
- *
- * The number of bytes returned is the size of the IndexReader->maxDoc()
- * MEMORY: The values are cached, so don't delete the returned byte array.
- * @see Field#setBoost(qreal)
- */
- virtual uint8_t* norms(const TCHAR* field) = 0;
-
-
- /** Reads the byte-encoded normalization factor for the named field of every
- * document. This is used by the search code to score documents.
- *
- * @see Field#setBoost(qreal)
- */
- virtual void norms(const TCHAR* field, uint8_t* bytes) = 0;
-
- /** Expert: Resets the normalization factor for the named field of the named
- * document.
- *
- * @see #norms(TCHAR*)
- * @see Similarity#decodeNorm(uint8_t)
- */
- void setNorm(int32_t doc, const TCHAR* field, qreal value);
-
- /** Expert: Resets the normalization factor for the named field of the named
- * document. The norm represents the product of the field's {@link
- * Field#setBoost(qreal) boost} and its {@link Similarity#lengthNorm(TCHAR*,
- * int32_t) length normalization}. Thus, to preserve the length normalization
- * values when resetting this, one should base the new value upon the old.
- *
- * @see #norms(TCHAR*)
- * @see Similarity#decodeNorm(uint8_t)
- */
- void setNorm(int32_t doc, const TCHAR* field, uint8_t value);
-
- /// Release the write lock, if needed.
- virtual ~IndexReader();
-
- /// Returns an IndexReader reading the index in an FSDirectory in the named path.
- static IndexReader* open(const QString& path);
-
- /// Returns an IndexReader reading the index in the given Directory.
- static IndexReader* open( CL_NS(store)::Directory* directory, bool closeDirectory=false);
-
- /**
- * Returns the time the index in the named directory was last modified.
- * Do not use this to check whether the reader is still up-to-date, use
- * {@link #isCurrent()} instead.
- */
- static uint64_t lastModified(const QString& directory);
-
- /**
- * Returns the time the index in the named directory was last modified.
- * Do not use this to check whether the reader is still up-to-date, use
- * {@link #isCurrent()} instead.
- */
- static uint64_t lastModified(const CL_NS(store)::Directory* directory);
-
-
- /**
- * Reads version number from segments files. The version number is
- * initialized with a timestamp and then increased by one for each change of
- * the index.
- *
- * @param directory where the index resides.
- * @return version number.
- * @throws IOException if segments file cannot be read
- */
- static int64_t getCurrentVersion(CL_NS(store)::Directory* directory);
-
- /**
- * Reads version number from segments files. The version number is
- * initialized with a timestamp and then increased by one for each change of
- * the index.
- *
- * @param directory where the index resides.
- * @return version number.
- * @throws IOException if segments file cannot be read
- */
- static int64_t getCurrentVersion(const QString& directory);
-
- /**
- * Version number when this IndexReader was opened.
- */
- int64_t getVersion();
-
- /**
- * Check whether this IndexReader still works on a current version of the index.
- * If this is not the case you will need to re-open the IndexReader to
- * make sure you see the latest changes made to the index.
- *
- * @throws IOException
- */
- bool isCurrent();
-
-
- /**
- * Return an array of term frequency vectors for the specified document.
- * The array contains a vector for each vectorized field in the document.
- * Each vector contains terms and frequencies for all terms in a given vectorized field.
- * If no such fields existed, the method returns null. The term vectors that are
- * returned my either be of type TermFreqVector or of type TermPositionsVector if
- * positions or offsets have been stored.
- *
- * @param docNumber document for which term frequency vectors are returned
- * @return array of term frequency vectors. May be null if no term vectors have been
- * stored for the specified document.
- * @throws IOException if index cannot be accessed
- * @see org.apache.lucene.document.Field.TermVector
- */
- virtual bool getTermFreqVectors(int32_t docNumber, Array<TermFreqVector*>& result) =0;
-
- /**
- * Return a term frequency vector for the specified document and field. The
- * returned vector contains terms and frequencies for the terms in
- * the specified field of this document, if the field had the storeTermVector
- * flag set. If termvectors had been stored with positions or offsets, a
- * TermPositionsVector is returned.
- *
- * @param docNumber document for which the term frequency vector is returned
- * @param field field for which the term frequency vector is returned.
- * @return term frequency vector May be null if field does not exist in the specified
- * document or term vector was not stored.
- * @throws IOException if index cannot be accessed
- * @see org.apache.lucene.document.Field.TermVector
- */
- virtual TermFreqVector* getTermFreqVector(int32_t docNumber, const TCHAR* field) = 0;
-
- /**
- * Returns <code>true</code> if an index exists at the specified directory.
- * If the directory does not exist or if there is no index in it.
- * @param directory the directory to check for an index
- * @return <code>true</code> if an index exists; <code>false</code> otherwise
- */
- static bool indexExists(const QString& directory);
-
- /**
- * Returns <code>true</code> if an index exists at the specified directory.
- * If the directory does not exist or if there is no index in it.
- * @param directory the directory to check for an index
- * @return <code>true</code> if an index exists; <code>false</code> otherwise
- * @throws IOException if there is a problem with accessing the index
- */
- static bool indexExists(const CL_NS(store)::Directory* directory);
-
- /** Returns the number of documents in this index. */
- virtual int32_t numDocs() = 0;
-
- /** Returns one greater than the largest possible document number.
- * This may be used to, e.g., determine how big to allocate an array which
- * will have an element for every document number in an index.
- */
- virtual int32_t maxDoc() const = 0;
-
- /** Gets the stored fields of the <code>n</code><sup>th</sup>
- * <code>Document</code> in this index.
- * The fields are not cleared before retrieving the document, so the
- * object should be new or just cleared.
- */
- virtual bool document(int32_t n, CL_NS(document)::Document*) =0;
-
- _CL_DEPRECATED( document(i, document) ) CL_NS(document)::Document* document(const int32_t n);
-
- /** Returns true if document <i>n</i> has been deleted */
- virtual bool isDeleted(const int32_t n) = 0;
-
- /** Returns true if any documents have been deleted */
- virtual bool hasDeletions() const = 0;
-
- /** Returns true if there are norms stored for this field. */
- virtual bool hasNorms(const TCHAR* field);
-
- /** Returns an enumeration of all the terms in the index.
- * The enumeration is ordered by Term.compareTo(). Each term
- * is greater than all that precede it in the enumeration.
- * @memory Caller must clean up
- */
- virtual TermEnum* terms() const =0;
-
- /** Returns an enumeration of all terms after a given term.
- * The enumeration is ordered by Term.compareTo(). Each term
- * is greater than all that precede it in the enumeration.
- * @memory Caller must clean up
- */
- virtual TermEnum* terms(const Term* t) const = 0;
-
- /** Returns the number of documents containing the term <code>t</code>. */
- virtual int32_t docFreq(const Term* t) const = 0;
-
- /* Returns an unpositioned TermPositions enumerator.
- * @memory Caller must clean up
- */
- virtual TermPositions* termPositions() const = 0;
-
- /** Returns an enumeration of all the documents which contain
- * <code>term</code>. For each document, in addition to the document number
- * and frequency of the term in that document, a list of all of the ordinal
- * positions of the term in the document is available. Thus, this method
- * implements the mapping:
- *
- * <p><ul>
- * Term &nbsp;&nbsp; =&gt; &nbsp;&nbsp; &lt;docNum, freq,
- * &lt;pos<sub>1</sub>, pos<sub>2</sub>, ...
- * pos<sub>freq-1</sub>&gt;
- * &gt;<sup>*</sup>
- * </ul>
- * <p> This positional information faciliates phrase and proximity searching.
- * <p>The enumeration is ordered by document number. Each document number is
- * greater than all that precede it in the enumeration.
- * @memory Caller must clean up
- */
- TermPositions* termPositions(Term* term) const;
-
- /** Returns an unpositioned {@link TermDocs} enumerator.
- * @memory Caller must clean up
- */
- virtual TermDocs* termDocs() const = 0;
-
- /** Returns an enumeration of all the documents which contain
- * <code>term</code>. For each document, the document number, the frequency of
- * the term in that document is also provided, for use in search scoring.
- * Thus, this method implements the mapping:
- * <p><ul>Term &nbsp;&nbsp; =&gt; &nbsp;&nbsp; &lt;docNum, freq&gt;<sup>*</sup></ul>
- * <p>The enumeration is ordered by document number. Each document number
- * is greater than all that precede it in the enumeration.
- * @memory Caller must clean up
- */
- TermDocs* termDocs(Term* term) const;
-
- /** Deletes the document numbered <code>docNum</code>. Once a document is
- * deleted it will not appear in TermDocs or TermPostitions enumerations.
- * Attempts to read its field with the {@link #document}
- * method will result in an error. The presence of this document may still be
- * reflected in the {@link #docFreq} statistic, though
- * this will be corrected eventually as the index is further modified.
- */
- void deleteDocument(const int32_t docNum);
-
- ///@deprecated. Use deleteDocument instead.
- _CL_DEPRECATED( deleteDocument ) void deleteDoc(const int32_t docNum)
- { deleteDocument(docNum); }
-
- /** Deletes all documents containing <code>term</code>.
- * This is useful if one uses a document field to hold a unique ID string for
- * the document. Then to delete such a document, one merely constructs a
- * term with the appropriate field and the unique ID string as its text and
- * passes it to this method.
- * See {@link #deleteDocument(int)} for information about when this deletion will
- * become effective.
- * @return the number of documents deleted
- */
- int32_t deleteDocuments(Term* term);
-
- ///@deprecated. Use deleteDocuments instead.
- _CL_DEPRECATED( deleteDocuments ) int32_t deleteTerm(Term* term){ return deleteDocuments(term); }
-
- /**
- * Closes files associated with this index and also saves any new deletions to disk.
- * No other methods should be called after this has been called.
- */
- void close();
-
- ///Checks if the index in the named directory is currently locked.
- static bool isLocked(CL_NS(store)::Directory* directory);
-
- ///Checks if the index in the named directory is currently locked.
- static bool isLocked(const QString& directory);
-
-
- ///Forcibly unlocks the index in the named directory.
- ///Caution: this should only be used by failure recovery code,
- ///when it is known that no other process nor thread is in fact
- ///currently accessing this index.
- static void unlock(CL_NS(store)::Directory* directory);
- static void unlock(const QString& path);
-
- /** Returns the directory this index resides in. */
- CL_NS(store)::Directory* getDirectory() { return directory; }
-
- /** Returns true if the file is a lucene filename (based on extension or filename) */
- static bool isLuceneFile(const QString& filename);
-
- /**
- * For classes that need to know when the IndexReader closes (such as caches, etc),
- * should pass their callback function to this.
- */
- void addCloseCallback(CloseCallback callback, void* parameter);
-
-protected:
- class LockWith : public CL_NS(store)::LuceneLockWith<IndexReader*>
- {
- public:
- LockWith(CL_NS(store)::LuceneLock* lock, CL_NS(store)::Directory* dir);
-
- //Reads the segmentinfo file and depending on the number of segments found
- //it returns a MultiReader or a SegmentReader
- IndexReader* doBody();
-
- private:
- CL_NS(store)::Directory* directory;
- };
- friend class IndexReader::LockWith;
-
- class CommitLockWith : public CL_NS(store)::LuceneLockWith<void>
- {
- public:
- CommitLockWith(CL_NS(store)::LuceneLock* lock, IndexReader* r);
- void doBody();
-
- private:
- IndexReader* reader;
- };
- friend class IndexReader::CommitLockWith;
-};
-
-CL_NS_END
-#endif
-
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.cpp
deleted file mode 100644
index cc1095425..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.cpp
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "IndexWriter.h"
-
-#include "CLucene/document/Document.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/Lock.h"
-#include "CLucene/util/VoidList.h"
-#include "DocumentWriter.h"
-#include "SegmentInfos.h"
-#include "SegmentMerger.h"
-
-CL_NS_USE(store)
-CL_NS_USE(util)
-CL_NS_USE(document)
-CL_NS_USE(analysis)
-CL_NS_DEF(index)
-
-const QLatin1String IndexWriter::WRITE_LOCK_NAME("write.lock");
-const QLatin1String IndexWriter::COMMIT_LOCK_NAME("commit.lock");
-
-IndexWriter::IndexWriter(const QString& path, Analyzer* a, const bool create,
- const bool _closeDir)
- : directory(FSDirectory::getDirectory(path, create))
- , analyzer(a)
- , segmentInfos(true)
- , closeDir(_closeDir)
-{
- //Func - Constructor
- // Constructs an IndexWriter for the index in path.
- //Pre - path != NULL and contains a named directory path
- // a holds a valid reference to an analyzer and analyzes the text to
- // be indexed create indicates if the indexWriter must create a new
- // index located at path or just open it
- //Post - If create is true, then a new, empty index has been created in
- // path, replacing the index already there, if any. The named
- // directory path is owned by this Instance
-
- CND_PRECONDITION(!path.isEmpty(), "path is NULL");
-
- //Continue initializing the instance by _IndexWriter
- _IndexWriter(create);
-}
-
-IndexWriter::IndexWriter(Directory* d, Analyzer* a, const bool create,
- const bool _closeDir)
- : directory(_CL_POINTER(d))
- , analyzer(a)
- , segmentInfos(true)
- , closeDir(_closeDir)
-{
- //Func - Constructor
- // Constructs an IndexWriter for the index in path.
- //Pre - d contains a valid reference to a directory
- // a holds a valid reference to an analyzer and analyzes the text to
- // be indexed create indicates if the indexWriter must create a new
- // index located at path or just open it
- //Post - If create is true, then a new, empty index has been created in
- // path, replacing the index already there, if any. The directory d
- // is not owned by this Instance
-
- //Continue initializing the instance by _IndexWriter
- _IndexWriter ( create );
-}
-
-void IndexWriter::_IndexWriter(const bool create)
-{
- //Func - Initialises the instances
- //Pre - create indicates if the indexWriter must create a new index
- // located at path or just open it
-
- similarity = CL_NS(search)::Similarity::getDefault();
-
- useCompoundFile = true;
- if ( directory->getDirectoryType() == RAMDirectory::DirectoryType() )
- useCompoundFile = false;
-
- //Create a ramDirectory
- ramDirectory = _CLNEW TransactionalRAMDirectory;
-
- CND_CONDITION(ramDirectory != NULL, "ramDirectory is NULL");
-
- //Initialize the writeLock to
- writeLock = NULL;
-
- //initialise the settings...
- maxFieldLength = DEFAULT_MAX_FIELD_LENGTH;
- mergeFactor = DEFAULT_MERGE_FACTOR;
- maxMergeDocs = DEFAULT_MAX_MERGE_DOCS;
- writeLockTimeout = WRITE_LOCK_TIMEOUT;
- commitLockTimeout = COMMIT_LOCK_TIMEOUT;
- minMergeDocs = DEFAULT_MAX_BUFFERED_DOCS;
- termIndexInterval = DEFAULT_TERM_INDEX_INTERVAL;
-
- //Create a new lock using the name "write.lock"
- LuceneLock* newLock = directory->makeLock(IndexWriter::WRITE_LOCK_NAME);
-
- //Condition check to see if newLock has been allocated properly
- CND_CONDITION(newLock != NULL,
- "No memory could be allocated for LuceneLock newLock");
-
- //Try to obtain a write lock
- if (!newLock->obtain(writeLockTimeout)){
- //Write lock could not be obtained so delete it
- _CLDELETE(newLock);
- //Reset the instance
- _finalize();
- //throw an exception because no writelock could be created or obtained
- _CLTHROWA(CL_ERR_IO, "Index locked for write or no write access." );
- }
-
- //The Write Lock has been obtained so save it for later use
- this->writeLock = newLock;
-
- //Create a new lock using the name "commit.lock"
- LuceneLock* lock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
-
- //Condition check to see if lock has been allocated properly
- CND_CONDITION(lock != NULL, "No memory could be allocated for LuceneLock lock");
-
- LockWith2 with(lock, commitLockTimeout, this, NULL, create);
- {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK) // in- & inter-process sync
- with.run();
- }
-
- //Release the commit lock
- _CLDELETE(lock);
-
- isOpen = true;
-}
-
-IndexWriter::~IndexWriter()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
- close();
- _finalize();
-}
-
-void IndexWriter::close()
-{
- //Func - Flushes all changes to an index, closes all associated files, and
- // closes the directory that the index is stored in.
- //Pre - closeDir indicates if the directory must be closed or not
- //Post - All the changes have been flushed to disk and the write lock has
- // been released. The ramDirectory has also been closed. The
- // directory has been closed if the reference count of the directory
- // reaches zero
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if (isOpen) {
- //Flush the Ram Segments
- flushRamSegments();
- //Close the ram directory
- if (ramDirectory != NULL) {
- ramDirectory->close();
- _CLDECDELETE(ramDirectory);
- }
-
- //Check if this instance must close the directory
- if (closeDir)
- directory->close();
- _CLDECDELETE(directory);
-
- // release write lock
- if (writeLock != NULL) {
- writeLock->release();
- _CLDELETE(writeLock);
- }
- isOpen = false;
- }
-}
-
-void IndexWriter::_finalize()
-{
- //Func - Releases all the resources of the instance
- //Pre - true
- //Post - All the releases have been released
-
- if(writeLock != NULL) {
- //release write lock
- writeLock->release();
- _CLDELETE( writeLock );
- }
-
- //Delete the ramDirectory
- if (ramDirectory != NULL) {
- ramDirectory->close();
- _CLDECDELETE(ramDirectory);
- }
-}
-
-int32_t IndexWriter::docCount()
-{
- //Func - Counts the number of documents in the index
- //Pre - true
- //Post - The number of documents have been returned
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- //Initialize count
- int32_t count = 0;
-
- //Iterate through all segmentInfos
- for (int32_t i = 0; i < segmentInfos.size(); i++) {
- //Get the i-th SegmentInfo
- SegmentInfo* si = segmentInfos.info(i);
- //Retrieve the number of documents of the segment and add it to count
- count += si->docCount;
- }
- return count;
-}
-
-void IndexWriter::addDocument(Document* doc, Analyzer* analyzer)
-{
- //Func - Adds a document to the index
- //Pre - doc contains a valid reference to a document
- // ramDirectory != NULL
- //Post - The document has been added to the index of this IndexWriter
- CND_PRECONDITION(ramDirectory != NULL, "ramDirectory is NULL");
-
- if (analyzer == NULL)
- analyzer = this->analyzer;
-
- ramDirectory->transStart();
- try {
- QString segmentName = newSegmentName();
- CND_CONDITION(!segmentName.isEmpty(), "segmentName is NULL");
- try {
- //Create the DocumentWriter using a ramDirectory and analyzer
- // supplied by the IndexWriter (this).
- DocumentWriter* dw = _CLNEW DocumentWriter(ramDirectory, analyzer,
- this );
- CND_CONDITION(dw != NULL, "dw is NULL");
- try {
- //Add the client-supplied document to the new segment.
- dw->addDocument(segmentName, doc);
- } _CLFINALLY (
- _CLDELETE(dw);
- );
-
- //Create a new SegmentInfo instance about this new segment.
- SegmentInfo* si = _CLNEW SegmentInfo(segmentName, 1, ramDirectory);
- CND_CONDITION(si != NULL, "Si is NULL");
- {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- //Add the info object for this particular segment to the list
- // of all segmentInfos->
- segmentInfos.add(si);
-
- //Check to see if the segments must be merged
- maybeMergeSegments();
- }
- } _CLFINALLY()
- } catch (...) {
- ramDirectory->transAbort();
- throw;
-}
- ramDirectory->transCommit();
-}
-
-void IndexWriter::optimize()
-{
- //Func - Optimizes the index for which this Instance is responsible
- //Pre - true
- //Post -
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- //Flush the RamSegments to disk
- flushRamSegments();
- while (segmentInfos.size() > 1
- || (segmentInfos.size() == 1
- && (SegmentReader::hasDeletions(segmentInfos.info(0))
- || segmentInfos.info(0)->getDir()!=directory
- || (useCompoundFile
- && (!SegmentReader::usesCompoundFile(segmentInfos.info(0))
- || SegmentReader::hasSeparateNorms(segmentInfos.info(0))))))) {
- int32_t minSegment = segmentInfos.size() - mergeFactor;
- mergeSegments(minSegment < 0 ? 0 : minSegment);
- }
-}
-
-
-QString IndexWriter::newSegmentName()
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- return QLatin1Char('_') + QString::number(segmentInfos.counter++, 36);
-}
-
-void IndexWriter::flushRamSegments()
-{
- //Func - Merges all RAM-resident segments.
- //Pre - ramDirectory != NULL
- //Post - The RAM-resident segments have been merged to disk
-
- CND_PRECONDITION(ramDirectory != NULL, "ramDirectory is NULL");
-
- int32_t minSegment = segmentInfos.size()-1; //don't make this unsigned...
- CND_CONDITION(minSegment >= -1, "minSegment must be >= -1");
-
- int32_t docCount = 0;
- //Iterate through all the segements and check if the directory is a ramDirectory
- while (minSegment >= 0 &&
- segmentInfos.info(minSegment)->getDir() == ramDirectory) {
- docCount += segmentInfos.info(minSegment)->docCount;
- minSegment--;
- }
- if (minSegment < 0 || // add one FS segment?
- (docCount + segmentInfos.info(minSegment)->docCount) > mergeFactor ||
- !(segmentInfos.info(segmentInfos.size()-1)->getDir() == ramDirectory))
- minSegment++;
-
- CND_CONDITION(minSegment >= 0, "minSegment must be >= 0");
- if (minSegment >= segmentInfos.size())
- return; // none to merge
- mergeSegments(minSegment);
-}
-
-void IndexWriter::maybeMergeSegments() {
- //Func - Incremental Segment Merger
- //Pre -
- //Post -
-
- int64_t targetMergeDocs = minMergeDocs;
-
- // find segments smaller than current target size
- while (targetMergeDocs <= maxMergeDocs) {
- int32_t minSegment = segmentInfos.size();
- int32_t mergeDocs = 0;
-
- while (--minSegment >= 0) {
- SegmentInfo* si = segmentInfos.info(minSegment);
- if (si->docCount >= targetMergeDocs)
- break;
- mergeDocs += si->docCount;
- }
-
- if (mergeDocs >= targetMergeDocs){
- // found a merge to do
- mergeSegments(minSegment+1);
- }else
- break;
-
- //increase target size
- targetMergeDocs *= mergeFactor;
- }
-}
-
-void IndexWriter::mergeSegments(const uint32_t minSegment)
-{
- mergeSegments(minSegment, segmentInfos.size());
-}
-
-void IndexWriter::mergeSegments(const uint32_t minSegment, const uint32_t end)
-{
- CLVector<SegmentReader*> segmentsToDelete(false);
- QString mergedName = newSegmentName();
-#ifdef _CL_DEBUG_INFO
- fprintf(_CL_DEBUG_INFO, "merging segments\n");
-#endif
- SegmentMerger merger(this, mergedName);
- for (size_t i = minSegment; i < end; i++) {
- SegmentInfo* si = segmentInfos.info(i);
-#ifdef _CL_DEBUG_INFO
- fprintf(_CL_DEBUG_INFO, " %s (%d docs)\n",
- si->name.toLocal8Bit().constData(), si->docCount);
-#endif
- SegmentReader* reader = _CLNEW SegmentReader(si);
- merger.add(reader);
- // if we own the directory
- if ((reader->getDirectory() == this->directory)
- || (reader->getDirectory() == this->ramDirectory)) {
- // queue segment for deletion
- segmentsToDelete.push_back(reader);
- }
- }
-
- int32_t mergedDocCount = merger.merge();
-
-#ifdef _CL_DEBUG_INFO
- fprintf(_CL_DEBUG_INFO, "\n into %s (%d docs)\n",
- mergedName.toLocal8Bit().constData(), mergedDocCount);
-#endif
-
- segmentInfos.clearto(minSegment);// remove old infos & add new
- segmentInfos.add(_CLNEW SegmentInfo(mergedName, mergedDocCount, directory));
-
- // close readers before we attempt to delete now-obsolete segments
- merger.closeReaders();
-
- LuceneLock* lock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
- LockWith2 with (lock, commitLockTimeout, this, &segmentsToDelete, true);
- {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK) // in- & inter-process sync
- with.run();
- }
- _CLDELETE( lock );
-
- if (useCompoundFile) {
- QStringList filesToDelete;
- merger.createCompoundFile(mergedName + QLatin1String(".tmp"), filesToDelete);
-
- LuceneLock* lock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
- LockWithCFS with(lock, commitLockTimeout, directory, this, mergedName,
- filesToDelete);
- {
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK) // in- & inter-process sync
- with.run();
- }
- _CLDELETE(lock);
- }
-}
-
-void IndexWriter::deleteSegments(CLVector<SegmentReader*>* segments)
-{
- QStringList deletable;
-
- {//scope delete deleteArray object
- QStringList deleteArray;
- readDeleteableFiles(deleteArray);
- deleteFiles(deleteArray, deletable); // try to delete deleteable
- }
-
- QStringList files;
- for (uint32_t i = 0; i < segments->size(); i++) {
- SegmentReader* reader = (*segments)[i];
- files.clear();
- reader->files(files);
- if (reader->getDirectory() == this->directory)
- deleteFiles(files, deletable); // try to delete our files
- else
- deleteFiles(files, reader->getDirectory()); // delete, eg, RAM files
- }
-
- writeDeleteableFiles(deletable); // note files we can't delete
-}
-
-void IndexWriter::deleteFiles(const QStringList& files)
-{
- QStringList currentDeletable;
- readDeleteableFiles(currentDeletable);
-
- // try to delete deleteable
- QStringList deletable;
- deleteFiles(currentDeletable, deletable);
-
- // try to delete our files
- deleteFiles(files, deletable);
-
- // note files we can't delete
- writeDeleteableFiles(deletable);
-}
-
-void IndexWriter::readDeleteableFiles(QStringList& result)
-{
- if (!directory->fileExists(QLatin1String("deletable")))
- return;
-
- IndexInput* input = directory->openInput(QLatin1String("deletable"));
- try {
- // read file names
- TCHAR tname[CL_MAX_PATH];
- for (int32_t i = input->readInt(); i > 0; i--) {
- int32_t read = input->readString(tname, CL_MAX_PATH);
- result.push_back(QString::fromWCharArray(tname, read));
- }
- } _CLFINALLY (
- input->close();
- _CLDELETE(input);
- );
-}
-
-void IndexWriter::deleteFiles(const QStringList& files, QStringList& deletable)
-{
- QStringList::const_iterator itr;
- for (itr = files.begin(); itr != files.end(); ++itr) {
- if (!getDirectory()->fileExists((*itr)))
- continue;
-
- if (!getDirectory()->deleteFile((*itr), false)) {
- if (directory->fileExists((*itr))) {
-#ifdef _CL_DEBUG_INFO
- fprintf(_CL_DEBUG_INFO, "%s; Will re-try later.\n", err.what());
-#endif
- // add to deletable
- deletable.push_back((*itr));
- }
- }
- }
-}
-
-void IndexWriter::deleteFiles(const QStringList& files, Directory* directory)
-{
- QStringList::const_iterator itr;
- for (itr = files.begin(); itr != files.end(); ++itr)
- directory->deleteFile((*itr), true);
-}
-
-void IndexWriter::writeDeleteableFiles(const QStringList& files)
-{
- IndexOutput* output = directory->createOutput(QLatin1String("deleteable.new"));
- try {
- output->writeInt(files.size());
-
- TCHAR tfile[CL_MAX_PATH];
- QStringList::const_iterator itr;
- for (itr = files.begin(); itr != files.end(); ++itr) {
- tfile[(*itr).toWCharArray(tfile)] = '\0';
- output->writeString(tfile, _tcslen(tfile));
- }
- } _CLFINALLY (
- output->close();
- _CLDELETE(output);
- );
-
- directory->renameFile(QLatin1String("deleteable.new"),
- QLatin1String("deletable"));
-}
-
-void IndexWriter::addIndexes(Directory** dirs)
-{
- //Func - Add several indexes located in different directories into the current
- // one managed by this instance
- //Pre - dirs != NULL and contains directories of several indexes
- // dirsLength > 0 and contains the number of directories
- //Post - The indexes located in the directories in dirs have been merged with
- // the pre(current) index. The Resulting index has also been optimized
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CND_PRECONDITION(dirs != NULL, "dirs is NULL");
-
- // start with zero or 1 seg so optimize the current
- optimize();
-
- int32_t start = segmentInfos.size();
-
- //Iterate through the directories
- for (int32_t i = 0; dirs[i] != NULL; ++i) {
- // DSR: Changed SegmentInfos constructor arg (see bug discussion below).
- SegmentInfos sis(false);
- sis.read(dirs[i]);
- for (int32_t j = 0; j < sis.size(); j++)
- segmentInfos.add(sis.info(j)); // add each info
- }
-
- // commented out by tbusch to solve a bug and to be conform with
- // java lucene
-
- // merge newly added segments in log(n) passes
- //while (segmentInfos.size() > start + mergeFactor) {
- // for (int32_t base = start; base < segmentInfos.size(); base++) {
- // int32_t end = min(segmentInfos.size(), base + mergeFactor);
- // if (end - base > 1)
- // mergeSegments(base, end);
- // }
- //}
-
- // cleanup
- optimize();
-}
-
-
-void IndexWriter::addIndexes(IndexReader** readers)
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- optimize(); // start with zero or 1 seg
-
- QString mergedName = newSegmentName();
- SegmentMerger merger(this, mergedName);
-
- CLVector<SegmentReader*> segmentsToDelete;
- SegmentReader* sReader = NULL;
- if (segmentInfos.size() == 1) { // add existing index, if any
- sReader = _CLNEW SegmentReader(segmentInfos.info(0));
- merger.add(sReader);
- segmentsToDelete.push_back(sReader); // queue segment for deletion
- }
-
- int32_t readersLength = 0;
- while (readers[readersLength] != NULL)
- merger.add(readers[readersLength++]);
-
- int32_t docCount = merger.merge(); // merge 'em
-
- // pop old infos & add new
- segmentInfos.clearto(0);
- segmentInfos.add(_CLNEW SegmentInfo(mergedName, docCount, directory));
-
- if (sReader != NULL) {
- sReader->close();
- _CLDELETE(sReader);
- }
-
- LuceneLock* lock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
- LockWith2 with(lock, commitLockTimeout, this, &segmentsToDelete, true);
- {
- // in- & inter-process sync
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- with.run();
- }
- _CLDELETE(lock);
-
- if (useCompoundFile) {
- QStringList filesToDelete;
- merger.createCompoundFile(mergedName + QLatin1String(".tmp"),
- filesToDelete);
-
- LuceneLock* cfslock = directory->makeLock(IndexWriter::COMMIT_LOCK_NAME);
- LockWithCFS with(cfslock, commitLockTimeout, directory, this, mergedName,
- filesToDelete);
- {
- // in- & inter-process sync
- SCOPED_LOCK_MUTEX(directory->THIS_LOCK)
- with.run();
- }
- _CLDELETE(cfslock);
- }
-}
-
-// #pragma mark -- IndexWriter::LockWith2
-
-IndexWriter::LockWith2::LockWith2(CL_NS(store)::LuceneLock* lock,
- int64_t lockWaitTimeout,
- IndexWriter* indexWriter,
- CL_NS(util)::CLVector<SegmentReader*>* std,
- bool _create)
- : CL_NS(store)::LuceneLockWith<void>(lock, lockWaitTimeout)
- , create(_create)
- , writer(indexWriter)
- , segmentsToDelete(std)
-{
-}
-
-void IndexWriter::LockWith2::doBody()
-{
- //Func - Writes segmentInfos to or reads segmentInfos from disk
- //Pre - writer != NULL
- //Post - if create is true then segementInfos has been written to disk
- // otherwise segmentInfos has been read from disk
-
- CND_PRECONDITION(writer != NULL, "writer is NULL");
-
- if (create) {
- writer->segmentInfos.write(writer->getDirectory());
- // delete now-unused segments
- if (segmentsToDelete != NULL)
- writer->deleteSegments(segmentsToDelete);
- } else {
- writer->segmentInfos.read(writer->getDirectory());
- }
-}
-
-// #pragma mark -- IndexWriter::LockWithCFS
-
-IndexWriter::LockWithCFS::LockWithCFS(CL_NS(store)::LuceneLock* lock,
- int64_t lockWaitTimeout,
- CL_NS(store)::Directory* dir,
- IndexWriter* indexWriter,
- const QString& segmentName,
- const QStringList& ftd)
- : CL_NS(store)::LuceneLockWith<void>(lock, lockWaitTimeout)
- , segName(segmentName)
- , writer(indexWriter)
- , directory(dir)
- , filesToDelete(ftd)
-{
-}
-
-void IndexWriter::LockWithCFS::doBody()
-{
- //Func - Writes segmentInfos to or reads segmentInfos from disk
- //Pre - writer != NULL
- //Post - if create is true then segementInfos has been written to disk
- // otherwise segmentInfos has been read from disk
-
- CND_PRECONDITION(directory != NULL, "directory is NULL");
- CND_PRECONDITION(!segName.isEmpty(), "mergedName is NULL");
-
- // make compound file visible for SegmentReaders
- directory->renameFile(segName + QLatin1String(".tmp"),
- segName + QLatin1String(".cfs"));
- // delete now unused files of segment
- writer->deleteFiles(filesToDelete);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.h b/src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.h
deleted file mode 100644
index f4a7024b5..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/IndexWriter.h
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_IndexWriter_
-#define _lucene_index_IndexWriter_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/util/VoidList.h"
-#include "CLucene/search/Similarity.h"
-#include "CLucene/store/Lock.h"
-#include "CLucene/store/TransactionalRAMDirectory.h"
-
-#include "SegmentHeader.h"
-
-CL_NS_DEF(index)
-
-/**
-An IndexWriter creates and maintains an index.
-
-The third argument to the
-<a href="#IndexWriter(org.apache.lucene.store.Directory, org.apache.lucene.analysis.Analyzer, boolean)"><b>constructor</b></a>
-determines whether a new index is created, or whether an existing index is
-opened for the addition of new documents.
-
-In either case, documents are added with the <a
-href="#addDocument(org.apache.lucene.document.Document)"><b>addDocument</b></a> method.
-When finished adding documents, <a href="#close()"><b>close</b></a> should be called.
-
-<p>If an index will not have more documents added for a while and optimal search
-performance is desired, then the <a href="#optimize()"><b>optimize</b></a>
-method should be called before the index is closed.
-
-<p>Opening an IndexWriter creates a lock file for the directory in use. Trying to open
-another IndexWriter on the same directory will lead to an IOException. The IOException
-is also thrown if an IndexReader on the same directory is used to delete documents
-from the index.
-
-@see IndexModifier IndexModifier supports the important methods of IndexWriter plus deletion
-*/
-class IndexWriter : LUCENE_BASE
-{
- class LockWith2 : public CL_NS(store)::LuceneLockWith<void>
- {
- public:
- LockWith2(CL_NS(store)::LuceneLock* lock,
- int64_t lockWaitTimeout,
- IndexWriter* wr,
- CL_NS(util)::CLVector<SegmentReader*>* std,
- bool create);
-
- ~LockWith2() {}
-
- void doBody();
-
- private:
- bool create;
- IndexWriter* writer;
- CL_NS(util)::CLVector<SegmentReader*>* segmentsToDelete;
- };
- friend class LockWith2;
-
- class LockWithCFS : public CL_NS(store)::LuceneLockWith<void>
- {
- public:
- LockWithCFS(CL_NS(store)::LuceneLock* lock,
- int64_t lockWaitTimeout,
- CL_NS(store)::Directory* dir,
- IndexWriter* wr,
- const QString& segName,
- const QStringList& ftd);
-
- ~LockWithCFS() {}
-
- void doBody();
-
- private:
- QString segName;
- IndexWriter* writer;
- CL_NS(store)::Directory* directory;
- QStringList filesToDelete;
- };
- friend class IndexWriter::LockWithCFS;
-
- // indicates if the writers is open - this way close can be called multiple
- // times
- bool isOpen;
-
- // how to analyze text
- CL_NS(analysis)::Analyzer* analyzer;
-
- CL_NS(search)::Similarity* similarity; // how to normalize
-
- /** Use compound file setting. Normally defaults to true, except when
- * using a RAMDirectory. This minimizes the number of files used.
- * Setting this to false may improve indexing performance, but
- * may also cause file handle problems.
- */
- bool useCompoundFile;
- bool closeDir;
-
- // for temp segs
- CL_NS(store)::TransactionalRAMDirectory* ramDirectory;
-
- CL_NS(store)::LuceneLock* writeLock;
-
- void _IndexWriter(const bool create);
-
- void _finalize();
-
- // where this index resides
- CL_NS(store)::Directory* directory;
-
-
- int32_t getSegmentsCounter() { return segmentInfos.counter; }
- int32_t maxFieldLength;
- int32_t mergeFactor;
- int32_t minMergeDocs;
- int32_t maxMergeDocs;
- int32_t termIndexInterval;
-
- int64_t writeLockTimeout;
- int64_t commitLockTimeout;
-public:
- DEFINE_MUTEX(THIS_LOCK)
-
- // Release the write lock, if needed.
- SegmentInfos segmentInfos;
-
- // Release the write lock, if needed.
- ~IndexWriter();
-
- /**
- * The Java implementation of Lucene silently truncates any tokenized
- * field if the number of tokens exceeds a certain threshold. Although
- * that threshold is adjustable, it is easy for the client programmer
- * to be unaware that such a threshold exists, and to become its
- * unwitting victim.
- * CLucene implements a less insidious truncation policy. Up to
- * DEFAULT_MAX_FIELD_LENGTH tokens, CLucene behaves just as JLucene
- * does. If the number of tokens exceeds that threshold without any
- * indication of a truncation preference by the client programmer,
- * CLucene raises an exception, prompting the client programmer to
- * explicitly set a truncation policy by adjusting maxFieldLength.
- */
- LUCENE_STATIC_CONSTANT(int32_t, DEFAULT_MAX_FIELD_LENGTH = 10000);
- LUCENE_STATIC_CONSTANT(int32_t, FIELD_TRUNC_POLICY__WARN = -1);
- int32_t getMaxFieldLength() const{ return maxFieldLength; }
- void setMaxFieldLength(int32_t val){ maxFieldLength = val; }
-
- /**
- * Default value is 10. Change using {@link #setMaxBufferedDocs(int)}.
- */
- LUCENE_STATIC_CONSTANT(int32_t, DEFAULT_MAX_BUFFERED_DOCS = 10);
- /** Determines the minimal number of documents required before the buffered
- * in-memory documents are merging and a new Segment is created.
- * Since Documents are merged in a {@link RAMDirectory},
- * large value gives faster indexing. At the same time, mergeFactor limits
- * the number of files open in a FSDirectory.
- *
- * <p> The default value is DEFAULT_MAX_BUFFERED_DOCS.*/
- void setMaxBufferedDocs(int32_t val){ minMergeDocs = val; }
- /**
- * @see #setMaxBufferedDocs
- */
- int32_t getMaxBufferedDocs(){ return minMergeDocs; }
-
- /**
- * Default value for the write lock timeout (1,000).
- */
- LUCENE_STATIC_CONSTANT(int64_t, WRITE_LOCK_TIMEOUT = 1000);
- /**
- * Sets the maximum time to wait for a write lock (in milliseconds).
- */
- void setWriteLockTimeout(int64_t writeLockTimeout)
- { this->writeLockTimeout = writeLockTimeout; }
- /**
- * @see #setWriteLockTimeout
- */
- int64_t getWriteLockTimeout() { return writeLockTimeout; }
-
- /**
- * Default value for the commit lock timeout (10,000).
- */
- LUCENE_STATIC_CONSTANT(int64_t, COMMIT_LOCK_TIMEOUT = 10000);
- /**
- * Sets the maximum time to wait for a commit lock (in milliseconds).
- */
- void setCommitLockTimeout(int64_t commitLockTimeout)
- { this->commitLockTimeout = commitLockTimeout; }
- /**
- * @see #setCommitLockTimeout
- */
- int64_t getCommitLockTimeout() { return commitLockTimeout; }
-
- static const QLatin1String WRITE_LOCK_NAME; //"write.lock";
- static const QLatin1String COMMIT_LOCK_NAME; //"commit.lock";
-
- /**
- * Default value is 10. Change using {@link #setMergeFactor(int)}.
- */
- LUCENE_STATIC_CONSTANT(int32_t, DEFAULT_MERGE_FACTOR = 10);
- /* Determines how often segment indices are merged by addDocument(). With
- * smaller values, less RAM is used while indexing, and searches on
- * unoptimized indices are faster, but indexing speed is slower. With larger
- * values more RAM is used while indexing and searches on unoptimized indices
- * are slower, but indexing is faster. Thus larger values (> 10) are best
- * for batched index creation, and smaller values (< 10) for indices that are
- * interactively maintained.
- *
- * <p>This must never be less than 2. The default value is 10.
- */
- int32_t getMergeFactor() const{ return mergeFactor; }
- void setMergeFactor(int32_t val){ mergeFactor = val; }
-
-
- /** Expert: The fraction of terms in the "dictionary" which should be stored
- * in RAM. Smaller values use more memory, but make searching slightly
- * faster, while larger values use less memory and make searching slightly
- * slower. Searching is typically not dominated by dictionary lookup, so
- * tweaking this is rarely useful.
- */
- LUCENE_STATIC_CONSTANT(int32_t, DEFAULT_TERM_INDEX_INTERVAL = 128);
- /** Expert: Set the interval between indexed terms. Large values cause less
- * memory to be used by IndexReader, but slow random-access to terms. Small
- * values cause more memory to be used by an IndexReader, and speed
- * random-access to terms.
- *
- * This parameter determines the amount of computation required per query
- * term, regardless of the number of documents that contain that term. In
- * particular, it is the maximum number of other terms that must be
- * scanned before a term is located and its frequency and position information
- * may be processed. In a large index with user-entered query terms, query
- * processing time is likely to be dominated not by term lookup but rather
- * by the processing of frequency and positional data. In a small index
- * or when many uncommon query terms are generated (e.g., by wildcard
- * queries) term lookup may become a dominant cost.
- *
- * In particular, <code>numUniqueTerms/interval</code> terms are read into
- * memory by an IndexReader, and, on average, <code>interval/2</code> terms
- * must be scanned for each random term access.
- *
- * @see #DEFAULT_TERM_INDEX_INTERVAL
- */
- void setTermIndexInterval(int32_t interval) { termIndexInterval = interval; }
- /** Expert: Return the interval between indexed terms.
- *
- * @see #setTermIndexInterval(int)
- */
- int32_t getTermIndexInterval() { return termIndexInterval; }
-
- /** Determines the minimal number of documents required before the buffered
- * in-memory documents are merging and a new Segment is created.
- * Since Documents are merged in a {@link RAMDirectory},
- * large value gives faster indexing. At the same time, mergeFactor limits
- * the number of files open in a FSDirectory.
- *
- * <p> The default value is 10.*/
- int32_t getMinMergeDocs() const{ return minMergeDocs; }
- void setMinMergeDocs(int32_t val){ minMergeDocs = val; }
-
- /** Determines the largest number of documents ever merged by addDocument().
- * Small values (e.g., less than 10,000) are best for interactive indexing,
- * as this limits the length of pauses while indexing to a few seconds.
- * Larger values are best for batched indexing and speedier searches.
- *
- * <p>The default value is {@link #DEFAULT_MAX_MERGE_DOCS}.
- */
- LUCENE_STATIC_CONSTANT(int32_t, DEFAULT_MAX_MERGE_DOCS = LUCENE_INT32_MAX_SHOULDBE);
- /**Determines the largest number of documents ever merged by addDocument().
- * Small values (e.g., less than 10,000) are best for interactive indexing,
- * as this limits the length of pauses while indexing to a few seconds.
- * Larger values are best for batched indexing and speedier searches.
- *
- * <p>The default value is {@link Integer#MAX_VALUE}.
- */
- int32_t getMaxMergeDocs() const{ return maxMergeDocs; }
- void setMaxMergeDocs(int32_t val){ maxMergeDocs = val; }
-
- /**
- * Constructs an IndexWriter for the index in <code>path</code>.
- * Text will be analyzed with <code>a</code>. If <code>create</code>
- * is true, then a new, empty index will be created in
- * <code>path</code>, replacing the index already there, if any.
- *
- * @param path the path to the index directory
- * @param a the analyzer to use
- * @param create <code>true</code> to create the index or overwrite
- * the existing one; <code>false</code> to append to the existing
- * index
- * @throws IOException if the directory cannot be read/written to, or
- * if it does not exist, and <code>create</code> is
- * <code>false</code>
- */
- IndexWriter(const QString& path, CL_NS(analysis)::Analyzer* a,
- const bool create, const bool closeDir = true);
-
-
- /**Constructs an IndexWriter for the index in <code>d</code>. Text will be
- * analyzed with <code>a</code>. If <code>create</code> is true, then a new,
- * empty index will be created in <code>d</code>, replacing the index already
- * there, if any.
- */
- IndexWriter(CL_NS(store)::Directory* d, CL_NS(analysis)::Analyzer* a,
- const bool create, const bool closeDir = false);
-
- // Flushes all changes to an index, closes all associated files, and closes
- // the directory that the index is stored in.
- void close();
-
- // Returns the number of documents currently in this index. synchronized
- int32_t docCount();
-
-
- // Adds a document to this index, using the provided analyzer instead of
- // the value of {@link #getAnalyzer()}. If the document contains more than
- // {@link #setMaxFieldLength(int)} terms for a given field, the remainder
- // are discarded.
- void addDocument(CL_NS(document)::Document* doc,
- CL_NS(analysis)::Analyzer* analyzer = NULL);
-
-
- // Merges all segments together into a single segment, optimizing an index
- // for search. synchronized
- void optimize();
-
-
- /**Merges all segments from an array of indices into this index.
- *
- * <p>This may be used to parallelize batch indexing. A large document
- * collection can be broken into sub-collections. Each sub-collection can be
- * indexed in parallel, on a different thread, process or machine. The
- * complete index can then be created by merging sub-collection indices
- * with this method.
- *
- * <p>After this completes, the index is optimized.
- *@synchronized
- */
- void addIndexes(CL_NS(store)::Directory** dirs);
-
- /** Merges the provided indexes into this index.
- * <p>After this completes, the index is optimized. </p>
- * <p>The provided IndexReaders are not closed.</p>
- */
- void addIndexes(IndexReader** readers);
-
-
- /** Returns the directory this index resides in. */
- CL_NS(store)::Directory* getDirectory() { return directory; }
-
- /** Get the current setting of whether to use the compound file format.
- * Note that this just returns the value you set with setUseCompoundFile(boolean)
- * or the default. You cannot use this to query the status of an existing index.
- * @see #setUseCompoundFile(boolean)
- */
- bool getUseCompoundFile() { return useCompoundFile; }
-
- /** Setting to turn on usage of a compound file. When on, multiple files
- * for each segment are merged into a single file once the segment creation
- * is finished. This is done regardless of what directory is in use.
- */
- void setUseCompoundFile(bool value) { useCompoundFile = value; }
-
-
- /** Expert: Set the Similarity implementation used by this IndexWriter.
- *
- * @see Similarity#setDefault(Similarity)
- */
- void setSimilarity(CL_NS(search)::Similarity* similarity)
- { this->similarity = similarity; }
-
- /** Expert: Return the Similarity implementation used by this IndexWriter.
- *
- * <p>This defaults to the current value of {@link Similarity#getDefault()}.
- */
- CL_NS(search)::Similarity* getSimilarity() { return this->similarity; }
-
- /** Returns the analyzer used by this index. */
- CL_NS(analysis)::Analyzer* getAnalyzer() { return analyzer; }
-
-private:
- /** Merges all RAM-resident segments. */
- void flushRamSegments();
-
- /** Incremental segment merger. */
- void maybeMergeSegments();
-
- // Pops segments off of segmentInfos stack down to minSegment, merges them,
- // and pushes the merged index onto the top of the segmentInfos stack.
- void mergeSegments(const uint32_t minSegment);
-
- // Merges the named range of segments, replacing them in the stack with a
- // single segment.
- void mergeSegments(const uint32_t minSegment, const uint32_t end);
-
- // Some operating systems (e.g. Windows) don't permit a file to be deleted
- // while it is opened for read (e.g. by another process or thread). So we
- // assume that when a delete fails it is because the file is open in another
- // process, and queue the file for subsequent deletion.
- void deleteSegments(CL_NS(util)::CLVector<SegmentReader*>* segments);
-
- void deleteFiles(const QStringList& files);
- void readDeleteableFiles(QStringList& files);
- void deleteFiles(const QStringList& files, QStringList& deletable);
- void deleteFiles(const QStringList& files, CL_NS(store)::Directory* directory);
- void writeDeleteableFiles(const QStringList& files);
-
- // synchronized
- QString newSegmentName();
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.cpp
deleted file mode 100644
index 1260d04dc..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.cpp
+++ /dev/null
@@ -1,722 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "MultiReader.h"
-
-#include "IndexReader.h"
-#include "CLucene/document/Document.h"
-#include "Terms.h"
-#include "SegmentMergeQueue.h"
-
-CL_NS_USE(store)
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-MultiReader::MultiReader(IndexReader** subReaders):
- IndexReader(subReaders == NULL || subReaders[0] == NULL ? NULL : subReaders[0]->getDirectory()),
- normsCache(true, true)
-{
- initialize(subReaders);
-}
-
-MultiReader::MultiReader(Directory* directory, SegmentInfos* sis, IndexReader** subReaders):
- IndexReader(directory, sis, false),
- normsCache(true, true)
-{
- initialize(subReaders);
-}
-
-
-MultiReader::~MultiReader() {
-//Func - Destructor
-//Pre - true
-//Post - The instance has been destroyed all IndexReader instances
-// this instance managed have been destroyed to
-
- _CLDELETE_ARRAY(ones);
- _CLDELETE_ARRAY(starts);
-
- //Iterate through the subReaders and destroy each reader
- if (subReaders && subReadersLength > 0) {
- for (int32_t i = 0; i < subReadersLength; i++) {
- _CLDELETE(subReaders[i]);
- }
- }
- //Destroy the subReaders array
- _CLDELETE_ARRAY(subReaders);
-}
-
-void MultiReader::initialize(IndexReader** subReaders){
- this->subReadersLength = 0;
- this->subReaders = subReaders;
-
- //count the subReaders size
- if ( subReaders != NULL ){
- while ( subReaders[subReadersLength] != NULL ){
- subReadersLength++;
- }
- }
- _maxDoc = 0;
- _numDocs = -1;
- ones = NULL;
-
- starts = _CL_NEWARRAY(int32_t,subReadersLength + 1); // build starts array
- for (int32_t i = 0; i < subReadersLength; i++) {
- starts[i] = _maxDoc;
-
- // compute maxDocs
- _maxDoc += subReaders[i]->maxDoc();
- if (subReaders[i]->hasDeletions())
- _hasDeletions = true;
- }
- starts[subReadersLength] = _maxDoc;
-}
-
-bool MultiReader::getTermFreqVectors(int32_t n, Array<TermFreqVector*>& result){
- int32_t i = readerIndex(n); // find segment num
- return subReaders[i]->getTermFreqVectors(n - starts[i], result); // dispatch to segment
-}
-
-TermFreqVector* MultiReader::getTermFreqVector(int32_t n, const TCHAR* field){
- int32_t i = readerIndex(n); // find segment num
- return subReaders[i]->getTermFreqVector(n - starts[i], field);
-}
-
-
-int32_t MultiReader::numDocs() {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if (_numDocs == -1) { // check cache
- int32_t n = 0; // cache miss--recompute
- for (int32_t i = 0; i < subReadersLength; i++)
- n += subReaders[i]->numDocs(); // sum from readers
- _numDocs = n;
- }
- return _numDocs;
-}
-
-int32_t MultiReader::maxDoc() const {
- return _maxDoc;
-}
-
-bool MultiReader::document(int32_t n, CL_NS(document)::Document* doc){
- int32_t i = readerIndex(n); // find segment num
- return subReaders[i]->document(n - starts[i],doc); // dispatch to segment reader
-}
-
-bool MultiReader::isDeleted(const int32_t n) {
- int32_t i = readerIndex(n); // find segment num
- return subReaders[i]->isDeleted(n - starts[i]); // dispatch to segment reader
-}
-
-uint8_t* MultiReader::norms(const TCHAR* field){
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- uint8_t* bytes;
- bytes = normsCache.get(field);
- if (bytes != NULL){
- return bytes; // cache hit
- }
-
- if ( !hasNorms(field) )
- return fakeNorms();
-
- bytes = _CL_NEWARRAY(uint8_t,maxDoc());
- for (int32_t i = 0; i < subReadersLength; i++)
- subReaders[i]->norms(field, bytes + starts[i]);
-
- //Unfortunately the data in the normCache can get corrupted, since it's being loaded with string
- //keys that may be deleted while still in use by the map. To prevent this field is duplicated
- //and then stored in the normCache
- TCHAR* key = STRDUP_TtoT(field);
- //update cache
- normsCache.put(key, bytes);
-
- return bytes;
-}
-
-void MultiReader::norms(const TCHAR* field, uint8_t* result) {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- uint8_t* bytes = normsCache.get(field);
- if (bytes==NULL && !hasNorms(field))
- bytes=fakeNorms();
-
- if (bytes != NULL){ // cache hit
- int32_t len = maxDoc();
- memcpy(result,bytes,len * sizeof(int32_t));
- }
-
- for (int32_t i = 0; i < subReadersLength; i++) // read from segments
- subReaders[i]->norms(field, result + starts[i]);
-}
-
-
-void MultiReader::doSetNorm(int32_t n, const TCHAR* field, uint8_t value){
- normsCache.remove(field); // clear cache
- int32_t i = readerIndex(n); // find segment num
- subReaders[i]->setNorm(n-starts[i], field, value); // dispatch
-}
-
-TermEnum* MultiReader::terms() const {
- return _CLNEW MultiTermEnum(subReaders, starts, NULL);
-}
-
-TermEnum* MultiReader::terms(const Term* term) const {
- return _CLNEW MultiTermEnum(subReaders, starts, term);
-}
-
-int32_t MultiReader::docFreq(const Term* t) const {
- int32_t total = 0; // sum freqs in Multi
- for (int32_t i = 0; i < subReadersLength; i++)
- total += subReaders[i]->docFreq(t);
- return total;
-}
-
-TermDocs* MultiReader::termDocs() const {
- TermDocs* ret = _CLNEW MultiTermDocs(subReaders, starts);
- return ret;
-}
-
-TermPositions* MultiReader::termPositions() const {
- TermPositions* ret = (TermPositions*)_CLNEW MultiTermPositions(subReaders, starts);
- return ret;
-}
-
-void MultiReader::doDelete(const int32_t n) {
- _numDocs = -1; // invalidate cache
- int32_t i = readerIndex(n); // find segment num
- subReaders[i]->deleteDocument(n - starts[i]); // dispatch to segment reader
- _hasDeletions = true;
-}
-
-int32_t MultiReader::readerIndex(const int32_t n) const { // find reader for doc n:
- int32_t lo = 0; // search starts array
- int32_t hi = subReadersLength - 1; // for first element less
- // than n, return its index
- while (hi >= lo) {
- int32_t mid = (lo + hi) >> 1;
- int32_t midValue = starts[mid];
- if (n < midValue)
- hi = mid - 1;
- else if (n > midValue)
- lo = mid + 1;
- else{ // found a match
- while (mid+1 < subReadersLength && starts[mid+1] == midValue) {
- mid++; // scan to last match
- }
- return mid;
- }
- }
- return hi;
-}
-
-bool MultiReader::hasNorms(const TCHAR* field) {
- for (int i = 0; i < subReadersLength; i++) {
- if (subReaders[i]->hasNorms(field))
- return true;
- }
- return false;
-}
-uint8_t* MultiReader::fakeNorms() {
- if (ones==NULL)
- ones=SegmentReader::createFakeNorms(maxDoc());
- return ones;
-}
-
-void MultiReader::doUndeleteAll(){
- for (int32_t i = 0; i < subReadersLength; i++)
- subReaders[i]->undeleteAll();
- _hasDeletions = false;
- _numDocs = -1;
-}
-void MultiReader::doCommit() {
- for (int32_t i = 0; i < subReadersLength; i++)
- subReaders[i]->commit();
-}
-
-void MultiReader::doClose() {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- for (int32_t i = 0; i < subReadersLength; i++){
- subReaders[i]->close();
- }
-}
-
-
-void MultiReader::getFieldNames(FieldOption fldOption, StringArrayWithDeletor& retarray){
- StringArrayWithDeletor temp;
- CLHashList<TCHAR*> hashList;
- for (int32_t i = 0; i < subReadersLength; i++) {
- IndexReader* reader = subReaders[i];
- reader->getFieldNames(fldOption, temp);
-
- //create a unique list of names.
- StringArrayWithDeletor::iterator itr = temp.begin();
- while ( itr != temp.end() ){
- if ( hashList.find(*itr) == hashList.end() )
- hashList.insert(STRDUP_TtoT(*itr));
- itr++;
- }
- }
- //move the items into the return
- CLHashList<TCHAR*>::iterator itr = hashList.begin();
- while ( itr != hashList.end() ){
- retarray.push_back(*itr);//no need to copy, already done!
- itr++;
- }
-}
-
-
-MultiTermDocs::MultiTermDocs(){
-//Func - Default constructor
-// Initialises an empty MultiTermDocs.
-// This constructor is needed to allow the constructor of MultiTermPositions
-// initialise the instance by itself
-//Pre - true
-//Post - An empty
-
- subReaders = NULL;
- subReadersLength = 0;
- starts = NULL;
- base = 0;
- pointer = 0;
- current = NULL;
- term = NULL;
- readerTermDocs = NULL;
-}
-
-MultiTermDocs::MultiTermDocs(IndexReader** r, const int32_t* s){
-//Func - Constructor
-//Pre - if r is NULL then rLen must be 0 else if r != NULL then rLen > 0
-// s != NULL
-//Post - The instance has been created
-
- //count readers
- subReadersLength = 0;
- subReaders = r;
-
- CND_PRECONDITION(s != NULL, "s is NULL");
-
- if ( subReaders != NULL ){
- while ( subReaders[subReadersLength] != NULL )
- subReadersLength++;
- }
-
- starts = s;
- base = 0;
- pointer = 0;
- current = NULL;
- term = NULL;
-
- readerTermDocs = NULL;
-
- //Check if there are subReaders
- if(subReaders != NULL && subReadersLength > 0){
- readerTermDocs = _CL_NEWARRAY(TermDocs*, subReadersLength+1);
-
- CND_CONDITION(readerTermDocs != NULL,"No memory could be allocated for readerTermDocs");
-
- //Initialize the readerTermDocs pointer array to NULLs
- for ( int32_t i=0;i<subReadersLength+1;i++){
- readerTermDocs[i]=NULL;
- }
- }
-}
-
-MultiTermDocs::~MultiTermDocs(){
-//Func - Destructor
-//Pre - true
-//Post - The instance has been destroyed
-
- close();
-}
-
-
-TermPositions* MultiTermDocs::__asTermPositions(){
- return NULL;
-}
-
-int32_t MultiTermDocs::doc() const {
- CND_PRECONDITION(current!=NULL,"current==NULL, check that next() was called");
- return base + current->doc();
-}
-int32_t MultiTermDocs::freq() const {
- CND_PRECONDITION(current!=NULL,"current==NULL, check that next() was called");
- return current->freq();
-}
-
-void MultiTermDocs::seek(TermEnum* termEnum){
- seek(termEnum->term(false));
-}
-
-void MultiTermDocs::seek( Term* tterm) {
-//Func - Resets the instance for a new search
-//Pre - tterm != NULL
-//Post - The instance has been reset for a new search
-
- CND_PRECONDITION(tterm != NULL, "tterm is NULL");
-
- //Assigning tterm is done as below for a reason
- //The construction ensures that if seek is called from within
- //MultiTermDocs with as argument this->term (seek(this->term)) that the assignment
- //will succeed and all referencecounters represent the correct situation
-
- //Get a pointer from tterm and increase its reference counter
- Term *TempTerm = _CL_POINTER(tterm);
-
- //Finialize term to ensure we decrease the reference counter of the instance which term points to
- _CLDECDELETE(term);
-
- //Assign TempTerm to term
- term = TempTerm;
-
- base = 0;
- pointer = 0;
- current = NULL;
-}
-
-bool MultiTermDocs::next() {
- if (current != NULL && current->next()) {
- return true;
- } else if (pointer < subReadersLength) {
- base = starts[pointer];
- current = termDocs(pointer++);
- return next();
- } else
- return false;
-}
-
-int32_t MultiTermDocs::read(int32_t* docs, int32_t* freqs, int32_t length) {
- while (true) {
- while (current == NULL) {
- if (pointer < subReadersLength) { // try next segment
- base = starts[pointer];
- current = termDocs(pointer++);
- } else {
- return 0;
- }
- }
- int32_t end = current->read(docs, freqs,length);
- if (end == 0) { // none left in segment
- current = NULL;
- } else { // got some
- int32_t b = base; // adjust doc numbers
- for (int32_t i = 0; i < end; i++)
- docs[i] += b;
- return end;
- }
- }
-}
-
-bool MultiTermDocs::skipTo(const int32_t target) {
- do {
- if (!next())
- return false;
- } while (target > doc());
- return true;
-}
-
-void MultiTermDocs::close() {
-//Func - Closes all MultiTermDocs managed by this instance
-//Pre - true
-//Post - All the MultiTermDocs have been closed
-
-
- //Check if readerTermDocs is valid
- if (readerTermDocs){
- TermDocs* curTD = NULL;
- //iterate through the readerTermDocs array
- for (int32_t i = 0; i < subReadersLength; i++) {
- //Retrieve the i-th TermDocs instance
- curTD = readerTermDocs[i];
-
- //Check if it is a valid pointer
- if (curTD != NULL) {
- //Close it
- curTD->close();
- _CLDELETE(curTD);
- }
- }
-
- _CLDELETE_ARRAY(readerTermDocs);
- }
-
- //current previously pointed to a member of readerTermDocs; ensure that
- //it doesn't now point to invalid memory.
- current = NULL;
- base = 0;
- pointer = 0;
-
- _CLDECDELETE(term);
-}
-
-TermDocs* MultiTermDocs::termDocs(const IndexReader* reader) const {
- TermDocs* ret = reader->termDocs();
- return ret;
-}
-
-TermDocs* MultiTermDocs::termDocs(const int32_t i) const {
- if (term == NULL)
- return NULL;
- TermDocs* result = readerTermDocs[i];
- if (result == NULL){
- readerTermDocs[i] = termDocs(subReaders[i]);
- result = readerTermDocs[i];
- }
- result->seek(term);
-
- return result;
-}
-
-
-MultiTermEnum::MultiTermEnum(
- IndexReader** subReaders, const int32_t *starts, const Term* t){
-//Func - Constructor
-// Opens all enumerations of all readers
-//Pre - readers != NULL and contains an array of IndexReader instances each responsible for
-// reading a single segment
-// subReadersLength >= 0 and represents the number of readers in the readers array
-// starts is an array of
-//Post - An instance of has been created
-
-//Pre - if readers is NULL then subReadersLength must be 0 else if readers != NULL then subReadersLength > 0
-// s != NULL
-//Post - The instance has been created
-
- int32_t subReadersLength = 0;
- if ( subReaders != NULL ){
- while ( subReaders[subReadersLength] != NULL )
- subReadersLength++;
- }
- CND_PRECONDITION(starts != NULL,"starts is NULL");
-
- //Temporary variables
- IndexReader* reader = NULL;
- TermEnum* termEnum = NULL;
- SegmentMergeInfo* smi = NULL;
- _docFreq = 0;
- _term = NULL;
- queue = _CLNEW SegmentMergeQueue(subReadersLength);
-
- CND_CONDITION (queue != NULL, "Could not allocate memory for queue");
-
- //iterate through all the readers
- for ( int32_t i=0;i<subReadersLength;i++ ) {
- //Get the i-th reader
- reader = subReaders[i];
-
- //Check if the enumeration must start from term t
- if (t != NULL) {
- //termEnum is an enumeration of terms starting at or after the named term t
- termEnum = reader->terms(t);
- }else{
- //termEnum is an enumeration of all the Terms and TermInfos in the set.
- termEnum = reader->terms();
- }
-
- //Instantiate an new SegmentMerginfo
- smi = _CLNEW SegmentMergeInfo(starts[i], termEnum, reader);
-
- // Note that in the call termEnum->getTerm(false) below false is required because
- // otherwise a reference is leaked. By passing false getTerm is
- // ordered to return an unowned reference instead. (Credits for DSR)
- if (t == NULL ? smi->next() : termEnum->term(false) != NULL){
- // initialize queue
- queue->put(smi);
- } else{
- //Close the SegmentMergeInfo
- smi->close();
- //And have it deleted
- _CLDELETE(smi);
- }
- }
-
- //Check if the queue has elements
- if (t != NULL && queue->size() > 0) {
- next();
- }
-}
-
-MultiTermEnum::~MultiTermEnum(){
-//Func - Destructor
-//Pre - true
-//Post - All the resource have been freed and the instance has been deleted
-
- //Close the enumeration
- close();
-
- //Delete the queue
- _CLDELETE(queue);
-}
-
-bool MultiTermEnum::next(){
-//Func - Move the current term to the next in the set of enumerations
-//Pre - true
-//Post - Returns true if term has been moved to the next in the set of enumerations
-// Returns false if this was not possible
-
- SegmentMergeInfo* top = queue->top();
- if (top == NULL) {
- _CLDECDELETE(_term);
- _term = NULL;
- return false;
- }
-
- //The getTerm method requires the client programmer to indicate whether he
- // owns the returned reference, so we can discard ours
- // right away.
- _CLDECDELETE(_term);
-
- //Assign term the term of top and make sure the reference counter is increased
- _term = _CL_POINTER(top->term);
- _docFreq = 0;
-
- //Find the next term
- while (top != NULL && _term->compareTo(top->term) == 0) {
- //don't delete, this is the top
- queue->pop();
- // increment freq
- _docFreq += top->termEnum->docFreq();
- if (top->next()){
- // restore queue
- queue->put(top);
- }else{
- // done with a segment
- top->close();
- _CLDELETE(top);
- }
- top = queue->top();
- }
-
- return true;
-}
-
-
-Term* MultiTermEnum::term() {
-//Func - Returns the current term of the set of enumerations
-//Pre - pointer is true or false and indicates if the reference counter
-// of term must be increased or not
-// next() must have been called once!
-//Post - pointer = true -> term has been returned with an increased reference counter
-// pointer = false -> term has been returned
-
- return _CL_POINTER(_term);
-}
-
-Term* MultiTermEnum::term(bool pointer) {
- if ( pointer )
- return _CL_POINTER(_term);
- else
- return _term;
-}
-
-int32_t MultiTermEnum::docFreq() const {
-//Func - Returns the document frequency of the current term in the set
-//Pre - termInfo != NULL
-// next() must have been called once
-//Post - The document frequency of the current enumerated term has been returned
-
- return _docFreq;
-}
-
-
-void MultiTermEnum::close() {
-//Func - Closes the set of enumerations in the queue
-//Pre - queue holds a valid reference to a SegmentMergeQueue
-//Post - The queue has been closed all SegmentMergeInfo instance have been deleted by
-// the closing of the queue
-// term has been finalized and reset to NULL
-
- // Needed when this enumeration hasn't actually been exhausted yet
- _CLDECDELETE(_term);
-
- //Close the queue This will destroy all SegmentMergeInfo instances!
- queue->close();
-
-}
-
-
-
-
-
-MultiTermPositions::MultiTermPositions(IndexReader** r, const int32_t* s){
-//Func - Constructor
-//Pre - if r is NULL then rLen must be 0 else if r != NULL then rLen > 0
-// s != NULL
-//Post - The instance has been created
-
- subReaders = r;
- subReadersLength = 0;
- if ( subReaders != NULL ){
- while ( subReaders[subReadersLength] != NULL )
- subReadersLength ++ ;
- }
-
- CND_PRECONDITION(s != NULL, "s is NULL");
-
- starts = s;
- base = 0;
- pointer = 0;
- current = NULL;
- term = NULL;
-
- readerTermDocs = NULL;
-
- //Check if there are readers
- if(subReaders != NULL && subReadersLength > 0){
- readerTermDocs = (TermDocs**)_CL_NEWARRAY(SegmentTermPositions*,subReadersLength);
-
- CND_CONDITION(readerTermDocs != NULL,"No memory could be allocated for readerTermDocs");
-
- //Initialize the readerTermDocs pointer array
- for ( int32_t i=0;i<subReadersLength;i++){
- readerTermDocs[i]=NULL;
- }
- }
-}
-
-
-TermDocs* MultiTermPositions::__asTermDocs(){
- return (TermDocs*) this;
-}
-TermPositions* MultiTermPositions::__asTermPositions(){
- return (TermPositions*) this;
-}
-
-
-TermDocs* MultiTermPositions::termDocs(const IndexReader* reader) const {
-// Here in the MultiTermPositions class, we want this->current to always
-// be a SegmentTermPositions rather than merely a SegmentTermDocs.
-// To that end, we override the termDocs(IndexReader&) method to produce
-// a SegmentTermPositions via the underlying reader's termPositions method
-// rather merely producing a SegmentTermDocs via the reader's termDocs
-// method.
-
- TermPositions* tp = reader->termPositions();
- TermDocs* ret = tp->__asTermDocs();
-
- CND_CONDITION(ret != NULL,
- "Dynamic downcast in MultiTermPositions::termDocs from"
- " TermPositions to TermDocs failed."
- );
- return ret;
- }
-
-int32_t MultiTermPositions::nextPosition() {
- //Func -
- //Pre - current != NULL
- //Post -
- CND_PRECONDITION(current != NULL,"current is NULL");
-
- TermPositions* curAsTP = current->__asTermPositions();
-
- CND_CONDITION(curAsTP != NULL,
- "Dynamic downcast in MultiTermPositions::nextPosition from"
- " SegmentTermDocs to TermPositions failed."
- )
- return curAsTP->nextPosition();
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.h b/src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.h
deleted file mode 100644
index 1d76814e1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/MultiReader.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_MultiReader
-#define _lucene_index_MultiReader
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SegmentHeader.h"
-#include "IndexReader.h"
-#include "CLucene/document/Document.h"
-#include "Terms.h"
-#include "SegmentMergeQueue.h"
-
-CL_NS_DEF(index)
-
-/** An IndexReader which reads multiple indexes, appending their content.
-*/
-class MultiTermDocs:public virtual TermDocs {
-private:
-protected:
- TermDocs** readerTermDocs;
-
- IndexReader** subReaders;
- int32_t subReadersLength;
- const int32_t* starts;
- Term* term;
-
- int32_t base;
- int32_t pointer;
-
- TermDocs* current; // == segTermDocs[pointer]
-public:
- MultiTermDocs();
- MultiTermDocs(IndexReader** subReaders, const int32_t* s);
- virtual ~MultiTermDocs();
-
- int32_t doc() const;
- int32_t freq() const;
-
- void seek(TermEnum* termEnum);
- void seek(Term* tterm);
- bool next();
-
- /** Optimized implementation. */
- int32_t read(int32_t* docs, int32_t* freqs, int32_t length);
-
- /** As yet unoptimized implementation. */
- bool skipTo(const int32_t target);
-
- void close();
-
- virtual TermPositions* __asTermPositions();
-protected:
- virtual TermDocs* termDocs(const IndexReader* reader) const;
-private:
- TermDocs* termDocs(const int32_t i) const;
-
-};
-
-
-//MultiTermEnum represents the enumeration of all terms of all readers
-class MultiTermEnum:public TermEnum {
-private:
- SegmentMergeQueue* queue;
-
- Term* _term;
- int32_t _docFreq;
-public:
- //Constructor
- //Opens all enumerations of all readers
- MultiTermEnum(IndexReader** subReaders, const int32_t* starts, const Term* t);
-
- //Destructor
- ~MultiTermEnum();
-
- //Move the current term to the next in the set of enumerations
- bool next();
-
- //Returns a pointer to the current term of the set of enumerations
- Term* term();
- Term* term(bool pointer);
-
- //Returns the document frequency of the current term in the set
- int32_t docFreq() const;
-
- //Closes the set of enumerations in the queue
- void close();
-
-
- const char* getObjectName(){ return MultiTermEnum::getClassName(); }
- static const char* getClassName(){ return "MultiTermEnum"; }
-};
-
-
-class MultiTermPositions:public MultiTermDocs,public TermPositions {
-public:
- MultiTermPositions(IndexReader** subReaders, const int32_t* s);
- ~MultiTermPositions() {};
- int32_t nextPosition();
-
-
- virtual TermDocs* __asTermDocs();
- virtual TermPositions* __asTermPositions();
-protected:
- TermDocs* termDocs(const IndexReader* reader) const;
-};
-
-
-class MultiReader:public IndexReader{
-private:
- bool _hasDeletions;
- IndexReader** subReaders;
- int32_t subReadersLength;
- int32_t* starts; // 1st docno for each segment
-
- CL_NS(util)::CLHashtable<const TCHAR*,uint8_t*,
- CL_NS(util)::Compare::TChar,
- CL_NS(util)::Equals::TChar,
- CL_NS(util)::Deletor::tcArray,
- CL_NS(util)::Deletor::Array<uint8_t> > normsCache;
- int32_t _maxDoc;
- int32_t _numDocs;
- void initialize(IndexReader** subReaders);
-
- int32_t readerIndex(const int32_t n) const;
-
- bool hasNorms(const TCHAR* field);
- uint8_t* ones;
- uint8_t* fakeNorms();
-protected:
- void doSetNorm(int32_t n, const TCHAR* field, uint8_t value);
- void doUndeleteAll();
- void doCommit();
- // synchronized
- void doClose();
-
- // synchronized
- void doDelete(const int32_t n);
-public:
- /** Construct reading the named set of readers. */
- MultiReader(CL_NS(store)::Directory* directory, SegmentInfos* sis, IndexReader** subReaders);
-
- /**
- * <p>Construct a MultiReader aggregating the named set of (sub)readers.
- * Directory locking for delete, undeleteAll, and setNorm operations is
- * left to the subreaders. </p>
- * <p>Note that all subreaders are closed if this Multireader is closed.</p>
- * @param subReaders set of (sub)readers
- * @throws IOException
- */
- MultiReader(IndexReader** subReaders);
-
- ~MultiReader();
-
- /** Return an array of term frequency vectors for the specified document.
- * The array contains a vector for each vectorized field in the document.
- * Each vector vector contains term numbers and frequencies for all terms
- * in a given vectorized field.
- * If no such fields existed, the method returns null.
- */
- bool getTermFreqVectors(int32_t n, Array<TermFreqVector*>& result);
- TermFreqVector* getTermFreqVector(int32_t n, const TCHAR* field);
-
-
- // synchronized
- int32_t numDocs();
-
- int32_t maxDoc() const;
-
- bool document(int32_t n, CL_NS(document)::Document* doc);
-
- bool isDeleted(const int32_t n);
- bool hasDeletions() const{ return _hasDeletions; }
-
- // synchronized
- uint8_t* norms(const TCHAR* field);
- void norms(const TCHAR* field, uint8_t* result);
-
- TermEnum* terms() const;
- TermEnum* terms(const Term* term) const;
-
- //Returns the document frequency of the current term in the set
- int32_t docFreq(const Term* t=NULL) const;
- TermDocs* termDocs() const;
- TermPositions* termPositions() const;
-
-
- /**
- * @see IndexReader#getFieldNames(IndexReader.FieldOption fldOption)
- */
- void getFieldNames(FieldOption fldOption, CL_NS(util)::StringArrayWithDeletor& retarray);
-};
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentHeader.h b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentHeader.h
deleted file mode 100644
index 744cbb4bd..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentHeader.h
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_SegmentHeader_
-#define _lucene_index_SegmentHeader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-
-#include "SegmentInfos.h"
-#include "CLucene/util/BitSet.h"
-#include "CLucene/util/VoidMap.h"
-#include "Term.h"
-#include "FieldInfos.h"
-#include "FieldsReader.h"
-#include "IndexReader.h"
-#include "TermInfosReader.h"
-#include "CompoundFile.h"
-#include "CLucene/util/ThreadLocal.h"
-
-CL_NS_DEF(index)
-
-class SegmentReader;
-
-class SegmentTermDocs : public virtual TermDocs
-{
- int32_t _doc;
- int32_t skipInterval;
- int32_t numSkips;
- int32_t skipCount;
- CL_NS(store)::IndexInput* skipStream;
- int32_t skipDoc;
- int64_t freqPointer;
- int64_t proxPointer;
- int64_t skipPointer;
- bool haveSkipped;
-
-protected:
- // SegmentReader parent
- const SegmentReader* parent;
- CL_NS(store)::IndexInput* freqStream;
- int32_t count;
- int32_t df;
- int32_t _freq;
- CL_NS(util)::BitSet* deletedDocs;
-public:
- virtual ~SegmentTermDocs();
-
- virtual void seek(TermEnum* termEnum);
- virtual void seek(Term* term);
- virtual void seek(const TermInfo* ti);
-
- virtual void close();
- virtual int32_t doc()const;
- virtual int32_t freq()const;
-
- virtual bool next();
-
- /** Optimized implementation. */
- virtual int32_t read(int32_t* docs, int32_t* freqs, int32_t length);
-
- /** Optimized implementation. */
- virtual bool skipTo(const int32_t target);
-
- virtual TermPositions* __asTermPositions();
-
- // \param Parent must be a segment reader
- SegmentTermDocs( const SegmentReader* Parent);
-protected:
- virtual void skippingDoc(){}
- virtual void skipProx(int64_t proxPointer){}
-};
-
-
-class SegmentTermPositions : public SegmentTermDocs, public TermPositions
-{
-private:
- CL_NS(store)::IndexInput* proxStream;
- int32_t proxCount;
- int32_t position;
-
-public:
- // \param Parent must be a segment reader
- SegmentTermPositions(const SegmentReader* Parent);
- ~SegmentTermPositions();
-
- void seek(const TermInfo* ti);
- void close();
- int32_t nextPosition();
- bool next();
- int32_t read(int32_t* docs, int32_t* freqs, int32_t length);
- virtual TermDocs* __asTermDocs();
- virtual TermPositions* __asTermPositions();
-
- //resolve SegmentTermDocs/TermPositions ambiguity
- void seek(Term* term){ SegmentTermDocs::seek(term); }
- void seek(TermEnum* termEnum){ SegmentTermDocs::seek(termEnum); }
- int32_t doc() const{ return SegmentTermDocs::doc(); }
- int32_t freq() const{ return SegmentTermDocs::freq(); }
- bool skipTo(const int32_t target){ return SegmentTermDocs::skipTo(target); }
-
-protected:
- void skippingDoc();
- /** Called by super.skipTo(). */
- void skipProx(int64_t proxPointer);
-};
-
-// An IndexReader responsible for reading 1 segment of an index
-class SegmentReader : public IndexReader
-{
- /**
- * The class Norm represents the normalizations for a field.
- * These normalizations are read from an IndexInput in into an array of bytes called bytes
- */
- class Norm : LUCENE_BASE
- {
- int32_t number;
- SegmentReader* reader;
- QString segment; // segment name
-
- public:
- CL_NS(store)::IndexInput* in;
- uint8_t* bytes;
- bool dirty;
- //Constructor
- Norm(CL_NS(store)::IndexInput* instrm, int32_t number,
- SegmentReader* reader, const QString& segment);
- //Destructor
- ~Norm();
-
- void reWrite();
- };
- friend class SegmentReader::Norm;
-
- //Holds the name of the segment that is being read
- QString segment;
-
- //Indicates if there are documents marked as deleted
- bool deletedDocsDirty;
- bool normsDirty;
- bool undeleteAll;
-
- //Holds all norms for all fields in the segment
- typedef CL_NS(util)::CLHashtable<const TCHAR*,
- Norm*,CL_NS(util)::Compare::TChar, CL_NS(util)::Equals::TChar> NormsType;
- NormsType _norms;
-
- uint8_t* ones;
- uint8_t* fakeNorms();
-
- // Compound File Reader when based on a compound file segment
- CompoundFileReader* cfsReader;
- // Reads the Field Info file
- FieldsReader* fieldsReader;
- TermVectorsReader* termVectorsReaderOrig;
- CL_NS(util)::ThreadLocal<TermVectorsReader*,
- CL_NS(util)::Deletor::Object<TermVectorsReader> >termVectorsLocal;
-
- void initialize(SegmentInfo* si);
-
- // Create a clone from the initial TermVectorsReader and store it in the
- // ThreadLocal. @return TermVectorsReader
- TermVectorsReader* getTermVectorsReader();
-
-protected:
- // Marks document docNum as deleted
- void doDelete(const int32_t docNum);
- void doUndeleteAll();
- void doCommit();
- void doSetNorm(int32_t doc, const TCHAR* field, uint8_t value);
-
- // can return null if norms aren't stored
- uint8_t* getNorms(const TCHAR* field);
-
-public:
- /**
- Func - Constructor.
- Opens all files of a segment
- .fnm -> Field Info File
- Field names are stored in the field info file, with suffix .fnm.
- .frq -> Frequency File
- The .frq file contains the lists of documents which contain
- each term, along with the frequency of the term in that document.
- .prx -> Prox File
- The prox file contains the lists of positions that each term occurs
- at within documents.
- .tis -> Term Info File
- This file is sorted by Term. Terms are ordered first lexicographically
- by the term's field name, and within that lexicographically by the term's text.
- .del -> Deletion File
- The .del file is optional, and only exists when a segment contains deletions
- .f[0-9]* -> Norm File
- Contains s, for each document, a byte that encodes a value that is
- multiplied into the score for hits on that field:
- */
- SegmentReader(SegmentInfo* si);
-
- SegmentReader(SegmentInfos* sis, SegmentInfo* si);
- // Destructor.
- virtual ~SegmentReader();
-
- // Closes all streams to the files of a single segment
- void doClose();
-
- // Checks if a segment managed by SegmentInfo si has deletions
- static bool hasDeletions(const SegmentInfo* si);
- bool hasDeletions() const;
- bool hasNorms(const TCHAR* field) const;
-
- // Returns all file names managed by this SegmentReader
- void files(QStringList& retarray);
- // Returns an enumeration of all the Terms and TermInfos in the set.
- TermEnum* terms() const;
- // Returns an enumeration of terms starting at or after the named term t
- TermEnum* terms(const Term* t) const;
-
- // Gets the document identified by n
- bool document(int32_t n, CL_NS(document)::Document* doc);
-
- // Checks if the n-th document has been marked deleted
- bool isDeleted(const int32_t n);
-
- // Returns an unpositioned TermDocs enumerator.
- TermDocs* termDocs() const;
- // Returns an unpositioned TermPositions enumerator.
- TermPositions* termPositions() const;
-
- // Returns the number of documents which contain the term t
- int32_t docFreq(const Term* t) const;
-
- // Returns the actual number of documents in the segment
- int32_t numDocs();
- // Returns the number of all the documents in the segment including the
- // ones that have been marked deleted
- int32_t maxDoc() const;
-
- // Returns the bytes array that holds the norms of a named field.
- // Returns fake norms if norms aren't available
- uint8_t* norms(const TCHAR* field);
-
- // Reads the Norms for field from disk
- void norms(const TCHAR* field, uint8_t* bytes);
-
- // concatenating segment with ext and x
- QString SegmentName(const QString& ext, const int32_t x = -1);
- // Creates a filename in buffer by concatenating segment with ext and x
- void SegmentName(QString& buffer, int32_t bufferLen, const QString& ext,
- const int32_t x = -1);
-
- /**
- * @see IndexReader#getFieldNames(IndexReader.FieldOption fldOption)
- */
- void getFieldNames(FieldOption fldOption, CL_NS(util)::StringArrayWithDeletor& retarray);
-
- static bool usesCompoundFile(SegmentInfo* si);
-
- /** Return a term frequency vector for the specified document and field. The
- * vector returned contains term numbers and frequencies for all terms in
- * the specified field of this document, if the field had storeTermVector
- * flag set. If the flag was not set, the method returns null.
- * @throws IOException
- */
- TermFreqVector* getTermFreqVector(int32_t docNumber, const TCHAR* field = NULL);
-
- /** Return an array of term frequency vectors for the specified document.
- * The array contains a vector for each vectorized field in the document.
- * Each vector vector contains term numbers and frequencies for all terms
- * in a given vectorized field.
- * If no such fields existed, the method returns null.
- * @throws IOException
- */
- bool getTermFreqVectors(int32_t docNumber, Array<TermFreqVector*>& result);
-
-private:
- //Open all norms files for all fields
- void openNorms(CL_NS(store)::Directory* cfsDir);
- //Closes all norms files
- void closeNorms();
-
- // a bitVector that manages which documents have been deleted
- CL_NS(util)::BitSet* deletedDocs;
- // an IndexInput to the frequency file
- CL_NS(store)::IndexInput* freqStream;
- // For reading the fieldInfos file
- FieldInfos* fieldInfos;
- // For reading the Term Dictionary .tis file
- TermInfosReader* tis;
- // an IndexInput to the prox file
- CL_NS(store)::IndexInput* proxStream;
-
- static bool hasSeparateNorms(SegmentInfo* si);
- static uint8_t* createFakeNorms(int32_t size);
-
- // allow various classes to access the internals of this. this allows us
- // to have a more tight idea of the package
- friend class IndexReader;
- friend class IndexWriter;
- friend class SegmentTermDocs;
- friend class SegmentTermPositions;
- friend class MultiReader;
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.cpp
deleted file mode 100644
index 5074ce9d3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.cpp
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "SegmentInfos.h"
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/util/Misc.h"
-
-CL_NS_USE(store)
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-SegmentInfo::SegmentInfo(const QString& Name, const int32_t DocCount,
- CL_NS(store)::Directory* Dir)
- : docCount(DocCount)
- , dir(Dir)
-{
- //Func - Constructor. Initialises SegmentInfo.
- //Pre - Name holds the unique name in the directory Dir
- // DocCount holds the number of documents in the segment
- // Dir holds the Directory where the segment resides
- //Post - The instance has been created. name contains the duplicated string
- // Name. docCount = DocCount and dir references Dir
- name = Name;
-}
-
-SegmentInfo::~SegmentInfo()
-{
-}
-
-SegmentInfos::SegmentInfos(bool _deleteMembers)
- : deleteMembers(_deleteMembers)
-{
- //Func - Constructor
- //Pre - deleteMembers indicates if the instance to be created must delete
- // all SegmentInfo instances it manages when the instance is destroyed
- // or not true -> must delete, false may not delete
- //Post - An instance of SegmentInfos has been created.
-
- //initialize counter to 0
- counter = 0;
- version = Misc::currentTimeMillis();
-}
-
-SegmentInfos::~SegmentInfos()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed. Depending on the constructor used
- // the SegmentInfo instances that this instance managed have been
- // deleted or not.
-
- if (deleteMembers) {
- segmentInfosType::iterator it;
- for (it = infos.begin(); it != infos.end(); ++it)
- _CLLDELETE(*it);
- }
- //Clear the list of SegmentInfo instances - make sure everything is deleted
- infos.clear();
-}
-
-SegmentInfo* SegmentInfos::info(int32_t i) const
-{
- //Func - Returns a reference to the i-th SegmentInfo in the list.
- //Pre - i >= 0
- //Post - A reference to the i-th SegmentInfo instance has been returned
-
- CND_PRECONDITION(i >= 0, "i contains negative number");
-
- //Get the i-th SegmentInfo instance
- SegmentInfo *ret = infos.value(i, 0);
-
- //Condition check to see if the i-th SegmentInfo has been retrieved
- CND_CONDITION(ret != NULL, "No SegmentInfo instance found");
-
- return ret;
-}
-
-void SegmentInfos::clearto(size_t _min)
-{
- // Make sure we actually need to remove
- if (infos.size() > _min) {
- segmentInfosType::iterator itr;
- segmentInfosType::iterator eitr = infos.end();
- segmentInfosType::iterator bitr = infos.begin() + _min;
-
- for(itr = bitr; itr != eitr; ++itr)
- _CLLDELETE((*itr));
- infos.erase(bitr, eitr);
- }
-}
-
-void SegmentInfos::add(SegmentInfo* info)
-{
- infos.push_back(info);
-}
-
-int32_t SegmentInfos::size() const
-{
- return infos.size();
-}
-
-void SegmentInfos::read(Directory* directory)
-{
- //Func - Reads segments file that resides in directory.
- //Pre - directory contains a valid reference
- //Post - The segments file has been read and for each segment found
- // a SegmentsInfo intance has been created and stored.
-
- //Open an IndexInput to the segments file and check if valid
- IndexInput* input = directory->openInput(QLatin1String("segments"));
- if (input) {
- try {
- int32_t format = input->readInt();
- // file contains explicit format info
- if (format < 0) {
- // check that it is a format we can understand
- if (format < FORMAT) {
- TCHAR err[30];
- _sntprintf(err, 30, _T("Unknown format version: %d"), format);
- _CLTHROWT(CL_ERR_Runtime, err);
- }
- // read version
- version = input->readLong();
- // read counter
- counter = input->readInt();
- } else {
- // file is in old format without explicit format info
- counter = format;
- }
-
- //Temporary variable for storing the name of the segment
- char aname[CL_MAX_PATH] = { 0 };
- TCHAR tname[CL_MAX_PATH] = { 0 };
-
- //read segmentInfos
- for (int32_t i = input->readInt(); i > 0; --i) {
- // read the name of the segment
- input->readString(tname, CL_MAX_PATH);
- STRCPY_TtoA(aname, tname, CL_MAX_PATH);
-
- //Instantiate a new SegmentInfo Instance
- SegmentInfo* si = _CLNEW SegmentInfo(QLatin1String(aname),
- input->readInt(), directory);
-
- //Condition check to see if si points to an instance
- CND_CONDITION(si != NULL, "Memory allocation for si failed") ;
-
- //store SegmentInfo si
- infos.push_back(si);
- }
-
- if (format >= 0) {
- // in old format the version number may be at the end of the file
- if (input->getFilePointer() >= input->length()) {
- // old file format without version number
- version = Misc::currentTimeMillis();
- } else {
- // read version
- version = input->readLong();
- }
- }
- } _CLFINALLY (
- //destroy the inputStream input. The destructor of IndexInput will
- //also close the Inputstream input
- _CLDELETE(input);
- );
- }
-}
-
-void SegmentInfos::write(Directory* directory)
-{
- //Func - Writes a new segments file based upon the SegmentInfo instances it manages
- //Pre - directory is a valid reference to a Directory
- //Post - The new segment has been written to disk
-
- //Open an IndexOutput to the segments file and check if valid
- IndexOutput* output = directory->createOutput(QLatin1String("segments.new"));
- if (output) {
- try {
- // write FORMAT
- output->writeInt(FORMAT);
- // every write changes the index
- output->writeLong(++version);
- // Write the counter
- output->writeInt(counter);
-
- // Write the number of SegmentInfo Instances which is equal to the number
- // of segments in directory as each SegmentInfo manages a single segment
- output->writeInt(infos.size());
-
- //temporary value for wide segment name
- TCHAR tname[CL_MAX_PATH];
-
- //Iterate through all the SegmentInfo instances
- for (uint32_t i = 0; i < infos.size(); ++i) {
- //Retrieve the SegmentInfo
- SegmentInfo *si = infos.value(i, 0);
- //Condition check to see if si has been retrieved
- CND_CONDITION(si != NULL, "No SegmentInfo instance found");
-
- //Write the name of the current segment
- int32_t count = si->name.toWCharArray(tname);
- tname[count] = '\0';
- output->writeString(tname, _tcslen(tname));
-
- //Write the number of documents in the segment
- output->writeInt(si->docCount);
- }
- } _CLFINALLY(
- output->close();
- _CLDELETE(output);
- );
-
- // install new segment info
- directory->renameFile(QLatin1String("segments.new"),
- QLatin1String("segments"));
- }
-}
-
-
-int64_t SegmentInfos::readCurrentVersion(Directory* directory)
-{
- int32_t format = 0;
- int64_t version = 0;
- IndexInput* input = directory->openInput(QLatin1String("segments"));
- try {
- format = input->readInt();
- if (format < 0){
- if (format < FORMAT) {
- TCHAR err[30];
- _sntprintf(err, 30, _T("Unknown format version: %d"), format);
- _CLTHROWT(CL_ERR_Runtime, err);
- }
- // read version
- version = input->readLong();
- }
- } _CLFINALLY (
- input->close();
- _CLDELETE(input);
- );
-
- if (format < 0)
- return version;
-
- // We cannot be sure about the format of the file. Therefore we have to
- // read the whole file and cannot simply seek to the version entry.
- SegmentInfos segmentInfos;
- segmentInfos.read(directory);
- return segmentInfos.getVersion();
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.h b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.h
deleted file mode 100644
index 025afe202..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentInfos.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_SegmentInfos_
-#define _lucene_index_SegmentInfos_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-#include <QtCore/QVector>
-
-#include "CLucene/store/Directory.h"
-
-CL_NS_DEF(index)
-
-class SegmentInfo : LUCENE_BASE
-{
-public:
- SegmentInfo(const QString& Name, const int32_t DocCount,
- CL_NS(store)::Directory* Dir);
- ~SegmentInfo();
-
- ///Gets the Directory where the segment resides
- CL_NS(store)::Directory* getDir() const { return dir; }
-
- //Unique name in directory dir
- QString name;
-
- //Number of docs in the segment
- const int32_t docCount;
-
-private:
- //Directory where the segment resides
- CL_NS(store)::Directory* dir;
-};
-
-typedef QVector<SegmentInfo*> segmentInfosType;
-
-//SegmentInfos manages a list of SegmentInfo instances
-//Each SegmentInfo contains information about a segment in a directory.
-//
-//The active segments in the index are stored in the segment info file.
-//An index only has a single file in this format, and it is named "segments".
-//This lists each segment by name, and also contains the size of each segment.
-//The format of the file segments is defined as follows:
-//
-// SegCount
-//Segments --> SegCount, <SegName, SegSize>
-//
-//SegCount, SegSize --> UInt32
-//
-//SegName --> String
-//
-//SegName is the name of the segment, and is used as the file name prefix
-//for all of the files that compose the segment's index.
-//
-//SegSize is the number of documents contained in the segment index.
-//
-//Note:
-//At http://jakarta.apache.org/lucene/docs/fileformats.html the definition
-//of all file formats can be found. Note that java lucene currently
-//defines Segments as follows:
-//
-//Segments --> Format, Version, SegCount, <SegName, SegSize>SegCount
-//
-//Format, SegCount, SegSize --> UInt32
-//
-//Format and Version have not been implemented yet
-class SegmentInfos : LUCENE_BASE
-{
-public:
- SegmentInfos(bool deleteMembers = true);
- ~SegmentInfos();
-
- //delete and clears objects 'from' from to 'to'
- void clearto(size_t to);
-
- //count of segment infos
- int32_t size() const;
-
- //add a segment info
- void add(SegmentInfo* info);
-
- //Returns a reference to the i-th SegmentInfo in the list.
- SegmentInfo* info(int32_t i) const;
-
- // version number when this SegmentInfos was generated.
- int64_t getVersion() const { return version; }
-
- static int64_t readCurrentVersion(CL_NS(store)::Directory* directory);
-
- //Reads segments file that resides in directory
- void read(CL_NS(store)::Directory* directory);
-
- //Writes a new segments file based upon the SegmentInfo instances it manages
- void write(CL_NS(store)::Directory* directory);
-
-private:
- // The file format version, a negative number.
- // Works since counter, the old 1st entry, is always >= 0
- LUCENE_STATIC_CONSTANT(int32_t, FORMAT = -1);
-
- // counts how often the index has been changed by adding or deleting docs.
- // starting with the current time in milliseconds forces to create unique
- // version numbers.
- int64_t version;
-
- segmentInfosType infos;
-
- // used to name new segments
- int32_t counter;
-
- // allow IndexWriter to use counter
- friend class IndexWriter;
-
- bool deleteMembers;
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.cpp
deleted file mode 100644
index 85ac784ad..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SegmentMergeInfo.h"
-
-#include "SegmentTermEnum.h"
-#include "SegmentHeader.h"
-
-CL_NS_DEF(index)
-
-SegmentMergeInfo::SegmentMergeInfo(const int32_t b, TermEnum* te, IndexReader* r):
- reader(r),termEnum(te),base(b), docMap(NULL) {
-//Func - Constructor
-//Pre - b >= 0
-// te contains a valid reference to a SegmentTermEnum instance
-// r contains a valid reference to a SegmentReader instance
-//Post - The instance has been created
-
- CND_PRECONDITION(b >= 0, "b is a negative number");
-
- postings=NULL;
- term = te->term();
-}
-
-SegmentMergeInfo::~SegmentMergeInfo(){
-//Func - Destructor
-//Pre - true
-//Post - The instance has been destroyed
-
- close();
-}
-
-int32_t* SegmentMergeInfo::getDocMap(){
- if ( docMap == NULL ){
- // build array which maps document numbers around deletions
- if (reader->hasDeletions()) {
- //Get the total number of documents managed by the reader including the deleted ones
- int32_t maxDoc = reader->maxDoc();
- //Create a map for all documents
- docMap = _CL_NEWARRAY(int32_t,maxDoc);
- int32_t j = 0;
- //Iterate through all the document numbers
- for (int32_t i = 0; i < maxDoc; i++) {
- //Check if document i is marked deleted
- if (reader->isDeleted(i)){
- //Document i has not been marked deleted so assign -1
- docMap[i] = -1;
- }else{
- docMap[i] = j++;
- }
- }
- }
- }
- return docMap;
-}
-
-TermPositions* SegmentMergeInfo::getPositions() {
- if (postings == NULL) {
- postings = reader->termPositions();
- }
- return postings;
-}
-
-
-bool SegmentMergeInfo::next() {
-//Func - Moves the current term of the enumeration termEnum to the next and term
-// points to this new current term
-//Pre - true
-//Post - Returns true if the term has been moved to the next otherwise false
- if (termEnum->next()) {
- _CLDECDELETE(term);
- term = termEnum->term();
- return true;
- } else {
- _CLDECDELETE(term); //TODO: test HighFreqTerms errors with this
- term = NULL;
- return false;
- }
-}
-
-void SegmentMergeInfo::close() {
-//Func - Closes the the resources
-//Pre - true
-//Post - The resources have been closed
-
- //First make sure posting has been closed
- if ( postings != NULL ){
- postings->close();
- _CLVDELETE(postings); //todo: not a clucene object... should be
- }
-
- if ( termEnum != NULL ){
- termEnum->close();
- _CLDELETE(termEnum);
- }
- _CLDECDELETE(term);
- _CLDELETE_ARRAY(docMap);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.h b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.h
deleted file mode 100644
index 7ffd46ade..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeInfo.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_SegmentMergeInfo_
-#define _lucene_index_SegmentMergeInfo_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SegmentTermEnum.h"
-#include "SegmentHeader.h"
-
-CL_NS_DEF(index)
-class SegmentMergeInfo:LUCENE_BASE {
- int32_t* docMap; // maps around deleted docs
- TermPositions* postings;
-public:
- TermEnum* termEnum;
- Term* term;
- int32_t base;
- IndexReader* reader;
-
- //Constructor
- SegmentMergeInfo(const int32_t b, TermEnum* te, IndexReader* r);
-
- //Destructor
- ~SegmentMergeInfo();
-
- //Moves the current term of the enumeration termEnum to the next and term
- //points to this new current term
- bool next();
-
- //Closes the the resources
- void close();
-
- // maps around deleted docs
- int32_t* getDocMap();
-
- TermPositions* getPositions();
-};
-CL_NS_END
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.cpp
deleted file mode 100644
index 879781287..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SegmentMergeQueue.h"
-
-#include "SegmentMergeInfo.h"
-CL_NS_DEF(index)
-
-
- SegmentMergeQueue::SegmentMergeQueue(const int32_t size) {
- //Func - Constructor
- // Creates a queue of length size
- //Pre - size >= 0
- //Post - The queue has been created of length size
-
- //BVK: bug. changed condition from size > 0 to size >= 0
- //if size is 0, as it is when retrieving a TermEnum
- //from an empty index this should this should not fail.
- CND_PRECONDITION(size >= 0, "size is too small");
-
- //Call the initialize method of its superclass. The boolean value passed here
- //indicates that the superclass PriorityQueue takes the responsibility to have its elements deleted
- //The destructor of SegmentMergInfo will make sure that each intstance it will be closed properly
- //before it is deleted
- initialize(size,true);
- }
-
- SegmentMergeQueue::~SegmentMergeQueue(){
- //Func - Destructor
- // Does nothing as its parent class will clean up everything
- //Pre - true
- //Post - true
- close();
- }
-
- void SegmentMergeQueue::close() {
- //Func - Closes and destroyes all SegmentMergeInfo Instances in the queue
- //Pre - true
- //post - All SegmentMergeInfo Instances in the queue have been closed and deleted
- // The queue is now empty but can still be used
-
- //call the clear method of the parent class PriorityQueue
- clear();
- }
-
- bool SegmentMergeQueue::lessThan(SegmentMergeInfo* stiA, SegmentMergeInfo* stiB) {
- //Func - Overloaded method that implements the lessThan operator for the parent class
- // This method is used by the parent class Priority queue to reorder its internal
- // data structures. This implementation check if stiA is less than the current term of stiB.
- //Pre - stiA != NULL
- // stiB != NULL
- //Post - true is returned if stiA < stiB otherwise false
-
- CND_PRECONDITION(stiA != NULL, "stiA is NULL");
- CND_PRECONDITION(stiB != NULL, "stiB is NULL");
-
- //Compare the two terms
- int32_t comparison = stiA->term->compareTo(stiB->term);
- //Check if they match
- if (comparison == 0){ //todo: can we do an optimized compare here? compare using equals, then compare properly?
- //If the match check if the base of stiA is smaller than the base of stiB
- //Note that different bases means that the terms of stiA an stiB ly in different segments
- return stiA->base < stiB->base;
- }else{
- //Terms didn't match so return the difference in positions
- return comparison < 0;
- }
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.h b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.h
deleted file mode 100644
index faa690252..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMergeQueue.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_SegmentMergeQueue_
-#define _lucene_index_SegmentMergeQueue_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/PriorityQueue.h"
-#include "SegmentMergeInfo.h"
-
-CL_NS_DEF(index)
- class SegmentMergeQueue :public CL_NS(util)::PriorityQueue<SegmentMergeInfo*,CL_NS(util)::Deletor::Object<SegmentMergeInfo> > {
- public:
- //Constructor
- //Creates a queue of length size
- SegmentMergeQueue(const int32_t size);
-
- //Destructor
- //Does nothing as its parent class will clean up everything
- ~SegmentMergeQueue();
-
- //Closes and destroyes all SegmentMergeInfo Instances in the queue
- void close();
- protected:
- //Overloaded method that implements the lessThan operator for the parent class
- //This method is used by the parent class Priority queue to reorder its internal
- //data structures. This implementation check if stiA is less than the current term of stiB.
- bool lessThan(SegmentMergeInfo* stiA, SegmentMergeInfo* stiB);
-
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.cpp
deleted file mode 100644
index b27ff5bc4..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.cpp
+++ /dev/null
@@ -1,723 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "SegmentMerger.h"
-
-CL_NS_USE(util)
-CL_NS_USE(document)
-CL_NS_USE(store)
-CL_NS_DEF(index)
-
-// File extensions of old-style index files
-int COMPOUND_EXTENSIONS_LENGTH = 7;
-const char* COMPOUND_EXTENSIONS = "fnm\0" "frq\0" "prx\0" "fdx\0" "fdt\0" "tii\0" "tis\0";
-
-int VECTOR_EXTENSIONS_LENGTH = 3;
-const char* VECTOR_EXTENSIONS = "tvx\0" "tvd\0" "tvf\0";
-
-SegmentMerger::SegmentMerger(IndexWriter* writer, const QString& name)
-{
- //Func - Constructor
- //Pre - dir holds a valid reference to a Directory
- // name != NULL
- //Post - Instance has been created
-
- CND_PRECONDITION(!name.isEmpty(), "name is NULL");
-
- freqOutput = NULL;
- proxOutput = NULL;
- termInfosWriter = NULL;
- queue = NULL;
- fieldInfos = NULL;
- useCompoundFile = writer->getUseCompoundFile();
- skipBuffer = _CLNEW CL_NS(store)::RAMIndexOutput();
-
- segment = name;
- directory = writer->getDirectory();
- termIndexInterval = writer->getTermIndexInterval();
-
- lastSkipDoc=0;
- lastSkipFreqPointer=0;
- lastSkipProxPointer=0;
- skipInterval=0;
-}
-
-SegmentMerger::~SegmentMerger()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- //Clear the readers set
- readers.clear();
-
- //Delete field Infos
- _CLDELETE(fieldInfos);
- //Close and destroy the IndexOutput to the Frequency File
- if (freqOutput != NULL) {
- freqOutput->close();
- _CLDELETE(freqOutput);
- }
- //Close and destroy the IndexOutput to the Prox File
- if (proxOutput != NULL) {
- proxOutput->close();
- _CLDELETE(proxOutput);
- }
- //Close and destroy the termInfosWriter
- if (termInfosWriter != NULL) {
- termInfosWriter->close();
- _CLDELETE(termInfosWriter);
- }
- //Close and destroy the queue
- if (queue != NULL) {
- queue->close();
- _CLDELETE(queue);
- }
- //close and destory the skipBuffer
- if (skipBuffer != NULL) {
- skipBuffer->close();
- _CLDELETE(skipBuffer);
- }
-}
-
-void SegmentMerger::add(IndexReader* reader)
-{
- //Func - Adds a IndexReader to the set of readers
- //Pre - reader contains a valid reference to a IndexReader
- //Post - The SegementReader reader has been added to the set of readers
-
- readers.push_back(reader);
-}
-
-IndexReader* SegmentMerger::segmentReader(const int32_t i)
-{
- //Func - Returns a reference to the i-th IndexReader
- //Pre - 0 <= i < readers.size()
- //Post - A reference to the i-th IndexReader has been returned
-
- CND_PRECONDITION(i >= 0, "i is a negative number");
- CND_PRECONDITION((size_t)i < readers.size(),
- "i is bigger than the number of IndexReader instances");
-
- //Retrieve the i-th IndexReader
- IndexReader* ret = readers[i];
- CND_CONDITION(ret != NULL, "No IndexReader found");
-
- return ret;
-}
-
-int32_t SegmentMerger::merge()
-{
- int32_t value = mergeFields();
- mergeTerms();
- mergeNorms();
-
- if (fieldInfos->hasVectors())
- mergeVectors();
-
- return value;
-}
-
-void SegmentMerger::closeReaders()
-{
- for (uint32_t i = 0; i < readers.size(); i++) {
- // close readers
- IndexReader* reader = readers[i];
- reader->close();
- }
-}
-
-void SegmentMerger::createCompoundFile(const QString& filename, QStringList& files)
-{
- CompoundFileWriter* cfsWriter = _CLNEW CompoundFileWriter(directory, filename);
-
- { //msvc6 scope fix
- // Basic files
- for (int32_t i = 0; i < COMPOUND_EXTENSIONS_LENGTH; i++) {
- files.push_back(Misc::qjoin(segment, QLatin1String("."),
- QLatin1String(COMPOUND_EXTENSIONS+(i*4))));
- }
- }
-
- { //msvc6 scope fix
- // Field norm files
- for (int32_t i = 0; i < fieldInfos->size(); i++) {
- FieldInfo* fi = fieldInfos->fieldInfo(i);
- if (fi->isIndexed && !fi->omitNorms) {
- TCHAR tbuf[10];
- char abuf[10];
- _i64tot(i, tbuf, 10);
- STRCPY_TtoA(abuf, tbuf, 10);
-
- files.push_back(Misc::qjoin(segment, QLatin1String(".f"),
- QLatin1String(abuf)));
- }
- }
- }
-
- // Vector files
- if (fieldInfos->hasVectors()) {
- for (int32_t i = 0; i < VECTOR_EXTENSIONS_LENGTH; i++) {
- files.push_back(Misc::qjoin(segment, QLatin1String("."),
- QLatin1String(VECTOR_EXTENSIONS+(i*4))));
- }
- }
-
- { //msvc6 scope fix
- // Now merge all added files
- for (size_t i=0;i<files.size();i++) {
- cfsWriter->addFile(files[i]);
- }
- }
-
- // Perform the merge
- cfsWriter->close();
- _CLDELETE(cfsWriter);
-}
-
-void SegmentMerger::addIndexed(IndexReader* reader, FieldInfos* fieldInfos,
- StringArrayWithDeletor& names, bool storeTermVectors,
- bool storePositionWithTermVector, bool storeOffsetWithTermVector)
-{
- StringArrayWithDeletor::const_iterator itr = names.begin();
- while (itr != names.end()) {
- fieldInfos->add(*itr, true,
- storeTermVectors, storePositionWithTermVector,
- storeOffsetWithTermVector, !reader->hasNorms(*itr));
- ++itr;
- }
-}
-
-int32_t SegmentMerger::mergeFields()
-{
- //Func - Merge the fields of all segments
- //Pre - true
- //Post - The field infos and field values of all segments have been merged.
-
- //Create a new FieldInfos
- fieldInfos = _CLNEW FieldInfos(); // merge field names
-
- //Condition check to see if fieldInfos points to a valid instance
- CND_CONDITION(fieldInfos != NULL, "Memory allocation for fieldInfos failed");
-
- IndexReader* reader = NULL;
-
- int32_t docCount = 0;
-
- //Iterate through all readers
- for (uint32_t i = 0; i < readers.size(); i++) {
- //get the i-th reader
- reader = readers[i];
- //Condition check to see if reader points to a valid instance
- CND_CONDITION(reader != NULL,"No IndexReader found");
-
- StringArrayWithDeletor tmp;
-
- tmp.clear();
- reader->getFieldNames(IndexReader::TERMVECTOR_WITH_POSITION_OFFSET, tmp);
- addIndexed(reader, fieldInfos, tmp, true, true, true);
-
- tmp.clear();
- reader->getFieldNames(IndexReader::TERMVECTOR_WITH_POSITION, tmp);
- addIndexed(reader, fieldInfos, tmp, true, true, false);
-
- tmp.clear();
- reader->getFieldNames(IndexReader::TERMVECTOR_WITH_OFFSET, tmp);
- addIndexed(reader, fieldInfos, tmp, true, false, true);
-
- tmp.clear();
- reader->getFieldNames(IndexReader::TERMVECTOR, tmp);
- addIndexed(reader, fieldInfos, tmp, true, false, false);
-
- tmp.clear();
- reader->getFieldNames(IndexReader::INDEXED, tmp);
- addIndexed(reader, fieldInfos, tmp, false, false, false);
-
- tmp.clear();
- reader->getFieldNames(IndexReader::UNINDEXED, tmp);
- if (tmp.size() > 0) {
- TCHAR** arr = _CL_NEWARRAY(TCHAR*,tmp.size()+1);
- tmp.toArray(arr);
- fieldInfos->add((const TCHAR**)arr, false);
- _CLDELETE_ARRAY(arr);
- //no need to delete the contents, since tmp is responsible for it
- }
- }
-
- //Create the filename of the new FieldInfos file
- QString buf = Misc::segmentname(segment, QLatin1String(".fnm"));
- //Write the new FieldInfos file to the directory
- fieldInfos->write(directory, buf);
-
- // merge field values
- // Instantiate Fieldswriter which will write in directory for the segment
- // name segment using the new merged fieldInfos
- FieldsWriter* fieldsWriter = _CLNEW FieldsWriter(directory, segment, fieldInfos);
-
- //Condition check to see if fieldsWriter points to a valid instance
- CND_CONDITION(fieldsWriter != NULL, "Memory allocation for fieldsWriter failed");
-
- try {
- IndexReader* reader = NULL;
- int32_t maxDoc = 0;
- //Iterate through all readers
- for (uint32_t i = 0; i < readers.size(); i++) {
- // get the i-th reader
- reader = readers[i];
-
-
- // Condition check to see if reader points to a valid instance
- CND_CONDITION(reader != NULL, "No IndexReader found");
-
- // Get the total number documents including the documents that have
- // been marked deleted
- int32_t maxDoc = reader->maxDoc();
-
- //document buffer
- Document doc;
-
- //Iterate through all the documents managed by the current reader
- for (int32_t j = 0; j < maxDoc; j++) {
- //Check if the j-th document has been deleted, if so skip it
- if (!reader->isDeleted(j)) {
- //Get the document
- if (reader->document(j, &doc)) {
- //Add the document to the new FieldsWriter
- fieldsWriter->addDocument(&doc);
- docCount++;
- //doc is cleard for re-use
- doc.clear();
- }
- }
- }
- }
- } _CLFINALLY (
- //Close the fieldsWriter
- fieldsWriter->close();
- //And have it deleted as it not used any more
- _CLDELETE(fieldsWriter);
- );
-
- return docCount;
-}
-
-void SegmentMerger::mergeVectors()
-{
- TermVectorsWriter* termVectorsWriter =
- _CLNEW TermVectorsWriter(directory, segment, fieldInfos);
-
- try {
- for (uint32_t r = 0; r < readers.size(); r++) {
- IndexReader* reader = readers[r];
- int32_t maxDoc = reader->maxDoc();
- for (int32_t docNum = 0; docNum < maxDoc; docNum++) {
- // skip deleted docs
- if (reader->isDeleted(docNum))
- continue;
-
- Array<TermFreqVector*> tmp;
- if (reader->getTermFreqVectors(docNum, tmp))
- termVectorsWriter->addAllDocVectors(tmp);
- tmp.deleteAll();
- }
- }
- } _CLFINALLY (
- _CLDELETE(termVectorsWriter);
- );
-}
-
-
-void SegmentMerger::mergeTerms()
-{
- //Func - Merge the terms of all segments
- //Pre - fieldInfos != NULL
- //Post - The terms of all segments have been merged
-
- CND_PRECONDITION(fieldInfos != NULL, "fieldInfos is NULL");
-
- try{
- //create a filename for the new Frequency File for segment
- QString buf = Misc::segmentname(segment, QLatin1String(".frq"));
- //Open an IndexOutput to the new Frequency File
- freqOutput = directory->createOutput(buf);
-
- //create a filename for the new Prox File for segment
- buf = Misc::segmentname(segment, QLatin1String(".prx"));
- //Open an IndexOutput to the new Prox File
- proxOutput = directory->createOutput(buf);
-
- //Instantiate a new termInfosWriter which will write in directory
- //for the segment name segment using the new merged fieldInfos
- termInfosWriter = _CLNEW TermInfosWriter(directory, segment, fieldInfos,
- termIndexInterval);
-
- //Condition check to see if termInfosWriter points to a valid instance
- CND_CONDITION(termInfosWriter != NULL,
- "Memory allocation for termInfosWriter failed");
-
- skipInterval = termInfosWriter->skipInterval;
- queue = _CLNEW SegmentMergeQueue(readers.size());
-
- //And merge the Term Infos
- mergeTermInfos();
- } _CLFINALLY (
- //Close and destroy the IndexOutput to the Frequency File
- if (freqOutput != NULL) {
- freqOutput->close(); _CLDELETE(freqOutput);
- }
-
- //Close and destroy the IndexOutput to the Prox File
- if (proxOutput != NULL)
- {
- proxOutput->close();
- _CLDELETE(proxOutput);
- }
-
- //Close and destroy the termInfosWriter
- if (termInfosWriter != NULL) {
- termInfosWriter->close();
- _CLDELETE(termInfosWriter);
- }
-
- //Close and destroy the queue
- if (queue != NULL) {
- queue->close();
- _CLDELETE(queue);
- }
- );
-}
-
-void SegmentMerger::mergeTermInfos()
-{
- //Func - Merges all TermInfos into a single segment
- //Pre - true
- //Post - All TermInfos have been merged into a single segment
-
- //Condition check to see if queue points to a valid instance
- CND_CONDITION(queue != NULL, "Memory allocation for queue failed");
-
- //base is the id of the first document in a segment
- int32_t base = 0;
-
- IndexReader* reader = NULL;
- SegmentMergeInfo* smi = NULL;
-
- //iterate through all the readers
- for (uint32_t i = 0; i < readers.size(); i++) {
- //Get the i-th reader
- reader = readers[i];
-
- //Condition check to see if reader points to a valid instance
- CND_CONDITION(reader != NULL, "No IndexReader found");
-
- //Get the term enumeration of the reader
- TermEnum* termEnum = reader->terms();
- //Instantiate a new SegmentMerginfo for the current reader and enumeration
- smi = _CLNEW SegmentMergeInfo(base, termEnum, reader);
-
- //Condition check to see if smi points to a valid instance
- CND_CONDITION(smi != NULL, "Memory allocation for smi failed") ;
-
- //Increase the base by the number of documents that have not been marked deleted
- //so base will contain a new value for the first document of the next iteration
- base += reader->numDocs();
- //Get the next current term
- if (smi->next()) {
- //Store the SegmentMergeInfo smi with the initialized SegmentTermEnum TermEnum
- //into the queue
- queue->put(smi);
- } else {
- //Apparently the end of the TermEnum of the SegmentTerm has been reached so
- //close the SegmentMergeInfo smi
- smi->close();
- //And destroy the instance and set smi to NULL (It will be used later in this method)
- _CLDELETE(smi);
- }
- }
-
- //Instantiate an array of SegmentMergeInfo instances called match
- SegmentMergeInfo** match = _CL_NEWARRAY(SegmentMergeInfo*,readers.size()+1);
-
- //Condition check to see if match points to a valid instance
- CND_CONDITION(match != NULL, "Memory allocation for match failed") ;
-
- SegmentMergeInfo* top = NULL;
-
- //As long as there are SegmentMergeInfo instances stored in the queue
- while (queue->size() > 0) {
- int32_t matchSize = 0;
-
- // pop matching terms
-
- //Pop the first SegmentMergeInfo from the queue
- match[matchSize++] = queue->pop();
- //Get the Term of match[0]
- Term* term = match[0]->term;
-
- //Condition check to see if term points to a valid instance
- CND_CONDITION(term != NULL,"term is NULL") ;
-
- //Get the current top of the queue
- top = queue->top();
-
- //For each SegmentMergInfo still in the queue
- //Check if term matches the term of the SegmentMergeInfo instances in the queue
- while (top != NULL && term->equals(top->term)) {
- //A match has been found so add the matching SegmentMergeInfo to the match array
- match[matchSize++] = queue->pop();
- //Get the next SegmentMergeInfo
- top = queue->top();
- }
- match[matchSize]=NULL;
-
- //add new TermInfo
- mergeTermInfo(match); //matchSize
-
- //Restore the SegmentTermInfo instances in the match array back into the queue
- while (matchSize > 0) {
- smi = match[--matchSize];
-
- //Condition check to see if smi points to a valid instance
- CND_CONDITION(smi != NULL, "smi is NULL");
-
- //Move to the next term in the enumeration of SegmentMergeInfo smi
- if (smi->next()) {
- //There still are some terms so restore smi in the queue
- queue->put(smi);
-
- } else {
- //Done with a segment
- //No terms anymore so close this SegmentMergeInfo instance
- smi->close();
- _CLDELETE(smi);
- }
- }
- }
-
- _CLDELETE_ARRAY(match);
-}
-
-void SegmentMerger::mergeTermInfo(SegmentMergeInfo** smis)
-{
- //Func - Merge the TermInfo of a term found in one or more segments.
- //Pre - smis != NULL and it contains segments that are positioned at the same term.
- // n is equal to the number of SegmentMergeInfo instances in smis
- // freqOutput != NULL
- // proxOutput != NULL
- //Post - The TermInfo of a term has been merged
-
- CND_PRECONDITION(smis != NULL, "smis is NULL");
- CND_PRECONDITION(freqOutput != NULL, "freqOutput is NULL");
- CND_PRECONDITION(proxOutput != NULL, "proxOutput is NULL");
-
- //Get the file pointer of the IndexOutput to the Frequency File
- int64_t freqPointer = freqOutput->getFilePointer();
- //Get the file pointer of the IndexOutput to the Prox File
- int64_t proxPointer = proxOutput->getFilePointer();
-
- //Process postings from multiple segments all positioned on the same term.
- int32_t df = appendPostings(smis);
-
- int64_t skipPointer = writeSkip();
-
- //df contains the number of documents across all segments where this term was found
- if (df > 0) {
- //add an entry to the dictionary with pointers to prox and freq files
- termInfo.set(df, freqPointer, proxPointer, (int32_t)(skipPointer - freqPointer));
- //Precondition check for to be sure that the reference to
- //smis[0]->term will be valid
- CND_PRECONDITION(smis[0]->term != NULL, "smis[0]->term is NULL");
- //Write a new TermInfo
- termInfosWriter->add(smis[0]->term, &termInfo);
- }
-}
-
-
-int32_t SegmentMerger::appendPostings(SegmentMergeInfo** smis)
-{
- //Func - Process postings from multiple segments all positioned on the
- // same term. Writes out merged entries into freqOutput and
- // the proxOutput streams.
- //Pre - smis != NULL and it contains segments that are positioned at the same term.
- // n is equal to the number of SegmentMergeInfo instances in smis
- // freqOutput != NULL
- // proxOutput != NULL
- //Post - Returns number of documents across all segments where this term was found
-
- CND_PRECONDITION(smis != NULL, "smis is NULL");
- CND_PRECONDITION(freqOutput != NULL, "freqOutput is NULL");
- CND_PRECONDITION(proxOutput != NULL, "proxOutput is NULL");
-
- int32_t lastDoc = 0;
- int32_t df = 0; //Document Counter
-
- resetSkip();
- SegmentMergeInfo* smi = NULL;
-
- //Iterate through all SegmentMergeInfo instances in smis
- int32_t i = 0;
- while ((smi=smis[i]) != NULL) {
- //Get the i-th SegmentMergeInfo
-
- //Condition check to see if smi points to a valid instance
- CND_PRECONDITION(smi != NULL, " is NULL");
-
- //Get the term positions
- TermPositions* postings = smi->getPositions();
- //Get the base of this segment
- int32_t base = smi->base;
- //Get the docMap so we can see which documents have been deleted
- int32_t* docMap = smi->getDocMap();
- //Seek the termpost
- postings->seek(smi->termEnum);
- while (postings->next()) {
- int32_t doc = postings->doc();
- //Check if there are deletions
- if (docMap != NULL)
- doc = docMap[doc]; // map around deletions
- doc += base; // convert to merged space
-
- //Condition check to see doc is eaqual to or bigger than lastDoc
- CND_CONDITION(doc >= lastDoc,"docs out of order");
-
- //Increase the total frequency over all segments
- df++;
-
- if ((df % skipInterval) == 0) {
- bufferSkip(lastDoc);
- }
-
- //Calculate a new docCode
- //use low bit to flag freq=1
- int32_t docCode = (doc - lastDoc) << 1;
- lastDoc = doc;
-
- //Get the frequency of the Term
- int32_t freq = postings->freq();
- if (freq == 1) {
- //write doc & freq=1
- freqOutput->writeVInt(docCode | 1);
- } else {
- //write doc
- freqOutput->writeVInt(docCode);
- //write frequency in doc
- freqOutput->writeVInt(freq);
- }
-
- int32_t lastPosition = 0;
- // write position deltas
- for (int32_t j = 0; j < freq; j++) {
- //Get the next position
- int32_t position = postings->nextPosition();
- //Write the difference between position and the last position
- proxOutput->writeVInt(position - lastPosition);
- lastPosition = position;
- }
- }
-
- i++;
- }
-
- //Return total number of documents across all segments where term was found
- return df;
-}
-
-void SegmentMerger::resetSkip()
-{
- skipBuffer->reset();
- lastSkipDoc = 0;
- lastSkipFreqPointer = freqOutput->getFilePointer();
- lastSkipProxPointer = proxOutput->getFilePointer();
-}
-
-void SegmentMerger::bufferSkip(int32_t doc)
-{
- int64_t freqPointer = freqOutput->getFilePointer();
- int64_t proxPointer = proxOutput->getFilePointer();
-
- skipBuffer->writeVInt(doc - lastSkipDoc);
- skipBuffer->writeVInt((int32_t) (freqPointer - lastSkipFreqPointer));
- skipBuffer->writeVInt((int32_t) (proxPointer - lastSkipProxPointer));
-
- lastSkipDoc = doc;
- lastSkipFreqPointer = freqPointer;
- lastSkipProxPointer = proxPointer;
-}
-
-int64_t SegmentMerger::writeSkip()
-{
- int64_t skipPointer = freqOutput->getFilePointer();
- skipBuffer->writeTo(freqOutput);
- return skipPointer;
-}
-
-// Func - Merges the norms for all fields
-// Pre - fieldInfos != NULL
-// Post - The norms for all fields have been merged
-void SegmentMerger::mergeNorms()
-{
- CND_PRECONDITION(fieldInfos != NULL, "fieldInfos is NULL");
-
- //iterate through all the Field Infos instances
- for (int32_t i = 0; i < fieldInfos->size(); i++) {
- //Get the i-th FieldInfo
- FieldInfo* fi = fieldInfos->fieldInfo(i);
- //Is this Field indexed?
- if (fi->isIndexed && !fi->omitNorms) {
- //Create and Instantiate an IndexOutput to that norm file
- QString buf = Misc::segmentname(segment, QLatin1String(".f"), i);
- IndexOutput* output = directory->createOutput(buf);
-
- //Condition check to see if output points to a valid instance
- CND_CONDITION(output != NULL, "No Outputstream retrieved");
-
- uint8_t* input = NULL;
- try {
- for (uint32_t j = 0; j < readers.size(); ++j) {
- // get the next index reader + condition check
- IndexReader* reader = readers[j];
- CND_CONDITION(reader != NULL, "No reader found");
-
- // Get the total number of documents including the documents
- // that have been marked deleted
- int32_t maxDoc = reader->maxDoc();
- if (maxDoc > 0) {
- // if there are docs, allocate buffer to read it's norms
- uint8_t* data = (uint8_t*)realloc(input, maxDoc *
- sizeof(uint8_t));
- if (data) {
- input = data;
- memset(input, 0, maxDoc * sizeof(uint8_t));
- // Get an IndexInput to the norm file for this
- // field in this segment
- reader->norms(fi->name, input);
-
- //Iterate through all the documents
- for(int32_t k = 0; k < maxDoc; k++) {
- //Check if document k is deleted
- if (!reader->isDeleted(k)) {
- //write the new norm
- output->writeByte(input[k]);
- }
- }
- }
- }
- }
- } _CLFINALLY (
- if (output != NULL) {
- output->close();
- _CLDELETE(output);
- }
- free(input);
- );
- }
- }
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.h b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.h
deleted file mode 100644
index 601f46ee1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentMerger.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_SegmentMerger_
-#define _lucene_index_SegmentMerger_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/RAMDirectory.h"
-#include "CLucene/util/VoidList.h"
-#include "SegmentMergeInfo.h"
-#include "SegmentMergeQueue.h"
-#include "IndexWriter.h"
-#include "FieldInfos.h"
-#include "FieldsWriter.h"
-#include "TermInfosWriter.h"
-
-CL_NS_DEF(index)
-
-/**
-* The SegmentMerger class combines two or more Segments, represented by an IndexReader ({@link #add},
-* into a single Segment. After adding the appropriate readers, call the merge method to combine the
-* segments.
-*<P>
-* If the compoundFile flag is set, then the segments will be merged into a compound file.
-*
-*
-* @see #merge
-* @see #add
-*/
-class SegmentMerger : LUCENE_BASE
-{
- bool useCompoundFile;
-
- CL_NS(store)::RAMIndexOutput* skipBuffer;
- int32_t lastSkipDoc;
- int64_t lastSkipFreqPointer;
- int64_t lastSkipProxPointer;
-
- void resetSkip();
- void bufferSkip(int32_t doc);
- int64_t writeSkip();
-
- //Directory of the segment
- CL_NS(store)::Directory* directory;
- //name of the new segment
- QString segment;
- //Set of IndexReaders
- CL_NS(util)::CLVector<IndexReader*,
- CL_NS(util)::Deletor::Object<IndexReader> > readers;
- //Field Infos for t he FieldInfo instances of all fields
- FieldInfos* fieldInfos;
-
- //The queue that holds SegmentMergeInfo instances
- SegmentMergeQueue* queue;
- //IndexOutput to the new Frequency File
- CL_NS(store)::IndexOutput* freqOutput;
- //IndexOutput to the new Prox File
- CL_NS(store)::IndexOutput* proxOutput;
- //Writes Terminfos that have been merged
- TermInfosWriter* termInfosWriter;
- TermInfo termInfo; //(new) minimize consing
-
- int32_t termIndexInterval;
- int32_t skipInterval;
-
-public:
- /**
- *
- * @param dir The Directory to merge the other segments into
- * @param name The name of the new segment
- * @param compoundFile true if the new segment should use a compoundFile
- */
- SegmentMerger( IndexWriter* writer, const QString& name );
-
- //Destructor
- ~SegmentMerger();
-
- /**
- * Add an IndexReader to the collection of readers that are to be merged
- * @param reader
- */
- void add(IndexReader* reader);
-
- /**
- *
- * @param i The index of the reader to return
- * @return The ith reader to be merged
- */
- IndexReader* segmentReader(const int32_t i);
-
- /**
- * Merges the readers specified by the {@link #add} method into the
- * directory passed to the constructor
- * @return The number of documents that were merged
- * @throws IOException
- */
- int32_t merge();
- /**
- * close all IndexReaders that have been added.
- * Should not be called before merge().
- * @throws IOException
- */
- void closeReaders();
-private:
- void addIndexed(IndexReader* reader, FieldInfos* fieldInfos,
- CL_NS(util)::StringArrayWithDeletor& names,
- bool storeTermVectors, bool storePositionWithTermVector,
- bool storeOffsetWithTermVector);
-
- /**
- * Merge the fields of all segments
- * @return The number of documents in all of the readers
- * @throws IOException
- */
- int32_t mergeFields();
-
- /**
- * Merge the TermVectors from each of the segments into the new one.
- * @throws IOException
- */
- void mergeVectors();
-
- /** Merge the terms of all segments */
- void mergeTerms();
-
- /** Merges all TermInfos into a single segment */
- void mergeTermInfos();
-
- /** Merge one term found in one or more segments. The array <code>smis</code>
- * contains segments that are positioned at the same term. <code>N</code>
- * is the number of cells in the array actually occupied.
- *
- * @param smis array of segments
- * @param n number of cells in the array actually occupied
- */
- void mergeTermInfo( SegmentMergeInfo** smis);
-
- /** Process postings from multiple segments all positioned on the
- * same term. Writes out merged entries into freqOutput and
- * the proxOutput streams.
- *
- * @param smis array of segments
- * @param n number of cells in the array actually occupied
- * @return number of documents across all segments where this term was found
- */
- int32_t appendPostings(SegmentMergeInfo** smis);
-
- //Merges the norms for all fields
- void mergeNorms();
-
- void createCompoundFile(const QString& filename, QStringList& files);
- friend class IndexWriter; //allow IndexWriter to use createCompoundFile
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentReader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentReader.cpp
deleted file mode 100644
index a80af8ba7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentReader.cpp
+++ /dev/null
@@ -1,816 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "SegmentHeader.h"
-
-#include "FieldInfos.h"
-#include "FieldsReader.h"
-#include "IndexReader.h"
-#include "TermInfosReader.h"
-#include "Terms.h"
-#include "CLucene/search/Similarity.h"
-
-CL_NS_USE(util)
-CL_NS_USE(store)
-CL_NS_USE(document)
-CL_NS_USE(search)
-CL_NS_DEF(index)
-
-SegmentReader::Norm::Norm(IndexInput* instrm, int32_t n, SegmentReader* r,
- const QString& seg)
- : number(n)
- , reader(r)
- , segment(seg)
- , in(instrm)
- , bytes(NULL)
- , dirty(false)
-{
- //Func - Constructor
- //Pre - instrm is a valid reference to an IndexInput
- //Post - A Norm instance has been created with an empty bytes array
- bytes = NULL;
- dirty = false;
-}
-
-SegmentReader::Norm::~Norm()
-{
- //Func - Destructor
- //Pre - true
- //Post - The IndexInput in has been deleted (and closed by its destructor)
- // and the array too.
-
- //Close and destroy the inputstream in-> The inputstream will be closed
- // by its destructor. Note that the IndexInput 'in' actually is a pointer!!!!!
- _CLDELETE(in);
-
- //Delete the bytes array
- _CLDELETE_ARRAY(bytes);
-
-}
-
-void SegmentReader::Norm::reWrite()
-{
- QString buf(segment + QLatin1String(".tmp"));
-
- // NOTE: norms are re-written in regular directory, not cfs
- IndexOutput* out = reader->getDirectory()->createOutput(buf);
- try {
- out->writeBytes(bytes, reader->maxDoc());
- } _CLFINALLY (
- out->close();
- _CLDELETE(out)
- );
-
- QString fileName(segment);
- if (reader->cfsReader == NULL)
- fileName.append(QLatin1String(".f%1")).arg(number);
- else // use a different file name if we have compound format
- fileName.append(QLatin1String(".s%1")).arg(number);
-
- reader->getDirectory()->renameFile(buf, fileName);
- this->dirty = false;
-}
-
-SegmentReader::SegmentReader(SegmentInfo* si)
- : IndexReader(si->getDir())
- , _norms(false, false)
-{
- initialize(si);
-}
-
-SegmentReader::SegmentReader(SegmentInfos* sis, SegmentInfo* si)
- : IndexReader(si->getDir(), sis, false)
- , _norms(false, false)
-{
- initialize(si);
-}
-
-void SegmentReader::initialize(SegmentInfo* si)
-{
- //Pre - si-> is a valid reference to SegmentInfo instance
- // identified by si->
- //Post - All files of the segment have been read
-
- deletedDocs = NULL;
- ones = NULL;
- //There are no documents yet marked as deleted
- deletedDocsDirty = false;
-
- normsDirty=false;
- undeleteAll=false;
-
- //Duplicate the name of the segment from SegmentInfo to segment
- segment = si->name;
- // make sure that all index files have been read or are kept open
- // so that if an index update removes them we'll still have them
- freqStream = NULL;
- proxStream = NULL;
-
- //instantiate a buffer large enough to hold a directory path
- QString buf;
-
- // Use compound file directory for some files, if it exists
- Directory* cfsDir = getDirectory();
- SegmentName(buf, CL_MAX_PATH, QLatin1String(".cfs"));
- if (cfsDir->fileExists(buf)) {
- cfsReader = _CLNEW CompoundFileReader(cfsDir, buf);
- cfsDir = cfsReader;
- }else
- cfsReader = NULL;
-
- // Create the name of the field info file with suffix .fnm in buf
- SegmentName(buf, CL_MAX_PATH, QLatin1String(".fnm"));
- fieldInfos = _CLNEW FieldInfos(cfsDir, buf );
-
- // Condition check to see if fieldInfos points to a valid instance
- CND_CONDITION(fieldInfos != NULL,
- "No memory could be allocated for fieldInfos");
-
- // Create the name of the frequence file with suffix .frq in buf
- SegmentName(buf ,CL_MAX_PATH, QLatin1String(".frq"));
-
- // Open an IndexInput freqStream to the frequency file
- freqStream = cfsDir->openInput( buf );
-
- // Condition check to see if freqStream points to a valid instance and was
- // able to open the frequency file
- CND_CONDITION(freqStream != NULL,
- "IndexInput freqStream could not open the frequency file");
-
- // Create the name of the prox file with suffix .prx in buf
- SegmentName(buf, CL_MAX_PATH, QLatin1String(".prx"));
-
- // Open an IndexInput proxStream to the prox file
- proxStream = cfsDir->openInput( buf );
-
- // Condition check to see if proxStream points to a valid instance and was
- // able to open the prox file
- CND_CONDITION(proxStream != NULL,
- "IndexInput proxStream could not open proximity file");
-
- // Instantiate a FieldsReader for reading the Field Info File
- fieldsReader = _CLNEW FieldsReader(cfsDir, segment, fieldInfos);
-
- // Condition check to see if fieldsReader points to a valid instance
- CND_CONDITION(fieldsReader != NULL,
- "No memory could be allocated for fieldsReader");
-
- //Instantiate a TermInfosReader for reading the Term Dictionary .tis file
- tis = _CLNEW TermInfosReader(cfsDir, segment, fieldInfos);
-
- //Condition check to see if tis points to a valid instance
- CND_CONDITION(tis != NULL,"No memory could be allocated for tis");
-
- // Check if the segment has deletion according to the SegmentInfo instance
- // si-> NOTE: the bitvector is stored using the regular directory, not cfs
- if (hasDeletions(si)) {
- //Create a deletion file with suffix .del
- SegmentName(buf, CL_MAX_PATH, QLatin1String(".del"));
- // Instantiate a BitVector that manages which documents have been deleted
- deletedDocs = _CLNEW BitSet(getDirectory(), buf);
- }
-
- // Open the norm file. There's a norm file for each indexed field with a
- // byte for each document. The .f[0-9]* file contains, for each document,
- // a byte that encodes a value that is multiplied into the score for hits
- // on that field
- openNorms(cfsDir);
-
- termVectorsReaderOrig = NULL;
- if (fieldInfos->hasVectors()) // open term vector files only as needed
- termVectorsReaderOrig = _CLNEW TermVectorsReader(cfsDir, segment, fieldInfos);
-}
-
-SegmentReader::~SegmentReader()
-{
- //Func - Destructor.
- //Pre - doClose has been invoked!
- //Post - the instance has been destroyed
-
- doClose(); //this means that index reader doesn't need to be closed manually
-
- _CLDELETE(fieldInfos);
- _CLDELETE(fieldsReader);
- _CLDELETE(tis);
- _CLDELETE(freqStream);
- _CLDELETE(proxStream);
- _CLDELETE(deletedDocs);
- _CLDELETE_ARRAY(ones);
- _CLDELETE(termVectorsReaderOrig);
- _CLDECDELETE(cfsReader);
-}
-
-void SegmentReader::doCommit()
-{
- QString bufdel(segment + QLatin1String(".del"));
-
- if (deletedDocsDirty) { // re-write deleted
- QString buftmp(segment + QLatin1String(".tmp"));
- deletedDocs->write(getDirectory(), buftmp);
- getDirectory()->renameFile(buftmp, bufdel);
- }
-
- if(undeleteAll && getDirectory()->fileExists(bufdel))
- getDirectory()->deleteFile(bufdel, true);
-
- if (normsDirty) { // re-write norms
- NormsType::iterator itr = _norms.begin();
- while (itr != _norms.end()) {
- Norm* norm = itr->second;
- if (norm->dirty) {
- norm->reWrite();
- }
- ++itr;
- }
- }
- deletedDocsDirty = false;
- normsDirty = false;
- undeleteAll = false;
-}
-
-void SegmentReader::doClose()
-{
- //Func - Closes all streams to the files of a single segment
- //Pre - fieldsReader != NULL
- // tis != NULL
- //Post - All streams to files have been closed
-
- CND_PRECONDITION(fieldsReader != NULL, "fieldsReader is NULL");
- CND_PRECONDITION(tis != NULL, "tis is NULL");
-
- //Close the fieldsReader
- fieldsReader->close();
- //Close the TermInfosReader
- tis->close();
-
- //Close the frequency stream
- if (freqStream != NULL){
- freqStream->close();
- }
- //Close the prox stream
- if (proxStream != NULL){
- proxStream->close();
- }
-
- //Close the norm file
- closeNorms();
-
- if (termVectorsReaderOrig != NULL)
- termVectorsReaderOrig->close();
-
- if (cfsReader != NULL)
- cfsReader->close();
-}
-
-bool SegmentReader::hasDeletions() const
-{
- return deletedDocs != NULL;
-}
-
-//static
-bool SegmentReader::usesCompoundFile(SegmentInfo* si)
-{
- return si->getDir()->fileExists(si->name + QLatin1String(".cfs"));
-}
-
-//static
-bool SegmentReader::hasSeparateNorms(SegmentInfo* si)
-{
- QString pattern(si->name);
- pattern.append(QLatin1String(".s"));
- size_t patternLength = pattern.length();
-
- QStringList names = si->getDir()->list();
- foreach (const QString& name, names) {
- int length = name.length();
- if (length > patternLength && name.left(patternLength) == pattern) {
- if (name.at(patternLength) >= QLatin1Char('0')
- && name.at(patternLength) <= QLatin1Char('9')) {
- return true;
- }
- }
- }
- return false;
-}
-
-bool SegmentReader::hasDeletions(const SegmentInfo* si)
-{
- //Func - Static method
- // Checks if a segment managed by SegmentInfo si-> has deletions
- //Pre - si-> holds a valid reference to an SegmentInfo instance
- //Post - if the segement contains deleteions true is returned otherwise flas
-
- //Check if the deletion file exists and return the result
- QString f;
- Misc::segmentname(f, CL_MAX_PATH, si->name, QLatin1String(".del"), -1);
- return si->getDir()->fileExists(f);
-}
-
-//synchronized
-void SegmentReader::doDelete(const int32_t docNum)
-{
- //Func - Marks document docNum as deleted
- //Pre - docNum >=0 and DocNum < maxDoc()
- // docNum contains the number of the document that must be
- // marked deleted
- //Post - The document identified by docNum has been marked deleted
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CND_PRECONDITION(docNum >= 0, "docNum is a negative number");
- CND_PRECONDITION(docNum < maxDoc(),
- "docNum is bigger than the total number of documents");
-
- //Check if deletedDocs exists
- if (deletedDocs == NULL) {
- deletedDocs = _CLNEW BitSet(maxDoc());
-
- //Condition check to see if deletedDocs points to a valid instance
- CND_CONDITION(deletedDocs != NULL,
- "No memory could be allocated for deletedDocs");
- }
- //Flag that there are documents marked deleted
- deletedDocsDirty = true;
- undeleteAll = false;
- //Mark document identified by docNum as deleted
- deletedDocs->set(docNum);
-
-}
-
-void SegmentReader::doUndeleteAll()
-{
- _CLDELETE(deletedDocs);
- deletedDocsDirty = false;
- undeleteAll = true;
-}
-
-void SegmentReader::files(QStringList& retarray)
-{
- //Func - Returns all file names managed by this SegmentReader
- //Pre - segment != NULL
- //Post - All filenames managed by this SegmentRead have been returned
-
- CND_PRECONDITION(segment != NULL, "segment is NULL");
-
- QString temp;
- #define _ADD_SEGMENT(ext) \
- temp = SegmentName(ext); \
- if (getDirectory()->fileExists(temp)) \
- retarray.push_back(temp);
-
- //Add the name of the Field Info file
- _ADD_SEGMENT(QLatin1String(".cfs"));
- _ADD_SEGMENT(QLatin1String(".fnm"));
- _ADD_SEGMENT(QLatin1String(".fdx"));
- _ADD_SEGMENT(QLatin1String(".fdt"));
- _ADD_SEGMENT(QLatin1String(".tii"));
- _ADD_SEGMENT(QLatin1String(".tis"));
- _ADD_SEGMENT(QLatin1String(".frq"));
- _ADD_SEGMENT(QLatin1String(".prx"));
- _ADD_SEGMENT(QLatin1String(".del"));
- _ADD_SEGMENT(QLatin1String(".tvx"));
- _ADD_SEGMENT(QLatin1String(".tvd"));
- _ADD_SEGMENT(QLatin1String(".tvf"));
- _ADD_SEGMENT(QLatin1String(".tvp"));
-
- //iterate through the field infos
- for (int32_t i = 0; i < fieldInfos->size(); ++i) {
- //Get the field info for the i-th field
- FieldInfo* fi = fieldInfos->fieldInfo(i);
- //Check if the field has been indexed
- if (fi->isIndexed && !fi->omitNorms) {
- QString name;
- if (cfsReader == NULL)
- name = SegmentName(QLatin1String(".f"), i);
- else
- name = SegmentName(QLatin1String(".s"), i);
-
- //The field has been indexed so add its norm file
- if (getDirectory()->fileExists(name))
- retarray.push_back(name);
- }
- }
-}
-
-TermEnum* SegmentReader::terms() const
-{
- //Func - Returns an enumeration of all the Terms and TermInfos in the set.
- //Pre - tis != NULL
- //Post - An enumeration of all the Terms and TermInfos in the set has been returned
-
- CND_PRECONDITION(tis != NULL, "tis is NULL");
-
- return tis->terms();
-}
-
-TermEnum* SegmentReader::terms(const Term* t) const
-{
- //Func - Returns an enumeration of terms starting at or after the named term t
- //Pre - t != NULL
- // tis != NULL
- //Post - An enumeration of terms starting at or after the named term t
-
- CND_PRECONDITION(t != NULL, "t is NULL");
- CND_PRECONDITION(tis != NULL, "tis is NULL");
-
- return tis->terms(t);
-}
-
-bool SegmentReader::document(int32_t n, Document* doc)
-{
- //Func - Returns a document identified by n
- //Pre - n >=0 and identifies the document n
- //Post - if the document has been deleted then an exception has been thrown
- // otherwise a reference to the found document has been returned
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CND_PRECONDITION(n >= 0, "n is a negative number");
-
- //Check if the n-th document has been marked deleted
- if (isDeleted(n))
- _CLTHROWA(CL_ERR_InvalidState, "attempt to access a deleted document" );
-
- //Retrieve the n-th document
- return fieldsReader->doc(n, doc);
-}
-
-bool SegmentReader::isDeleted(const int32_t n)
-{
- //Func - Checks if the n-th document has been marked deleted
- //Pre - n >=0 and identifies the document n
- //Post - true has been returned if document n has been deleted otherwise fralse
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CND_PRECONDITION(n >= 0, "n is a negative number");
-
- //Is document n deleted
- return (deletedDocs != NULL && deletedDocs->get(n));
-}
-
-TermDocs* SegmentReader::termDocs() const
-{
- //Func - Returns an unpositioned TermDocs enumerator.
- //Pre - true
- //Post - An unpositioned TermDocs enumerator has been returned
-
- return _CLNEW SegmentTermDocs(this);
-}
-
-TermPositions* SegmentReader::termPositions() const
-{
- //Func - Returns an unpositioned TermPositions enumerator.
- //Pre - true
- //Post - An unpositioned TermPositions enumerator has been returned
-
- return _CLNEW SegmentTermPositions(this);
-}
-
-int32_t SegmentReader::docFreq(const Term* t) const
-{
- //Func - Returns the number of documents which contain the term t
- //Pre - t holds a valid reference to a Term
- //Post - The number of documents which contain term t has been returned
-
- //Get the TermInfo ti for Term t in the set
- TermInfo* ti = tis->get(t);
- //Check if an TermInfo has been returned
- if (ti) {
- //Get the frequency of the term
- int32_t ret = ti->docFreq;
- //TermInfo ti is not needed anymore so delete it
- _CLDELETE( ti );
- //return the number of documents which containt term t
- return ret;
- }
-
- //No TermInfo returned so return 0
- return 0;
-}
-
-int32_t SegmentReader::numDocs()
-{
- //Func - Returns the actual number of documents in the segment
- //Pre - true
- //Post - The actual number of documents in the segments
-
- //Get the number of all the documents in the segment including the ones that have
- //been marked deleted
- int32_t n = maxDoc();
-
- //Check if there any deleted docs
- if (deletedDocs != NULL)
- //Substract the number of deleted docs from the number returned by maxDoc
- n -= deletedDocs->count();
-
- //return the actual number of documents in the segment
- return n;
-}
-
-int32_t SegmentReader::maxDoc() const
-{
- //Func - Returns the number of all the documents in the segment including
- // the ones that have been marked deleted
- //Pre - true
- //Post - The total number of documents in the segment has been returned
-
- return fieldsReader->size();
-}
-
-void SegmentReader::getFieldNames(FieldOption fldOption,
- StringArrayWithDeletor& retarray)
-{
- size_t len = fieldInfos->size();
- for (size_t i = 0; i < len; i++) {
- bool v = false;
- FieldInfo* fi = fieldInfos->fieldInfo(i);
- if (fldOption & IndexReader::ALL) {
- v = true;
- } else {
- if (!fi->isIndexed && (fldOption & IndexReader::UNINDEXED)) {
- v = true;
- }
-
- if (fi->isIndexed && (fldOption & IndexReader::INDEXED)) {
- v = true;
- }
-
- if (fi->isIndexed && fi->storeTermVector == false
- && (fldOption & IndexReader::INDEXED_NO_TERMVECTOR)) {
- v = true;
- }
-
- if ((fldOption & IndexReader::TERMVECTOR)
- && fi->storeTermVector == true
- && fi->storePositionWithTermVector == false
- && fi->storeOffsetWithTermVector == false) {
- v = true;
- }
-
- if (fi->isIndexed && fi->storeTermVector
- && (fldOption & IndexReader::INDEXED_WITH_TERMVECTOR)) {
- v = true;
- }
-
- if (fi->storePositionWithTermVector
- && fi->storeOffsetWithTermVector == false
- && (fldOption & IndexReader::TERMVECTOR_WITH_POSITION)) {
- v = true;
- }
-
- if (fi->storeOffsetWithTermVector
- && fi->storePositionWithTermVector == false
- && (fldOption & IndexReader::TERMVECTOR_WITH_OFFSET)) {
- v = true;
- }
-
- if ((fi->storeOffsetWithTermVector && fi->storePositionWithTermVector)
- && (fldOption & IndexReader::TERMVECTOR_WITH_POSITION_OFFSET)) {
- v = true;
- }
- }
-
- if (v)
- retarray.push_back(STRDUP_TtoT(fi->name));
- }
-}
-
-bool SegmentReader::hasNorms(const TCHAR* field) const
-{
- return _norms.find(field) != _norms.end();
-}
-
-
-void SegmentReader::norms(const TCHAR* field, uint8_t* bytes)
-{
- //Func - Reads the Norms for field from disk starting at offset in the inputstream
- //Pre - field != NULL
- // bytes != NULL is an array of bytes which is to be used to read the norms into.
- // it is advisable to have bytes initalized by zeroes!
- //Post - The if an inputstream to the norm file could be retrieved the bytes have been read
- // You are never sure whether or not the norms have been read into bytes properly!!!!!!!!!!!!!!!!!
-
- CND_PRECONDITION(field != NULL, "field is NULL");
- CND_PRECONDITION(bytes != NULL, "field is NULL");
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- Norm* norm = _norms.get(field);
- if ( norm == NULL ){
- memcpy(bytes, fakeNorms(), maxDoc());
- return;
- }
-
- if (norm->bytes != NULL) { // can copy from cache
- memcpy(bytes, norm->bytes, maxDoc());
- return;
- }
-
- IndexInput* _normStream = norm->in->clone();
- CND_PRECONDITION(_normStream != NULL, "normStream==NULL")
-
- // read from disk
- try {
- _normStream->seek(0);
- _normStream->readBytes(bytes, maxDoc());
- } _CLFINALLY (
- //Have the normstream closed
- _normStream->close();
- //Destroy the normstream
- _CLDELETE( _normStream );
- );
-}
-
-uint8_t* SegmentReader::createFakeNorms(int32_t size)
-{
- uint8_t* ones = _CL_NEWARRAY(uint8_t,size);
- memset(ones, DefaultSimilarity::encodeNorm(1.0f), size);
- return ones;
-}
-
-uint8_t* SegmentReader::fakeNorms()
-{
- if (ones == NULL)
- ones = createFakeNorms(maxDoc());
- return ones;
-}
-
-// can return null if norms aren't stored
-uint8_t* SegmentReader::getNorms(const TCHAR* field)
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- Norm* norm = _norms.get(field);
- if (norm == NULL)
- return NULL; // not indexed, or norms not stored
-
- if (norm->bytes == NULL) { // value not yet read
- uint8_t* bytes = _CL_NEWARRAY(uint8_t, maxDoc());
- norms(field, bytes);
- norm->bytes = bytes; // cache it
- }
- return norm->bytes;
-}
-
-uint8_t* SegmentReader::norms(const TCHAR* field)
-{
- //Func - Returns the bytes array that holds the norms of a named field
- //Pre - field != NULL and contains the name of the field for which the norms
- // must be retrieved
- //Post - If there was norm for the named field then a bytes array has been allocated
- // and returned containing the norms for that field. If the named field is unknown NULL is returned.
-
- CND_PRECONDITION(field != NULL, "field is NULL");
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- uint8_t* bytes = getNorms(field);
- if (bytes == NULL)
- bytes = fakeNorms();
- return bytes;
-}
-
-void SegmentReader::doSetNorm(int32_t doc, const TCHAR* field, uint8_t value)
-{
- Norm* norm = _norms.get(field);
- if (norm == NULL) // not an indexed field
- return;
-
- norm->dirty = true; // mark it dirty
- normsDirty = true;
-
- uint8_t* bits = norms(field);
- bits[doc] = value; // set the value
-}
-
-QString SegmentReader::SegmentName(const QString& ext, const int32_t x)
-{
- //Func - Returns an allocated buffer in which it creates a filename by
- // concatenating segment with ext and x
- //Pre ext != NULL and holds the extension
- // x contains a number
- //Post - A buffer has been instantiated an when x = -1 buffer contains the concatenation of
- // segment and ext otherwise buffer contains the contentation of segment, ext and x
-
- CND_PRECONDITION(!ext.isEmpty(), "ext is NULL");
-
- QString buf;
- SegmentName(buf, CL_MAX_PATH, ext, x);
- return buf;
-}
-
-void SegmentReader::SegmentName(QString& buffer, int32_t bufferLen,
- const QString& ext, const int32_t x)
-{
- //Func - Creates a filename in buffer by concatenating segment with ext and x
- //Pre - buffer != NULL
- // ext != NULL
- // x contains a number
- //Post - When x = -1 buffer contains the concatenation of segment and ext otherwise
- // buffer contains the contentation of segment, ext and x
-
- CND_PRECONDITION(!segment.isEmpty(), "Segment is NULL");
-
- Misc::segmentname(buffer, bufferLen, segment, ext, x);
-}
-
-void SegmentReader::openNorms(Directory* cfsDir)
-{
- //Func - Open all norms files for all fields
- // Creates for each field a norm Instance with an open inputstream to
- // a corresponding norm file ready to be read
- //Pre - true
- //Post - For each field a norm instance has been created with an open inputstream to
- // a corresponding norm file ready to be read
-
- //Iterate through all the fields
- for (int32_t i = 0; i < fieldInfos->size(); i++) {
- //Get the FieldInfo for the i-th field
- FieldInfo* fi = fieldInfos->fieldInfo(i);
- //Check if the field is indexed
- if (fi->isIndexed && !fi->omitNorms ) {
- //Allocate a buffer
- QString fileName;
-
- // look first if there are separate norms in compound format
- SegmentName(fileName, CL_MAX_PATH, QLatin1String(".s"), fi->number);
- Directory* d = getDirectory();
- if(!d->fileExists(fileName)){
- SegmentName(fileName, CL_MAX_PATH, QLatin1String(".f"), fi->number);
- d = cfsDir;
- }
-
- _norms.put(fi->name, _CLNEW Norm(d->openInput(fileName),
- fi->number, this, segment));
- }
- }
-}
-
-void SegmentReader::closeNorms()
-{
- //Func - Close all the norms stored in norms
- //Pre - true
- //Post - All the norms have been destroyed
-
- SCOPED_LOCK_MUTEX(_norms.THIS_LOCK)
-
- //Create an interator initialized at the beginning of norms
- NormsType::iterator itr = _norms.begin();
- //Iterate through all the norms
- while (itr != _norms.end()) {
- // Get, delete the norm
- _CLDELETE(itr->second);
- // Move the interator to the next norm in the norms collection.
- // Note ++ is an overloaded operator
- ++itr;
- }
- _norms.clear(); //bvk: they're deleted, so clear them so that they are not re-used
-}
-
-TermVectorsReader* SegmentReader::getTermVectorsReader()
-{
- TermVectorsReader* tvReader = termVectorsLocal.get();
- if (tvReader == NULL) {
- tvReader = termVectorsReaderOrig->clone();
- termVectorsLocal.set(tvReader);
- }
- return tvReader;
-}
-
-TermFreqVector* SegmentReader::getTermFreqVector(int32_t docNumber,
- const TCHAR* field)
-{
- if (field) {
- FieldInfo* fi = fieldInfos->fieldInfo(field);
- // Check if this field is invalid or has no stored term vector
- if (fi == NULL || !fi->storeTermVector || termVectorsReaderOrig == NULL)
- return NULL;
- }
-
- TermVectorsReader* termVectorsReader = getTermVectorsReader();
- if (termVectorsReader == NULL)
- return NULL;
-
- return termVectorsReader->get(docNumber, field);
-}
-
-bool SegmentReader::getTermFreqVectors(int32_t docNumber,
- Array<TermFreqVector*>& result)
-{
- if (termVectorsReaderOrig == NULL)
- return false;
-
- TermVectorsReader* termVectorsReader = getTermVectorsReader();
- if (termVectorsReader == NULL)
- return false;
-
- return termVectorsReader->get(docNumber, result);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermDocs.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermDocs.cpp
deleted file mode 100644
index 50951e9ba..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermDocs.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SegmentHeader.h"
-
-#include "CLucene/store/IndexInput.h"
-#include "Term.h"
-
-CL_NS_DEF(index)
-
- SegmentTermDocs::SegmentTermDocs(const SegmentReader* _parent){
- //Func - Constructor
- //Pre - Paren != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(_parent != NULL,"Parent is NULL");
-
- parent = _parent;
- deletedDocs = parent->deletedDocs;
-
- _doc = 0;
- _freq = 0;
- count = 0;
- df = 0;
-
- skipInterval=0;
- numSkips=0;
- skipCount=0;
- skipStream=NULL;
- skipDoc=0;
- freqPointer=0;
- proxPointer=0;
- skipPointer=0;
- haveSkipped=false;
-
- freqStream = parent->freqStream->clone();
- skipInterval = parent->tis->getSkipInterval();
- }
-
- SegmentTermDocs::~SegmentTermDocs() {
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- close();
- }
-
- TermPositions* SegmentTermDocs::__asTermPositions(){
- return NULL;
- }
-
- void SegmentTermDocs::seek(Term* term) {
- TermInfo* ti = parent->tis->get(term);
- seek(ti);
- _CLDELETE(ti);
- }
-
- void SegmentTermDocs::seek(TermEnum* termEnum){
- TermInfo* ti=NULL;
-
- // use comparison of fieldinfos to verify that termEnum belongs to the same segment as this SegmentTermDocs
- if ( termEnum->getObjectName() == SegmentTermEnum::getClassName() ){
- SegmentTermEnum* te = (SegmentTermEnum*)termEnum;
- te->fieldInfos = parent->fieldInfos;
- ti = te->getTermInfo();
- }else{
- ti = parent->tis->get(termEnum->term(false));
- }
-
- seek(ti);
- _CLDELETE(ti);
- }
- void SegmentTermDocs::seek(const TermInfo* ti) {
- count = 0;
- if (ti == NULL) {
- df = 0;
- } else {
- df = ti->docFreq;
- _doc = 0;
- skipDoc = 0;
- skipCount = 0;
- numSkips = df / skipInterval;
- freqPointer = ti->freqPointer;
- proxPointer = ti->proxPointer;
- skipPointer = freqPointer + ti->skipOffset;
- freqStream->seek(freqPointer);
- haveSkipped = false;
- }
- }
-
- void SegmentTermDocs::close() {
-
- //Check if freqStream still exists
- if (freqStream != NULL){
- freqStream->close(); //todo: items like these can probably be delete, because deleting the object also closes it...do everywhere
- _CLDELETE( freqStream );
- }
- if (skipStream != NULL){
- skipStream->close();
- _CLDELETE( skipStream );
- }
- }
-
- int32_t SegmentTermDocs::doc()const {
- return _doc;
- }
- int32_t SegmentTermDocs::freq()const {
- return _freq;
- }
-
-
-bool SegmentTermDocs::next()
-{
- while (true) {
- if (count == df)
- return false;
-
- uint32_t docCode = freqStream->readVInt();
- _doc += docCode >> 1; //unsigned shift
- if ((docCode & 1) != 0) // if low bit is set
- _freq = 1; // _freq is one
- else
- _freq = freqStream->readVInt(); // else read _freq
- count++;
-
- if (deletedDocs == NULL || (_doc >= 0 && !deletedDocs->get(_doc)))
- break;
- skippingDoc();
- }
- return true;
-}
-
-
-int32_t SegmentTermDocs::read(int32_t* docs, int32_t* freqs, int32_t length)
-{
- int32_t i = 0;
- // TODO: one optimization would be to get the pointer buffer for ram or mmap
- // dirs and iterate over them instead of using readByte() intensive functions.
- while (i < length && count < df) {
- uint32_t docCode = freqStream->readVInt();
- _doc += docCode >> 1;
- if ((docCode & 1) != 0) // if low bit is set
- _freq = 1; // _freq is one
- else
- _freq = freqStream->readVInt(); // else read _freq
- count++;
-
- if (deletedDocs == NULL || (_doc >= 0 && !deletedDocs->get(_doc))) {
- docs[i] = _doc;
- freqs[i] = _freq;
- i++;
- }
- }
- return i;
-}
-
- bool SegmentTermDocs::skipTo(const int32_t target){
- if (df >= skipInterval) { // optimized case
- if (skipStream == NULL)
- skipStream = freqStream->clone(); // lazily clone
-
- if (!haveSkipped) { // lazily seek skip stream
- skipStream->seek(skipPointer);
- haveSkipped = true;
- }
-
- // scan skip data
- int32_t lastSkipDoc = skipDoc;
- int64_t lastFreqPointer = freqStream->getFilePointer();
- int64_t lastProxPointer = -1;
- int32_t numSkipped = -1 - (count % skipInterval);
-
- while (target > skipDoc) {
- lastSkipDoc = skipDoc;
- lastFreqPointer = freqPointer;
- lastProxPointer = proxPointer;
-
- if (skipDoc != 0 && skipDoc >= _doc)
- numSkipped += skipInterval;
-
- if(skipCount >= numSkips)
- break;
-
- skipDoc += skipStream->readVInt();
- freqPointer += skipStream->readVInt();
- proxPointer += skipStream->readVInt();
-
- skipCount++;
- }
-
- // if we found something to skip, then skip it
- if (lastFreqPointer > freqStream->getFilePointer()) {
- freqStream->seek(lastFreqPointer);
- skipProx(lastProxPointer);
-
- _doc = lastSkipDoc;
- count += numSkipped;
- }
-
- }
-
- // done skipping, now just scan
-
- do {
- if (!next())
- return false;
- } while (target > _doc);
- return true;
- }
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.cpp
deleted file mode 100644
index 20e286fd1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SegmentTermEnum.h"
-
-#include "Terms.h"
-#include "FieldInfos.h"
-#include "Term.h"
-#include "TermInfo.h"
-#include "TermInfosWriter.h"
-
-CL_NS_USE(store)
-CL_NS_DEF(index)
-
- SegmentTermEnum::SegmentTermEnum(IndexInput* i, FieldInfos* fis, const bool isi):
- fieldInfos(fis){
- //Func - Constructor
- //Pre - i holds a reference to an instance of IndexInput
- // fis holds a reference to an instance of FieldInfos
- // isi
- //Post - An instance of SegmentTermEnum has been created
- input = i;
- position = -1;
- //Instantiate a Term with empty field, empty text and which is interned (see term.h what interned means)
- _term = _CLNEW Term;
- isIndex = isi;
- termInfo = _CLNEW TermInfo();
- indexPointer = 0;
- buffer = NULL;
- bufferLength = 0;
- prev = NULL;
- formatM1SkipInterval = 0;
-
- //Set isClone to false as the instance is not clone of another instance
- isClone = false;
-
-
- int32_t firstInt = input->readInt();
- if (firstInt >= 0) {
- // original-format file, without explicit format version number
- format = 0;
- size = firstInt;
-
- // back-compatible settings
- indexInterval = 128;
- skipInterval = LUCENE_INT32_MAX_SHOULDBE; // switch off skipTo optimization
-
- } else {
- // we have a format version number
- format = firstInt;
-
- // check that it is a format we can understand
- if (format < TermInfosWriter::FORMAT){
- TCHAR err[30];
- _sntprintf(err,30,_T("Unknown format version: %d"), format);
- _CLTHROWT(CL_ERR_Runtime,err);
- }
-
- size = input->readLong(); // read the size
-
- if(format == -1){
- if (!isIndex) {
- indexInterval = input->readInt();
- formatM1SkipInterval = input->readInt();
- }
- // switch off skipTo optimization for file format prior to 1.4rc2 in order to avoid a bug in
- // skipTo implementation of these versions
- skipInterval = LUCENE_INT32_MAX_SHOULDBE;
- }else{
- indexInterval = input->readInt();
- skipInterval = input->readInt();
- }
- }
- }
-
- SegmentTermEnum::SegmentTermEnum(const SegmentTermEnum& clone):
- fieldInfos(clone.fieldInfos)
- {
- //Func - Constructor
- // The instance is created by cloning all properties of clone
- //Pre - clone holds a valid reference to SegmentTermEnum
- //Post - An instance of SegmentTermEnum with the same properties as clone
-
- input = clone.input->clone();
- //Copy the postion from the clone
- position = clone.position;
-
- if ( clone._term != NULL ){
- _term = _CLNEW Term;
- _term->set(clone._term,clone._term->text());
- }else
- _term = NULL;
- isIndex = clone.isIndex;
- termInfo = _CLNEW TermInfo(clone.termInfo);
- indexPointer = clone.indexPointer;
- buffer = clone.buffer==NULL?NULL:(TCHAR*)malloc(sizeof(TCHAR) * (clone.bufferLength+1));
- bufferLength = clone.bufferLength;
- prev = clone.prev==NULL?NULL:_CLNEW Term(clone.prev->field(),clone.prev->text(),false);
- size = clone.size;
-
- format = clone.format;
- indexInterval= clone.indexInterval;
- skipInterval = clone.skipInterval;
- formatM1SkipInterval = clone.formatM1SkipInterval;
- //Set isClone to true as this instance is a clone of another instance
- isClone = true;
-
- //Copy the contents of buffer of clone to the buffer of this instance
- if ( clone.buffer != NULL )
- memcpy(buffer,clone.buffer,bufferLength * sizeof(TCHAR));
- }
-
- SegmentTermEnum::~SegmentTermEnum(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed. If this instance was a clone
- // then the inputstream is closed and deleted too.
-
- //todo: revisit this... close() should clean up most of everything.
-
- //Finalize prev
- _CLDECDELETE(prev );
- //Finalize term
- _CLDECDELETE( _term );
-
-
- //Delete the buffer if necessary
- free(buffer);
- //Delete termInfo if necessary
- _CLDELETE(termInfo);
-
- //Check if this instance is a clone
- if ( isClone ){
- //Close the inputstream
- input->close();
- //delete the inputstream
- _CLDELETE(input);
- }
- }
-
- bool SegmentTermEnum::next(){
- //Func - Moves the current of the set to the next in the set
- //Pre - true
- //Post - If the end has been reached NULL is returned otherwise the term has
- // become the next Term in the enumeration
-
- //Increase position by and and check if the end has been reached
- if (position++ >= size-1) {
- //delete term
- _CLDECDELETE(_term);
- return false;
- }
-
- //delete the previous enumerated term
- Term* tmp=NULL;
- if ( prev != NULL ){
- int32_t usage = prev->__cl_refcount;
- if ( usage > 1 ){
- _CLDECDELETE(prev); //todo: tune other places try and delete its term
- }else
- tmp = prev; //we are going to re-use this term
- }
- //prev becomes the current enumerated term
- prev = _term;
- //term becomes the next term read from inputStream input
- _term = readTerm(tmp);
-
- //Read docFreq, the number of documents which contain the term.
- termInfo->docFreq = input->readVInt();
- //Read freqPointer, a pointer into the TermFreqs file (.frq)
- termInfo->freqPointer += input->readVLong();
-
- //Read proxPointer, a pointer into the TermPosition file (.prx).
- termInfo->proxPointer += input->readVLong();
-
- if(format == -1){
- // just read skipOffset in order to increment file pointer;
- // value is never used since skipTo is switched off
- if (!isIndex) {
- if (termInfo->docFreq > formatM1SkipInterval) {
- termInfo->skipOffset = input->readVInt();
- }
- }
- }else{
- if (termInfo->docFreq >= skipInterval)
- termInfo->skipOffset = input->readVInt();
- }
-
- //Check if the enumeration is an index
- if (isIndex)
- //read index pointer
- indexPointer += input->readVLong();
-
- return true;
- }
-
- Term* SegmentTermEnum::term() {
- //Func - Returns the current term.
- //Pre - pointer is true or false and indicates if the reference counter
- // of term must be increased or not
- // next() must have been called once!
- //Post - pointer = true -> term has been returned with an increased reference counter
- // pointer = false -> term has been returned
-
- return _CL_POINTER(_term);
- }
- Term* SegmentTermEnum::term(bool pointer) {
- if ( pointer )
- return _CL_POINTER(_term);
- else
- return _term;
- }
-
- void SegmentTermEnum::scanTo(const Term *term){
- //Func - Scan for Term without allocating new Terms
- //Pre - term != NULL
- //Post - The iterator term has been moved to the position where Term is expected to be
- // in the enumeration
- while ( term->compareTo(this->_term) > 0 && next())
- {
- }
- }
-
- void SegmentTermEnum::close() {
- //Func - Closes the enumeration to further activity, freeing resources.
- //Pre - true
- //Post - The inputStream input has been closed
-
- input->close();
- }
-
- int32_t SegmentTermEnum::docFreq() const {
- //Func - Returns the document frequency of the current term in the set
- //Pre - termInfo != NULL
- // next() must have been called once
- //Post - The document frequency of the current enumerated term has been returned
-
- return termInfo->docFreq;
- }
-
- void SegmentTermEnum::seek(const int64_t pointer, const int32_t p, Term* t, TermInfo* ti) {
- //Func - Repositions term and termInfo within the enumeration
- //Pre - pointer >= 0
- // p >= 0 and contains the new position within the enumeration
- // t is a valid reference to a Term and is the new current term in the enumeration
- // ti is a valid reference to a TermInfo and is corresponding TermInfo form the new
- // current Term
- //Post - term and terminfo have been repositioned within the enumeration
-
- //Reset the IndexInput input to pointer
- input->seek(pointer);
- //Assign the new position
- position = p;
-
- //finalize the current term
- if ( _term == NULL || _term->__cl_refcount > 1 ){
- _CLDECDELETE(_term);
- //Get a pointer from t and increase the reference counter of t
- _term = _CLNEW Term; //cannot use reference, because TermInfosReader uses non ref-counted array
- }
- _term->set(t,t->text());
-
- //finalize prev
- _CLDECDELETE(prev);
-
- //Change the current termInfo so it matches the new current term
- termInfo->set(ti);
-
- //Have the buffer grown if needed
- if ( bufferLength <= _term->textLength() )
- growBuffer(_term->textLength(), true ); // copy term text into buffer
- else
- _tcsncpy(buffer,_term->text(),bufferLength); //just copy the buffer
- }
-
- TermInfo* SegmentTermEnum::getTermInfo()const {
- //Func - Returns a clone of the current termInfo
- //Pre - termInfo != NULL
- // next() must have been called once
- //Post - A clone of the current termInfo has been returned
-
- return _CLNEW TermInfo(*termInfo); //clone
- }
-
- void SegmentTermEnum::getTermInfo(TermInfo* ti)const {
- //Func - Retrieves a clone of termInfo through the reference ti
- //Pre - ti contains a valid reference to TermInfo
- // termInfo != NULL
- // next() must have been called once
- //Post - ti contains a clone of termInfo
-
- ti->set(termInfo);
- }
-
- int64_t SegmentTermEnum::freqPointer()const {
- //Func - Returns the freqpointer of the current termInfo
- //Pre - termInfo != NULL
- // next() must have been called once
- //Post - The freqpointer of the current termInfo has been returned
-
- return termInfo->freqPointer;
- }
-
- int64_t SegmentTermEnum::proxPointer()const {
- //Func - Returns the proxPointer of the current termInfo
- //Pre - termInfo != NULL
- // next() must have been called once
- //Post - the proxPointer of the current termInfo has been returned
-
- return termInfo->proxPointer;
- }
-
- SegmentTermEnum* SegmentTermEnum::clone() const {
- //Func - Returns a clone of this instance
- //Pre - true
- //Post - An clone of this instance has been returned
-
- return _CLNEW SegmentTermEnum(*this);
- }
-
- Term* SegmentTermEnum::readTerm(Term* reuse) {
- //Func - Reads the next term in the enumeration
- //Pre - true
- //Post - The next Term in the enumeration has been read and returned
-
- //Read the start position from the inputStream input
- int32_t start = input->readVInt();
- //Read the length of term in the inputStream input
- int32_t length = input->readVInt();
-
- //Calculated the total lenght of bytes that buffer must be to contain the current
- //chars in buffer and the new ones yet to be read
- uint32_t totalLength = start + length;
-
- if (static_cast<uint32_t>(bufferLength) < totalLength+1)
- growBuffer(totalLength, false);
-
- //Read a length number of characters into the buffer from position start in the inputStream input
- input->readChars(buffer, start, length);
- //Null terminate the string
- buffer[totalLength] = 0;
-
- //Return a new Term
- int32_t field = input->readVInt();
- const TCHAR* fieldname = fieldInfos->fieldName(field);
- if ( reuse == NULL )
- reuse = _CLNEW Term;
-
- reuse->set(fieldname, buffer, false);
- return reuse;
- }
-
- void SegmentTermEnum::growBuffer(const uint32_t length, bool force_copy) {
- //Func - Instantiate a buffer of length length+1
- //Pre - length > 0
- //Post - pre(buffer) has been deleted with its contents. A new buffer
- // has been allocated of length length+1 and the text of term has been copied
- // to buffer
- //todo: we could guess that we will need to re-grow this
- //buffer a few times...so start off with a reasonable grow
- //value...
- if ( bufferLength > length )
- return;
-
- //Store the new bufferLength
- if ( length - bufferLength < LUCENE_SEGMENTTERMENUM_GROWSIZE )
- bufferLength = length+LUCENE_SEGMENTTERMENUM_GROWSIZE;
- else
- bufferLength = length+1;
-
- bool copy = buffer==NULL;
-
- //Instantiate the new buffer + 1 is needed for terminator '\0'
- if ( buffer == NULL )
- buffer = (TCHAR*)malloc(sizeof(TCHAR) * (bufferLength+1));
- else
- buffer = (TCHAR*)realloc(buffer, sizeof(TCHAR) * (bufferLength+1));
-
- if ( copy || force_copy){
- //Copy the text of term into buffer
- _tcsncpy(buffer,_term->text(),bufferLength);
- }
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.h b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.h
deleted file mode 100644
index 0d50103f3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermEnum.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_SegmentTermEnum_
-#define _lucene_index_SegmentTermEnum_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Terms.h"
-#include "FieldInfos.h"
-#include "TermInfo.h"
-
-CL_NS_DEF(index)
-
-/**
- * SegmentTermEnum is an enumeration of all Terms and TermInfos
- */
-class SegmentTermEnum:public TermEnum{
-private:
- Term* _term; ///points to the current Term in the enumeration
- TermInfo* termInfo; ///points to the TermInfo matching the current Term in the enumeration
-
- bool isIndex; ///Indicates if the Segment is a an index
- bool isClone; ///Indicates if SegmentTermEnum is an orignal instance or
- ///a clone of another SegmentTermEnum
-
- TCHAR* buffer; ///The buffer that contains the data read from the Term Infos File
- uint32_t bufferLength; ///Length of the buffer
-
- int32_t format;
- int32_t formatM1SkipInterval;
-
- CL_NS(store)::IndexInput* input; ///The IndexInput that reads from the Term Infos File
- FieldInfos* fieldInfos; ///contains the Field Infos for the segment
- int64_t size; ///The size of the enumeration
- int64_t position; ///The position of the current (term) in the enumeration
- int64_t indexPointer;
- Term* prev; ///The previous current
- int32_t indexInterval;
- int32_t skipInterval;
-
- friend class TermInfosReader;
- friend class SegmentTermDocs;
-protected:
-
- /**
- * Constructor.
- * The instance is created by cloning all properties of clone
- */
- SegmentTermEnum( const SegmentTermEnum& clone);
-
-public:
- ///Constructor
- SegmentTermEnum(CL_NS(store)::IndexInput* i, FieldInfos* fis, const bool isi );
-
- ///Destructor
- ~SegmentTermEnum();
-
- /**
- * Moves the current of the set to the next in the set
- */
- bool next();
-
- /**
- * Returns a pointer to the current term.
- */
- Term* term();
- /**
- * Returns the current term.
- */
- Term* term(bool pointer);
-
- /**
- * Scan for Term term without allocating new Terms
- */
- void scanTo(const Term *term);
-
- /**
- * Closes the enumeration to further activity, freeing resources.
- */
- void close();
-
- /**
- * Returns the document frequency of the current term in the set
- */
- int32_t docFreq() const;
-
- /**
- * Repositions term and termInfo within the enumeration
- */
- void seek(const int64_t pointer, const int32_t p, Term* t, TermInfo* ti);
-
- /**
- * Returns a clone of the current termInfo
- */
- TermInfo* getTermInfo()const;
-
- /**
- * Retrieves a clone of termInfo through the reference ti
- */
- void getTermInfo(TermInfo* ti)const;
-
- /**
- * Returns the freqPointer from the current TermInfo in the enumeration.
- */
- int64_t freqPointer() const;
-
- /**
- * Returns the proxPointer from the current TermInfo in the enumeration.
- */
- int64_t proxPointer() const;
-
- /**
- * Returns a clone of this instance
- */
- SegmentTermEnum* clone() const;
-
- const char* getObjectName(){ return SegmentTermEnum::getClassName(); }
- static const char* getClassName(){ return "SegmentTermEnum"; }
-
-private:
- /**
- * Reads the next term in the enumeration
- */
- Term* readTerm(Term* reuse);
- /**
- * Instantiate a buffer of length length+1
- */
- void growBuffer(const uint32_t length, bool force_copy);
-
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermPositions.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermPositions.cpp
deleted file mode 100644
index e481838e9..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermPositions.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SegmentHeader.h"
-
-#include "Terms.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-SegmentTermPositions::SegmentTermPositions(const SegmentReader* _parent):
- SegmentTermDocs(_parent){
-//Func - Constructor
-//Pre - Parent != NULL
-//Post - The instance has been created
-
- CND_PRECONDITION(_parent != NULL, "Parent is NULL");
-
- proxStream = _parent->proxStream->clone();
-
- CND_CONDITION(proxStream != NULL,"proxStream is NULL");
-
- position = 0;
- proxCount = 0;
-}
-
-SegmentTermPositions::~SegmentTermPositions() {
-//Func - Destructor
-//Pre - true
-//Post - The intance has been closed
- close();
-}
-
-TermDocs* SegmentTermPositions::__asTermDocs(){
- return (TermDocs*) this;
-}
-TermPositions* SegmentTermPositions::__asTermPositions(){
- return (TermPositions*) this;
-}
-
-void SegmentTermPositions::seek(const TermInfo* ti) {
- SegmentTermDocs::seek(ti);
- if (ti != NULL)
- proxStream->seek(ti->proxPointer);
- proxCount = 0;
-}
-
-void SegmentTermPositions::close() {
-//Func - Frees the resources
-//Pre - true
-//Post - The resources have been freed
-
- SegmentTermDocs::close();
- //Check if proxStream still exists
- if(proxStream){
- proxStream->close();
- _CLDELETE( proxStream );
- }
-}
-
-int32_t SegmentTermPositions::nextPosition() {
- /* DSR:CL_BUG: Should raise exception if proxCount == 0 at the
- ** beginning of this method, as in
- ** if (--proxCount == 0) throw ...;
- ** The JavaDocs for TermPositions.nextPosition declare this constraint,
- ** but CLucene doesn't enforce it. */
- proxCount--;
- return position += proxStream->readVInt();
-}
-
-bool SegmentTermPositions::next() {
- for (int32_t f = proxCount; f > 0; f--) // skip unread positions
- proxStream->readVInt();
-
- if (SegmentTermDocs::next()) { // run super
- proxCount = _freq; // note frequency
- position = 0; // reset position
- return true;
- }
- return false;
-}
-
-int32_t SegmentTermPositions::read(int32_t* docs, int32_t* freqs, int32_t length) {
- _CLTHROWA(CL_ERR_InvalidState,"TermPositions does not support processing multiple documents in one call. Use TermDocs instead.");
-}
-
-void SegmentTermPositions::skippingDoc() {
- for (int32_t f = _freq; f > 0; f--) // skip all positions
- proxStream->readVInt();
-}
-
-void SegmentTermPositions::skipProx(int64_t proxPointer){
- proxStream->seek(proxPointer);
- proxCount = 0;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermVector.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermVector.cpp
deleted file mode 100644
index 5e9ac3c3b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/SegmentTermVector.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "TermVector.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-Array<int32_t> SegmentTermPositionVector::EMPTY_TERM_POS;
-
-SegmentTermVector::SegmentTermVector(const TCHAR* field, TCHAR** terms, Array<int32_t>* termFreqs) {
- this->field = STRDUP_TtoT(field);
- this->terms = terms;
- this->termsLen = -1; //lazily get the size of the terms
- this->termFreqs = termFreqs;
-}
-
-SegmentTermVector::~SegmentTermVector(){
- _CLDELETE_CARRAY(field);
- _CLDELETE_CARRAY_ALL(terms);
-
- _CLDELETE_ARRAY(termFreqs->values);
- _CLDELETE(termFreqs);
-}
-TermPositionVector* SegmentTermVector::__asTermPositionVector(){
- return NULL;
-}
-
-const TCHAR* SegmentTermVector::getField() {
-return field;
-}
-
-TCHAR* SegmentTermVector::toString() const{
-StringBuffer sb;
-sb.appendChar('{');
-sb.append(field);
-sb.append(_T(": "));
-
-int32_t i=0;
-while ( terms && terms[i] != NULL ){
- if (i>0)
- sb.append(_T(", "));
- sb.append(terms[i]);
- sb.appendChar('/');
-
- sb.appendInt((*termFreqs)[i]);
-}
-sb.appendChar('}');
-return sb.toString();
-}
-
-int32_t SegmentTermVector::size() {
-if ( terms == NULL )
- return 0;
-
-if ( termsLen == -1 ){
- termsLen=0;
- while ( terms[termsLen] != 0 )
- termsLen++;
-}
-return termsLen;
-}
-
-const TCHAR** SegmentTermVector::getTerms() {
- return (const TCHAR**)terms;
-}
-
-const Array<int32_t>* SegmentTermVector::getTermFrequencies() {
- return termFreqs;
-}
-
-int32_t SegmentTermVector::binarySearch(TCHAR** a, const int32_t arraylen, const TCHAR* key) const
-{
- int32_t low = 0;
- int32_t hi = arraylen - 1;
- int32_t mid = 0;
- while (low <= hi)
- {
- mid = (low + hi) >> 1;
-
- int32_t c = _tcscmp(a[mid],key);
- if (c==0)
- return mid;
- else if (c > 0)
- hi = mid - 1;
- else // This gets the insertion point right on the last loop.
- low = ++mid;
- }
- return -mid - 1;
-}
-
-int32_t SegmentTermVector::indexOf(const TCHAR* termText) {
- if(terms == NULL)
- return -1;
- int32_t res = binarySearch(terms, size(), termText);
- return res >= 0 ? res : -1;
-}
-
-void SegmentTermVector::indexesOf(const TCHAR** termNumbers, const int32_t start, const int32_t len, Array<int32_t>& ret) {
- // TODO: there must be a more efficient way of doing this.
- // At least, we could advance the lower bound of the terms array
- // as we find valid indexes. Also, it might be possible to leverage
- // this even more by starting in the middle of the termNumbers array
- // and thus dividing the terms array maybe in half with each found index.
- ret.length = len;
- ret.values = _CL_NEWARRAY(int32_t,len);
- for (int32_t i=0; i<len; ++i) {
- ret.values[i] = indexOf(termNumbers[start+ i]);
- }
-}
-
-
-
-
-SegmentTermPositionVector::SegmentTermPositionVector(const TCHAR* field, TCHAR** terms, Array<int32_t>* termFreqs, Array< Array<int32_t> >* positions, Array< Array<TermVectorOffsetInfo> >* offsets):
- SegmentTermVector(field,terms,termFreqs)
-{
- this->offsets = offsets;
- this->positions = positions;
-}
-
-SegmentTermPositionVector::~SegmentTermPositionVector(){
- if ( offsets ){
- for (size_t i=0;i<offsets->length;i++){
- if ( offsets->values != NULL ){
- Array<TermVectorOffsetInfo>& offs = offsets->values[i];
- for ( size_t j=0;j<offs.length;j++ ){
- _CLDELETE_ARRAY(offs.values);
- }
- }
- }
- _CLDELETE_ARRAY(offsets->values);
- _CLDELETE(offsets);
- }
- if ( positions ){
- for (size_t i=0;i<positions->length;i++){
- if ( positions->values != NULL ){
- Array<int32_t>& pos = positions->values[i];
- for ( size_t j=0;j<pos.length;j++ ){
- _CLDELETE_ARRAY(pos.values);
- }
- }
- }
- _CLDELETE_ARRAY(positions->values);
- _CLDELETE(positions);
- }
-}
-
-TermPositionVector* SegmentTermPositionVector::__asTermPositionVector(){
- return this;
-}
-/**
-* Returns an array of TermVectorOffsetInfo in which the term is found.
-*
-* @param index The position in the array to get the offsets from
-* @return An array of TermVectorOffsetInfo objects or the empty list
-* @see org.apache.lucene.analysis.Token
-*/
-Array<TermVectorOffsetInfo>* SegmentTermPositionVector::getOffsets(int32_t index) {
- if(offsets == NULL)
- return NULL;
- if (index >=0 && index < offsets->length)
- return &offsets->values[index];
- else
- return &TermVectorOffsetInfo::EMPTY_OFFSET_INFO;
-}
-
-/**
-* Returns an array of positions in which the term is found.
-* Terms are identified by the index at which its number appears in the
-* term String array obtained from the <code>indexOf</code> method.
-*/
-Array<int32_t>* SegmentTermPositionVector::getTermPositions(int32_t index) {
- if(positions == NULL)
- return NULL;
-
- if (index >=0 && index < positions->length)
- return &positions->values[index];
- else
- return &EMPTY_TERM_POS;
-}
-CL_NS_END
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/Term.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/Term.cpp
deleted file mode 100644
index cfb0a27f1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/Term.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-
-#include "CLucene/StdHeader.h"
-#include "Term.h"
-#include "CLucene/util/StringIntern.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-Term::Term()
-{
- init();
-}
-
-Term::Term(const TCHAR* fld, const TCHAR* txt, bool internField)
-{
- init();
- set(fld, txt, internField);
-}
-
-Term::Term(const Term* fieldTerm, const TCHAR* txt)
-{
- init();
- set(fieldTerm, txt);
-}
-
-Term::Term(const TCHAR* fld, const TCHAR* txt)
-{
- init();
- set(fld, txt);
-}
-
-Term::~Term()
-{
- if (internF)
- CLStringIntern::unintern(_field);
- _field = NULL;
-
-#ifndef LUCENE_TERM_TEXT_LENGTH
- if (_text != LUCENE_BLANK_STRING)
- _CLDELETE_CARRAY(_text);
-#endif
-}
-
-const TCHAR* Term::field() const
-{
- return _field;
-}
-
-const TCHAR* Term::text() const
-{
- return _text;
-}
-
-void Term::set(const Term* term, const TCHAR* txt)
-{
- set(term->field(), txt, false);
-}
-
-void Term::set(const TCHAR* fld, const TCHAR* txt,bool internField)
-{
- CND_PRECONDITION(fld != NULL, "fld contains NULL");
- CND_PRECONDITION(txt != NULL, "txt contains NULL");
-
- //save field for unintern later
- const TCHAR* oldField = _field;
- cachedHashCode = 0;
- textLen = _tcslen(txt);
-
- //Delete text if it is the owner
-#ifdef LUCENE_TERM_TEXT_LENGTH
- if (textLen > LUCENE_TERM_TEXT_LENGTH)
- textLen = LUCENE_TERM_TEXT_LENGTH;
-
- _tcsncpy(_text,txt,textLen+1);
- _text[textLen]=0;
-#else
- //if the term text buffer is bigger than what we have
- if (_text && textLen > textLenBuf) {
- if (_text != LUCENE_BLANK_STRING) {
- _CLDELETE_ARRAY(_text);
- } else {
- _text = NULL;
- }
- textLenBuf = 0;
- }
-
- if (_text == LUCENE_BLANK_STRING) {
- _text = LUCENE_BLANK_STRING;
- } else if (_text == NULL) {
- if (txt[0] == 0) {
- //if the string is blank and we aren't re-using the buffer...
- _text = LUCENE_BLANK_STRING;
- } else {
- //duplicate the text
- _text = stringDuplicate(txt);
- textLenBuf = textLen;
- }
- } else {
- //re-use the buffer
- _tcscpy(_text,txt);
- }
-#endif
-
- //Set Term Field
- if (internField) {
- _field = CLStringIntern::intern(fld CL_FILELINE);
- } else {
- _field = fld;
- }
-
- //unintern old field after interning new one,
- if (internF)
- CLStringIntern::unintern(oldField);
- internF = internField;
-
- CND_PRECONDITION(_tcscmp(fld, _field) == 0, "field not equal");
-}
-
-bool Term::equals(const Term* other) const
-{
- if (cachedHashCode != 0 && other->cachedHashCode != 0
- && other->cachedHashCode != cachedHashCode)
- return false;
-
- if (_field == other->_field) {
- if (textLen == other->textLen)
- return (_tcscmp(_text, other->_text) == 0);
- return false;
- }
-
- return false;
-}
-
-size_t Term::hashCode()
-{
- if (cachedHashCode == 0)
- cachedHashCode = Misc::thashCode(_field) + Misc::thashCode(_text, textLen);
-
- return cachedHashCode;
-}
-
-int32_t Term::compareTo(const Term* other) const
-{
- //Check ret to see if text needs to be compared
- if (_field == other->_field)
- return _tcscmp(_text, other->_text);
-
- int32_t ret = _tcscmp(_field, other->_field);
- if (ret == 0)
- ret = _tcscmp(_text, other->_text);
- return ret;
-}
-
-TCHAR* Term::toString() const
-{
- return CL_NS(util)::Misc::join(_field, _T(":"), _text);
-}
-
-void Term::init()
-{
- textLen = 0;
- internF = false;
- cachedHashCode = 0;
- _field = LUCENE_BLANK_STRING;
-
-#ifdef LUCENE_TERM_TEXT_LENGTH
- _text[0] = 0;
-#else
- _text = LUCENE_BLANK_STRING;
- textLenBuf = 0;
-#endif
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/Term.h b/src/assistant/3rdparty/clucene/src/CLucene/index/Term.h
deleted file mode 100644
index 9664c4012..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/Term.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_Term_
-#define _lucene_index_Term_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/Misc.h"
-#include "CLucene/util/StringIntern.h"
-
-CL_NS_DEF(index)
-
-/*
-A Term represents a word from text. This is the unit of search. It is
-composed of two elements, the text of the word, as a string, and the name of
-the field that the text occured in, an interned string.
-
-Note that terms may represent more than words from text fields, but also
-things like dates, email addresses, urls, etc.
-
-IMPORTANT NOTE:
-Term inherits from the template class LUCENE_REFBASE which tries to do
-some garbage collection by counting the references an instance has. As a result
-of this construction you MUST use _CLDECDELETE(obj) when you want to delete an
-of Term!
-
-ABOUT intrn
-
-intrn indicates if field and text are interned or not. Interning of Strings
-is the process of converting duplicated strings to shared ones.
-
-*/
-class Term : LUCENE_REFBASE
-{
-private:
- const TCHAR* _field;
- bool internF; // Indicates if Term Field is interned(and therefore must be uninternd).
- size_t cachedHashCode;
- size_t textLen; // a cache of text len, this allows for a preliminary comparison of text lengths
-
-#ifdef LUCENE_TERM_TEXT_LENGTH
- TCHAR _text[LUCENE_TERM_TEXT_LENGTH + 1];
-#else
- TCHAR* _text;
- size_t textLenBuf; //a cache of text len, this allows for a preliminary comparison of text lengths
-#endif
-
- void init();
-public:
-
- //uses the specified fieldTerm's field. this saves on intern'ing time.
- Term(const Term* fieldTerm, const TCHAR* txt);
-
- ///Constructs a blank term
- Term();
-
- // TODO: need to be private, a few other things need to be changed first...
- Term(const TCHAR* fld, const TCHAR* txt, bool internField);
-
- /**
- * Constructor. Constructs a Term with the given field and text. Field and
- * text are not copied Field and text are deleted in destructor only if
- * intern is false.
- */
- Term(const TCHAR* fld, const TCHAR* txt);
-
- ///Destructor.
- ~Term();
-
- ///Returns the field of this term, an interned string. The field indicates
- ///the part of a document which this term came from.
- const TCHAR* field() const; ///<returns reference
-
- ///Returns the text of this term. In the case of words, this is simply the
- ///text of the word. In the case of dates and other types, this is an
- ///encoding of the object as a string.
- const TCHAR* text() const; ///<returns reference
-
- ///Resets the field and text of a Term.
- inline void set(const TCHAR* fld, const TCHAR* txt)
- {
- set(fld, txt, true);
- }
-
- /**
- * Optimized set of Term by reusing same field as this Term
- * - avoids field.intern() overhead
- * @param text The text of the new term
- * (field is implicitly same as this Term instance)
- */
- void set(const Term* term, const TCHAR* txt);
-
- void set(const TCHAR* fld, const TCHAR* txt, bool internField);
-
- /** Compares two terms, returning a negative integer if this
- term belongs before the argument, zero if this term is equal to the
- argument, and a positive integer if this term belongs after the argument.
-
- The ordering of terms is first by field, then by text.*/
- int32_t compareTo(const Term* other) const;
-
- bool equals(const Term* other) const;
-
- size_t textLength() const { return textLen; }
-
- ///Forms the contents of Field and term in some kind of tuple notation
- ///<field:text>
- TCHAR* toString() const;
-
- size_t hashCode();
-
- class Equals:public CL_NS_STD(binary_function)<const Term*,const Term*,bool>
- {
- public:
- bool operator()( const Term* val1, const Term* val2 ) const
- {
- return val1->equals(val2);
- }
- };
-
- class Compare:LUCENE_BASE, public CL_NS(util)::Compare::_base //<Term*>
- {
- public:
- bool operator()(Term* t1, Term* t2) const
- {
- return (t1->compareTo(t2) < 0);
- }
-
- size_t operator()(Term* t) const
- {
- return t->hashCode();
- }
- };
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.cpp
deleted file mode 100644
index b88030357..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-
-#include "CLucene/StdHeader.h"
-#include "TermInfo.h"
-
-CL_NS_DEF(index)
-
-TermInfo::TermInfo()
-{
- set(0, 0, 0, 0);
-}
-
-TermInfo::~TermInfo()
-{
-}
-
-TermInfo::TermInfo(int32_t df, int64_t fp, int64_t pp)
-{
- set(df, fp, pp, 0);
-}
-
-TermInfo::TermInfo(const TermInfo* ti)
-{
- if (ti)
- set(ti);
-}
-
-void TermInfo::set(const TermInfo* ti)
-{
- if (ti)
- set(ti->docFreq, ti->freqPointer, ti->proxPointer, ti->skipOffset);
-}
-
-void TermInfo::set(int32_t df, int64_t fp, int64_t pp, int32_t so)
-{
- CND_PRECONDITION(df >= 0, "df contains negative number");
- CND_PRECONDITION(fp >= 0, "fp contains negative number");
- CND_PRECONDITION(pp >= 0, "pp contains negative number");
-
- docFreq = df;
- freqPointer = fp;
- proxPointer = pp;
- skipOffset = so;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.h b/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.h
deleted file mode 100644
index ae1a8a904..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfo.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_TermInfo
-#define _lucene_index_TermInfo
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(index)
-
-// A TermInfo is the record of information stored for a term.
-class TermInfo : LUCENE_BASE
-{
-public:
- // The number of documents which contain the term.
- int32_t docFreq;
-
- //A pointer into the TermFreqs file (.frq)
- //The .frq file contains the lists of documents which contain each term,
- //along with the frequency of the term in that document.
- int64_t freqPointer;
-
- //A pointer into the TermPosition file (.prx).
- //The .prx file contains the lists of positions that each term
- //occurs at within documents.
- int64_t proxPointer;
-
- int32_t skipOffset;
-
- //Constructor
- TermInfo();
-
- //Constructor
- TermInfo(int32_t df, int64_t fp, int64_t pp);
-
- //Constructor
- //Initialises this instance by copying the values of another TermInfo ti
- TermInfo(const TermInfo* ti);
-
- //Destructor
- ~TermInfo();
-
- //Sets a new document frequency, a new freqPointer and a new proxPointer
- void set(int32_t docFreq, int64_t freqPointer, int64_t proxPointer,
- int32_t skipOffset);
-
- //Sets a new document frequency, a new freqPointer and a new proxPointer
- //by copying these values from another instance of TermInfo
- void set(const TermInfo* ti);
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.cpp
deleted file mode 100644
index dd37ef6f3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.cpp
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "TermInfosReader.h"
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/util/Misc.h"
-#include "FieldInfos.h"
-#include "Term.h"
-#include "Terms.h"
-#include "TermInfo.h"
-#include "TermInfosWriter.h"
-
-CL_NS_USE(store)
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-TermInfosReader::TermInfosReader(Directory* dir, const QString& seg,
- FieldInfos* fis)
- : directory(dir)
- , fieldInfos (fis)
-{
- //Func - Constructor.
- // Reads the TermInfos file (.tis) and eventually the Term Info Index file (.tii)
- //Pre - dir is a reference to a valid Directory
- // Fis contains a valid reference to an FieldInfos instance
- // seg != NULL and contains the name of the segment
- //Post - An instance has been created and the index named seg has been read. (Remember
- // a segment is nothing more then an independently readable index)
-
- CND_PRECONDITION(!seg.isEmpty(), "seg is NULL");
-
- //Initialize the name of the segment
- segment = seg;
- //There are no indexTerms yet
- indexTerms = NULL;
- //So there are no indexInfos
- indexInfos = NULL;
- //So there are no indexPointers
- indexPointers = NULL;
- //Create a filname fo a Term Info File
- QString tisFile = Misc::segmentname(segment, QLatin1String(".tis"));
- QString tiiFile = Misc::segmentname(segment, QLatin1String(".tii"));
-
- //Create an SegmentTermEnum for storing all the terms read of the segment
- origEnum = _CLNEW SegmentTermEnum( directory->openInput( tisFile ), fieldInfos, false);
- indexEnum = _CLNEW SegmentTermEnum( directory->openInput( tiiFile ), fieldInfos, true);
-
- //Check if enumerator points to a valid instance
- CND_CONDITION(origEnum != NULL, "No memory could be allocated for orig enumerator");
- CND_CONDITION(indexEnum != NULL, "No memory could be allocated for index enumerator");
-
- //Get the size of the enumeration and store it in size
- _size = origEnum->size;
-}
-
-TermInfosReader::~TermInfosReader()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- //Close the TermInfosReader to be absolutly sure that enumerator has been closed
- //and the arrays indexTerms, indexPointers and indexInfos and their elements
- //have been destroyed
- close();
-}
-
-void TermInfosReader::close()
-{
- //Func - Close the enumeration of TermInfos
- //Pre - true
- //Post - The _enumeration has been closed and the arrays
-
- //Check if indexTerms and indexInfos exist
- if (indexTerms && indexInfos){
- //Iterate through arrays indexTerms and indexPointer to
- //destroy their elements
-#ifdef _DEBUG
- for (int32_t i = 0; i < indexTermsLength; ++i) {
- if (indexTerms[i].__cl_refcount != 1) {
- CND_PRECONDITION(indexTerms[i].__cl_refcount == 1,
- "TermInfosReader term was references more than internally");
- }
- // _CLDECDELETE(indexTerms[i]);
- //_CLDELETE(indexInfos[i]);
- }
-#endif
- //Delete the arrays
- _CLDELETE_ARRAY(indexTerms);
- _CLDELETE_ARRAY(indexInfos);
- }
-
- //Delete the arrays
- _CLDELETE_ARRAY(indexPointers);
-
- if (origEnum != NULL) {
- origEnum->close();
-
- //Get a pointer to IndexInput used by the enumeration but
- //instantiated in the constructor by directory.open( tisFile )
- IndexInput *is = origEnum->input;
-
- //Delete the enumuration enumerator
- _CLDELETE(origEnum);
-
- //Delete the IndexInput
- _CLDELETE(is);
- }
-
- if (indexEnum != NULL){
- indexEnum->close();
-
- //Get a pointer to IndexInput used by the enumeration but
- //instantiated in the constructor by directory.open( tiiFile )
- IndexInput *is = indexEnum->input;
-
- //Delete the enumuration enumerator
- _CLDELETE(indexEnum);
-
- //Delete the IndexInput
- _CLDELETE(is);
- }
-}
-
-int64_t TermInfosReader::size() const
-{
- //Func - Return the size of the enumeration of TermInfos
- //Pre - true
- //Post - size has been returened
-
- return _size;
-}
-
-Term* TermInfosReader::get(const int32_t position)
-{
- //Func - Returns the nth term in the set
- //Pre - position > = 0
- //Post - The n-th term in the set has been returned
-
- //Check if the size is 0 because then there are no terms
- if (_size == 0)
- return NULL;
-
- SegmentTermEnum* enumerator = getEnum();
-
- if (enumerator != NULL //an enumeration exists
- && enumerator->term(false) != NULL // term is at or past current
- && position >= enumerator->position
- && position < (enumerator->position + enumerator->indexInterval)) {
- return scanEnum(position); // can avoid seek
- }
-
- //random-access: must seek
- seekEnum(position / enumerator->indexInterval);
-
- //Get the Term at position
- return scanEnum(position);
-}
-
-// TODO: currently there is no way of cleaning up a thread, if the thread ends.
-// we are stuck with the terminfosreader of that thread. Hopefully this won't
-// be too big a problem... solutions anyone?
-SegmentTermEnum* TermInfosReader::getEnum()
-{
- SegmentTermEnum* termEnum = enumerators.get();
- if (termEnum == NULL) {
- termEnum = terms();
- enumerators.set(termEnum);
- }
- return termEnum;
-}
-
-TermInfo* TermInfosReader::get(const Term* term)
-{
- //Func - Returns a TermInfo for a term
- //Pre - term holds a valid reference to term
- //Post - if term can be found its TermInfo has been returned otherwise NULL
-
- //If the size of the enumeration is 0 then no Terms have been read
- if (_size == 0)
- return NULL;
-
- ensureIndexIsRead();
-
- // optimize sequential access: first try scanning cached enum w/o seeking
- SegmentTermEnum* enumerator = getEnum();
-
- // optimize sequential access: first try scanning cached enumerator w/o seeking
- // if the current term of the enumeration enumerator is not at the end
- if (enumerator->term(false) != NULL
- // AND there exists a previous current called prev and term is
- // positioned after this prev
- && ((enumerator->prev != NULL && term->compareTo(enumerator->prev) > 0)
- // OR term is positioned at the same position as the current of
- // enumerator or at a higher position
- || term->compareTo(enumerator->term(false)) >= 0)) {
- //Calculate the offset for the position
- int32_t _enumOffset = (int32_t)
- (enumerator->position / enumerator->indexInterval) + 1;
-
- // but before end of block the length of indexTerms (the number of
- // terms in enumerator) equals _enum_offset
- if (indexTermsLength == _enumOffset
- // OR term is positioned in front of term found at _enumOffset in
- // indexTerms
- || term->compareTo(&indexTerms[_enumOffset]) < 0) {
- //no need to seek, retrieve the TermInfo for term
- return scanEnum(term);
- }
- }
-
- //Reposition current term in the enumeration
- seekEnum(getIndexOffset(term));
- //Return the TermInfo for term
- return scanEnum(term);
-}
-
-int64_t TermInfosReader::getPosition(const Term* term)
-{
- //Func - Returns the position of a Term in the set
- //Pre - term holds a valid reference to a Term
- // enumerator != NULL
- //Post - If term was found then its position is returned otherwise -1
-
- //if the enumeration is empty then return -1
- if (_size == 0)
- return -1;
-
- ensureIndexIsRead();
-
- //Retrieve the indexOffset for term
- int32_t indexOffset = getIndexOffset(term);
- seekEnum(indexOffset);
-
- SegmentTermEnum* enumerator = getEnum();
-
- while(term->compareTo(enumerator->term(false)) > 0 && enumerator->next()) {}
-
- if (term->equals(enumerator->term(false)))
- return enumerator->position;
-
- return -1;
-}
-
-SegmentTermEnum* TermInfosReader::terms(const Term* term)
-{
- //Func - Returns an enumeration of terms starting at or after the named term.
- // If term is null then enumerator is set to the beginning
- //Pre - term holds a valid reference to a Term
- // enumerator != NULL
- //Post - An enumeration of terms starting at or after the named term has been returned
-
- SegmentTermEnum* enumerator = NULL;
- if (term != NULL) {
- //Seek enumerator to term; delete the new TermInfo that's returned.
- TermInfo* ti = get(term);
- _CLDELETE(ti);
- enumerator = getEnum();
- } else {
- enumerator = origEnum;
- }
- //Clone the entire enumeration
- SegmentTermEnum* cln = enumerator->clone();
-
- //Check if cln points to a valid instance
- CND_CONDITION(cln != NULL, "cln is NULL");
-
- return cln;
-}
-
-void TermInfosReader::ensureIndexIsRead()
-{
- //Func - Reads the term info index file or .tti file.
- // This file contains every IndexInterval-th entry from the .tis file,
- // along with its location in the "tis" file. This is designed to be
- // read entirely into memory and used to provide random access to the
- // "tis" file.
- //Pre - indexTerms = NULL
- // indexInfos = NULL
- // indexPointers = NULL
- //Post - The term info index file has been read into memory
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- if ( indexTerms != NULL )
- return;
-
- try {
- indexTermsLength = (size_t)indexEnum->size;
-
- // Instantiate an block of Term's,so that each one doesn't have to be new'd
- indexTerms = _CL_NEWARRAY(Term,indexTermsLength);
-
- // Check if is indexTerms is a valid array
- CND_CONDITION(indexTerms != NULL,
- "No memory could be allocated for indexTerms");
-
- // Instantiate an big block of TermInfo's, so that each one doesn't
- // have to be new'd
- indexInfos = _CL_NEWARRAY(TermInfo,indexTermsLength);
-
- // Check if is indexInfos is a valid array
- CND_CONDITION(indexInfos != NULL,
- "No memory could be allocated for indexInfos");
-
- // Instantiate an array indexPointers that contains pointers to the
- // term info index file
- indexPointers = _CL_NEWARRAY(int64_t,indexTermsLength);
-
- // Check if is indexPointers is a valid array
- CND_CONDITION(indexPointers != NULL,
- "No memory could be allocated for indexPointers");
-
- //Iterate through the terms of indexEnum
- for (int32_t i = 0; indexEnum->next(); ++i) {
- indexTerms[i].set(indexEnum->term(false), indexEnum->term(false)->text());
- indexEnum->getTermInfo(&indexInfos[i]);
- indexPointers[i] = indexEnum->indexPointer;
- }
- } _CLFINALLY (
- indexEnum->close();
- // Close and delete the IndexInput is. The close is done by the destructor.
- _CLDELETE( indexEnum->input );
- _CLDELETE( indexEnum );
- );
-}
-
-int32_t TermInfosReader::getIndexOffset(const Term* term)
-{
- //Func - Returns the offset of the greatest index entry which is less than
- // or equal to term.
- //Pre - term holds a reference to a valid term
- // indexTerms != NULL
- //Post - The new offset has been returned
-
- //Check if is indexTerms is a valid array
- CND_PRECONDITION(indexTerms != NULL, "indexTerms is NULL");
-
- int32_t lo = 0;
- int32_t hi = indexTermsLength - 1;
- int32_t mid;
- int32_t delta;
-
- while (hi >= lo) {
- //Start in the middle betwee hi and lo
- mid = (lo + hi) >> 1;
-
- //Check if is indexTerms[mid] is a valid instance of Term
- CND_PRECONDITION(&indexTerms[mid] != NULL, "indexTerms[mid] is NULL");
- CND_PRECONDITION(mid < indexTermsLength, "mid >= indexTermsLength");
-
- //Determine if term is before mid or after mid
- delta = term->compareTo(&indexTerms[mid]);
- if (delta < 0) {
- //Calculate the new hi
- hi = mid - 1;
- } else if (delta > 0) {
- //Calculate the new lo
- lo = mid + 1;
- } else {
- //term has been found so return its position
- return mid;
- }
- }
- // the new starting offset
- return hi;
-}
-
-void TermInfosReader::seekEnum(const int32_t indexOffset)
-{
- //Func - Reposition the current Term and TermInfo to indexOffset
- //Pre - indexOffset >= 0
- // indexTerms != NULL
- // indexInfos != NULL
- // indexPointers != NULL
- //Post - The current Term and Terminfo have been repositioned to indexOffset
-
- CND_PRECONDITION(indexOffset >= 0, "indexOffset contains a negative number");
- CND_PRECONDITION(indexTerms != NULL, "indexTerms is NULL");
- CND_PRECONDITION(indexInfos != NULL, "indexInfos is NULL");
- CND_PRECONDITION(indexPointers != NULL, "indexPointers is NULL");
-
- SegmentTermEnum* enumerator = getEnum();
- enumerator->seek(indexPointers[indexOffset],
- (indexOffset * enumerator->indexInterval) - 1,
- &indexTerms[indexOffset], &indexInfos[indexOffset]);
-}
-
-TermInfo* TermInfosReader::scanEnum(const Term* term)
-{
- //Func - Scans the Enumeration of terms for term and returns the
- // corresponding TermInfo instance if found. The search is started
- // from the current term.
- //Pre - term contains a valid reference to a Term
- // enumerator != NULL
- //Post - if term has been found the corresponding TermInfo has been returned
- // otherwise NULL has been returned
-
- SegmentTermEnum* enumerator = getEnum();
- enumerator->scanTo(term);
-
- //Check if the at the position the Term term can be found
- if (enumerator->term(false) != NULL && term->equals(enumerator->term(false))) {
- //Return the TermInfo instance about term
- return enumerator->getTermInfo();
- }
-
- //term was not found so no TermInfo can be returned
- return NULL;
-}
-
-Term* TermInfosReader::scanEnum(const int32_t position)
-{
- //Func - Scans the enumeration to the requested position and returns the
- // Term located at that position
- //Pre - position > = 0
- // enumerator != NULL
- //Post - The Term at the requested position has been returned
-
- SegmentTermEnum* enumerator = getEnum();
-
- // As long the position of the enumeration enumerator is smaller than the
- // requested one
- while(enumerator->position < position) {
- //Move the current of enumerator to the next
- if (!enumerator->next()) {
- //If there is no next it means that the requested position was to big
- return NULL;
- }
- }
-
- //Return the Term a the requested position
- return enumerator->term();
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.h b/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.h
deleted file mode 100644
index 24fd5b290..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosReader.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_TermInfosReader_
-#define _lucene_index_TermInfosReader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/util/ThreadLocal.h"
-#include "SegmentTermEnum.h"
-
-CL_NS_DEF(index)
-
-class FieldInfos;
-class Term;
-class TermInfo;
-class TermInfos;
-class TermInfosWriter;
-
-// PORT STATUS: 365707 (jlucene 1.9)
-// This stores a monotonically increasing set of <Term, TermInfo> pairs in a
-// Directory. Pairs are accessed either by Term or by ordinal position the set.
-class TermInfosReader : LUCENE_BASE
-{
-private:
- CL_NS(store)::Directory* directory;
- QString segment;
- FieldInfos* fieldInfos;
-
- CL_NS(util)::ThreadLocal<SegmentTermEnum*,
- CL_NS(util)::Deletor::Object<SegmentTermEnum> > enumerators;
-
- SegmentTermEnum* getEnum();
- SegmentTermEnum* origEnum;
- SegmentTermEnum* indexEnum;
- int64_t _size;
-
- Term* indexTerms;
- int32_t indexTermsLength;
- TermInfo* indexInfos;
- int64_t* indexPointers;
-
- DEFINE_MUTEX(THIS_LOCK)
-
-public:
- // Reads the TermInfos file(.tis) and eventually the Term Info Index(.tii)
- TermInfosReader(CL_NS(store)::Directory* dir, const QString& segment,
- FieldInfos* fis);
- ~TermInfosReader();
-
- //Close the enumeration of TermInfos
- void close();
-
- //Return the size of the enumeration of TermInfos
- int64_t size() const;
-
- int32_t getSkipInterval() {
- return origEnum->skipInterval; }
-
- // Returns an enumeration of terms starting at or after the named term.
- // If no term is specified, an enumeration of all the Terms
- // and TermInfos in the set is returned.
- SegmentTermEnum* terms(const Term* term = NULL);
-
- // Returns the TermInfo for a Term in the set
- // synchronized
- TermInfo* get(const Term* term);
-
-private:
- // Reads the term info index file or .tti file.
- void ensureIndexIsRead();
-
- // Returns the offset of the greatest index entry which is less than term.
- int32_t getIndexOffset(const Term* term);
-
- // Reposition the current Term and TermInfo to indexOffset
- void seekEnum(const int32_t indexOffset);
-
- // Scans the Enumeration of terms for term and returns the corresponding
- // TermInfo instance if found. The search is started from the current term.
- TermInfo* scanEnum(const Term* term);
-
- // Scans the enumeration to the requested position and returns the Term
- // located at that position
- Term* scanEnum(const int32_t position);
-
- // Returns the position of a Term in the set. synchronized
- int64_t getPosition(const Term* term);
-
- // Returns the nth term in the set. synchronized
- Term* get(const int32_t position);
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.cpp
deleted file mode 100644
index 6f21f2ec3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "TermInfosWriter.h"
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/util/Misc.h"
-#include "FieldInfos.h"
-#include "Term.h"
-#include "TermInfo.h"
-#include "IndexWriter.h"
-
-CL_NS_USE(util)
-CL_NS_USE(store)
-CL_NS_DEF(index)
-
-TermInfosWriter::TermInfosWriter(Directory* directory, const QString& segment,
- FieldInfos* fis, int32_t interval)
- : fieldInfos(fis)
-{
- //Func - Constructor
- //Pre - directory contains a valid reference to a Directory
- // segment != NULL
- // fis contains a valid reference to a reference FieldInfos
- //Post - The instance has been created
-
- CND_PRECONDITION(!segment.isEmpty(), "segment is NULL");
- //Initialize instance
- initialise(directory, segment, interval, false);
-
- other = _CLNEW TermInfosWriter(directory, segment, fieldInfos, interval, true);
-
- CND_CONDITION(other != NULL, "other is NULL");
-
- other->other = this;
-}
-
-TermInfosWriter::TermInfosWriter(Directory* directory, const QString& segment,
- FieldInfos* fis, int32_t interval, bool isIndex)
- : fieldInfos(fis)
-{
- //Func - Constructor
- //Pre - directory contains a valid reference to a Directory
- // segment != NULL
- // fis contains a valid reference to a reference FieldInfos
- // isIndex is true or false
- //Post - The instance has been created
-
- CND_PRECONDITION(!segment.isEmpty(), "segment is NULL");
- initialise(directory, segment, interval, isIndex);
-}
-
-void TermInfosWriter::initialise(Directory* directory, const QString& segment,
- int32_t interval, bool IsIndex)
-{
- //Func - Helps constructors to initialize Instance
- //Pre - directory contains a valid reference to a Directory
- // segment != NULL
- // fis contains a valid reference to a reference FieldInfos
- //Post - The instance has been initialized
-
- lastTerm = _CLNEW Term;
-
- CND_CONDITION(lastTerm != NULL, "Could not allocate memory for lastTerm");
-
- lastTi = _CLNEW TermInfo();
-
- CND_CONDITION(lastTi != NULL, "Could not allocate memory for lastTi");
-
- lastIndexPointer = 0;
- size = 0;
- isIndex = IsIndex;
- indexInterval = interval;
- skipInterval = LUCENE_DEFAULT_TERMDOCS_SKIP_INTERVAL;
-
- QString buf = Misc::segmentname(segment, QLatin1String(isIndex ? ".tii" : ".tis"));
- output = directory->createOutput(buf);
-
- output->writeInt(FORMAT); // write format
- output->writeLong(0); // leave space for size
- output->writeInt(indexInterval);// write indexInterval
- output->writeInt(skipInterval); // write skipInterval
-
- //Set other to NULL by Default
- other = NULL;
-}
-
-TermInfosWriter::~TermInfosWriter()
-{
- //Func - Destructor
- //Pre - true
- //Post - de instance has been destroyed
-
- close();
-}
-
-void TermInfosWriter::add(Term* term, const TermInfo* ti)
-{
- //Func - Writes a Term and TermInfo to the outputstream
- //Pre - Term must be lexicographically greater than all previous Terms added.
- // Pointers of TermInfo ti (freqPointer and proxPointer) must be
- // positive and greater than all previous.
-
- CND_PRECONDITION(isIndex || (!isIndex && term->compareTo(lastTerm) > 0),"term out of order");
- CND_PRECONDITION(ti->freqPointer >= lastTi->freqPointer,"freqPointer out of order");
- CND_PRECONDITION(ti->proxPointer >= lastTi->proxPointer,"proxPointer out of order");
-
- if (!isIndex && size % indexInterval == 0) {
- //add an index term
- other->add(lastTerm, lastTi);
- }
-
- //write term
- writeTerm(term);
- // write doc freq
- output->writeVInt(ti->docFreq);
- //write pointers
- output->writeVLong(ti->freqPointer - lastTi->freqPointer);
- output->writeVLong(ti->proxPointer - lastTi->proxPointer);
- if (ti->docFreq >= skipInterval) {
- output->writeVInt(ti->skipOffset);
- }
-
- if (isIndex){
- output->writeVLong(other->output->getFilePointer() - lastIndexPointer);
- lastIndexPointer = other->output->getFilePointer(); // write pointer
- }
-
- lastTi->set(ti);
- size++;
-}
-
-void TermInfosWriter::close() {
- //Func - Closes the TermInfosWriter
- //Pre - true
- //Post - The TermInfosWriter has been closed
-
- if (output){
- //write size at start
- output->seek(4); // write size after format
- output->writeLong(size);
- output->close();
- _CLDELETE(output);
-
- if (!isIndex){
- if(other){
- other->close();
- _CLDELETE( other );
- }
- }
- _CLDECDELETE(lastTerm);
-
- _CLDELETE(lastTi);
- }
-}
-
-void TermInfosWriter::writeTerm(Term* term)
-{
- int32_t start = Misc::stringDifference(lastTerm->text(),lastTerm->textLength(),
- term->text(),term->textLength());
- int32_t length = term->textLength() - start;
-
- output->writeVInt(start); // write shared prefix length
- output->writeVInt(length); // write delta length
- output->writeChars(term->text(), start, length); // write delta chars
-
- int32_t fieldnum = fieldInfos->fieldNumber(term->field());
- CND_PRECONDITION(fieldnum>=-1&&fieldnum<fieldInfos->size(),"Fieldnum is out of range");
- output->writeVInt(fieldnum); // write field num
-
- if ( lastTerm->__cl_refcount == 1 ){
- lastTerm->set(term,term->text());
- }else{
- _CLDECDELETE(lastTerm);
- lastTerm = _CL_POINTER(term);
- }
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.h b/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.h
deleted file mode 100644
index 0976c2232..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermInfosWriter.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_TermInfosWriter_
-#define _lucene_index_TermInfosWriter_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "FieldInfos.h"
-#include "TermInfo.h"
-#include "Term.h"
-
-CL_NS_DEF(index)
-
-
-// This stores a monotonically increasing set of <Term, TermInfo> pairs in a
-// Directory. A TermInfos can be written once, in order.
-class TermInfosWriter : LUCENE_BASE
-{
-private:
- FieldInfos* fieldInfos;
- CL_NS(store)::IndexOutput* output;
- Term* lastTerm;
- TermInfo* lastTi;
- int64_t size;
- int64_t lastIndexPointer;
- bool isIndex;
- TermInfosWriter* other;
-
- //inititalize
- TermInfosWriter(CL_NS(store)::Directory* directory,
- const QString& segment, FieldInfos* fis, int32_t interval, bool isIndex);
-public:
- /** The file format version, a negative number. */
- LUCENE_STATIC_CONSTANT(int32_t,FORMAT=-2);
-
- /**
- * Expert: The fraction of terms in the "dictionary" which should be stored
- * in RAM. Smaller values use more memory, but make searching slightly
- * faster, while larger values use less memory and make searching slightly
- * slower. Searching is typically not dominated by dictionary lookup, so
- * tweaking this is rarely useful.
- */
- int32_t indexInterval;// = 128
-
- /**
- * Expert: The fraction of {@link TermDocs} entries stored in skip tables,
- * used to accellerate {@link TermDocs#SkipTo(int32_t)}. Larger values result in
- * smaller indexes, greater acceleration, but fewer accelerable cases, while
- * smaller values result in bigger indexes, less acceleration and more
- * accelerable cases. More detailed experiments would be useful here.
- */
- int32_t skipInterval;// = 16
-
- TermInfosWriter(CL_NS(store)::Directory* directory,
- const QString& segment, FieldInfos* fis, int32_t interval);
-
- ~TermInfosWriter();
-
- /**
- * Adds a new <Term, TermInfo> pair to the set.
- * Term must be lexicographically greater than all previous Terms added.
- * TermInfo pointers must be positive and greater than all previous.
- */
- void add(Term* term, const TermInfo* ti);
-
- /** Called to complete TermInfos creation. */
- void close();
-
-private:
- /** Helps constructors to initialize instances */
- void initialise(CL_NS(store)::Directory* directory,
- const QString& segment, int32_t interval, bool IsIndex);
- void writeTerm(Term* term);
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermVector.h b/src/assistant/3rdparty/clucene/src/CLucene/index/TermVector.h
deleted file mode 100644
index ba6a40a27..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermVector.h
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_index_termvector_h
-#define _lucene_index_termvector_h
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-#include "CLucene/store/IndexOutput.h"
-#include "FieldInfos.h"
-
-CL_NS_DEF(index)
-
-struct TermVectorOffsetInfo;
-class TermPositionVector;
-
-// Provides access to stored term vector of a document field.
-class TermFreqVector : LUCENE_BASE
-{
-public:
- virtual ~TermFreqVector() {}
-
- // @return The field this vector is associated with.
- virtual const TCHAR* getField() = 0;
-
- // @return The number of terms in the term vector.
- virtual int32_t size() = 0;
-
- // @return An Array of term texts in ascending order.
- virtual const TCHAR** getTerms() = 0;
-
-
- /* Array of term frequencies. Locations of the array correspond one to one
- * to the terms in the array obtained from <code>getTerms</code>
- * method. Each location in the array contains the number of times this
- * term occurs in the document or the document field.
- *
- * The size of the returned array is size()
- * @memory Returning a pointer to internal data. Do not delete.
- */
- virtual const Array<int32_t>* getTermFrequencies() = 0;
-
-
- /* Return an index in the term numbers array returned from
- * <code>getTerms</code> at which the term with the specified
- * <code>term</code> appears. If this term does not appear in the array,
- * return -1.
- */
- virtual int32_t indexOf(const TCHAR* term) = 0;
-
-
- /* Just like <code>indexOf(int32_t)</code> but searches for a number of terms
- * at the same time. Returns an array that has the same size as the number
- * of terms searched for, each slot containing the result of searching for
- * that term number.
- *
- * @param terms array containing terms to look for
- * @param start index in the array where the list of terms starts
- * @param len the number of terms in the list
- */
- virtual void indexesOf(const TCHAR** terms, const int32_t start,
- const int32_t len, Array<int32_t>& ret) = 0;
-
- // Solve the diamond inheritence problem by providing a reinterpret function.
- // No dynamic casting is required and no RTTI data is needed to do this
- virtual TermPositionVector* __asTermPositionVector() = 0;
-};
-
-
-/**
-* Writer works by opening a document and then opening the fields within the document and then
-* writing out the vectors for each field.
-*
-* Rough usage:
-*
-<CODE>
-for each document
-{
-writer.openDocument();
-for each field on the document
-{
-writer.openField(field);
-for all of the terms
-{
-writer.addTerm(...)
-}
-writer.closeField
-}
-writer.closeDocument()
-}
-</CODE>
-*/
-class TermVectorsWriter : LUCENE_BASE
-{
-private:
- class TVField : LUCENE_BASE
- {
- public:
- int32_t number;
- int64_t tvfPointer;
- int32_t length; // number of distinct term positions
- bool storePositions;
- bool storeOffsets;
-
- TVField(int32_t number, bool storePos, bool storeOff)
- : tvfPointer(0)
- , length(0)
- {
- this->number = number;
- this->storePositions = storePos;
- this->storeOffsets = storeOff;
- }
- ~TVField() {}
- };
-
- class TVTerm : LUCENE_BASE
- {
- const TCHAR* termText;
- int32_t termTextLen; //textlen cache
-
- public:
- TVTerm();
- ~TVTerm();
-
- int32_t freq;
- Array<int32_t>* positions;
- Array<TermVectorOffsetInfo>* offsets;
-
- const TCHAR* getTermText() const;
- size_t getTermTextLen();
- void setTermText(const TCHAR* val);
- };
-
- CL_NS(store)::IndexOutput* tvx, *tvd, *tvf;
- CL_NS(util)::CLVector<TVField*,CL_NS(util)::Deletor::Object<TVField> > fields;
- CL_NS(util)::CLVector<TVTerm*,CL_NS(util)::Deletor::Object<TVTerm> > terms;
- FieldInfos* fieldInfos;
-
- TVField* currentField;
- int64_t currentDocPointer;
-
- void addTermInternal(const TCHAR* termText, const int32_t freq,
- Array<int32_t>* positions, Array<TermVectorOffsetInfo>* offsets);
-
- void writeField();
- void writeDoc();
-
- void openField(int32_t fieldNumber, bool storePositionWithTermVector,
- bool storeOffsetWithTermVector);
-
-public:
- LUCENE_STATIC_CONSTANT(int32_t, FORMAT_VERSION = 2);
-
- // The size in bytes that the FORMAT_VERSION will take up at the beginning
- // of each file
- LUCENE_STATIC_CONSTANT(int32_t, FORMAT_SIZE = 4);
-
- LUCENE_STATIC_CONSTANT(uint8_t, STORE_POSITIONS_WITH_TERMVECTOR = 0x1);
- LUCENE_STATIC_CONSTANT(uint8_t, STORE_OFFSET_WITH_TERMVECTOR = 0x2);
-
- static const QLatin1String LUCENE_TVX_EXTENSION;
- static const QLatin1String LUCENE_TVD_EXTENSION;
- static const QLatin1String LUCENE_TVF_EXTENSION;
-
- TermVectorsWriter(CL_NS(store)::Directory* directory, const QString& segment,
- FieldInfos* fieldInfos);
-
- ~TermVectorsWriter();
- void openDocument();
- void closeDocument();
-
- /** Close all streams. */
- void close();
- bool isDocumentOpen() const;
-
- /** Start processing a field. This can be followed by a number of calls to
- * addTerm, and a final call to closeField to indicate the end of
- * processing of this field. If a field was previously open, it is
- * closed automatically.
- */
- void openField(const TCHAR* field);
-
- /** Finished processing current field. This should be followed by a call to
- * openField before future calls to addTerm.
- */
- void closeField();
-
- /** Return true if a field is currently open. */
- bool isFieldOpen() const;
-
- /**
- * Add a complete document specified by all its term vectors. If document has no
- * term vectors, add value for tvx.
- *
- * @param vectors
- * @throws IOException
- */
- void addAllDocVectors(Array<TermFreqVector*>& vectors);
-
- /** Add term to the field's term vector. Field must already be open.
- * Terms should be added in
- * increasing order of terms, one call per unique termNum. ProxPointer
- * is a pointer into the TermPosition file (prx). Freq is the number of
- * times this term appears in this field, in this document.
- * @throws IllegalStateException if document or field is not open
- */
- void addTerm(const TCHAR* termText, int32_t freq,
- Array<int32_t>* positions = NULL, Array<TermVectorOffsetInfo>* offsets = NULL);
-};
-
-class SegmentTermVector : public virtual TermFreqVector
-{
-private:
- const TCHAR* field;
- TCHAR** terms;
- int32_t termsLen; //cache
- Array<int32_t>* termFreqs;
-
- int32_t binarySearch(TCHAR** a, const int32_t arraylen, const TCHAR* key) const;
-public:
- //note: termFreqs must be the same length as terms
- SegmentTermVector(const TCHAR* field, TCHAR** terms, Array<int32_t>* termFreqs);
- virtual ~SegmentTermVector();
-
- /**
- *
- * @return The number of the field this vector is associated with
- */
- const TCHAR* getField();
- TCHAR* toString() const;
- int32_t size();
- const TCHAR** getTerms();
- const Array<int32_t>* getTermFrequencies();
- int32_t indexOf(const TCHAR* termText);
- void indexesOf(const TCHAR** termNumbers, const int32_t start, const int32_t len, Array<int32_t>& ret);
-
- virtual TermPositionVector* __asTermPositionVector();
-};
-
-class TermVectorsReader : LUCENE_BASE
-{
-private:
- FieldInfos* fieldInfos;
-
- CL_NS(store)::IndexInput* tvx;
- CL_NS(store)::IndexInput* tvd;
- CL_NS(store)::IndexInput* tvf;
- int64_t _size;
-
- int32_t tvdFormat;
- int32_t tvfFormat;
-
-
- int32_t checkValidFormat(CL_NS(store)::IndexInput* in);
-
- void readTermVectors(const TCHAR** fields, const int64_t* tvfPointers,
- const int32_t len, Array<TermFreqVector*>& _return);
-
- /**
- *
- * @param field The field to read in
- * @param tvfPointer The pointer within the tvf file where we should start reading
- * @return The TermVector located at that position
- * @throws IOException
- */
- SegmentTermVector* readTermVector(const TCHAR* field, const int64_t tvfPointer);
-
- int64_t size();
-
-
- DEFINE_MUTEX(THIS_LOCK)
- TermVectorsReader(const TermVectorsReader& copy);
-public:
- TermVectorsReader(CL_NS(store)::Directory* d, const QString& segment,
- FieldInfos* fieldInfos);
- ~TermVectorsReader();
-
- void close();
- TermVectorsReader* clone() const;
-
- /**
- * Retrieve the term vector for the given document and field
- * @param docNum The document number to retrieve the vector for
- * @param field The field within the document to retrieve
- * @return The TermFreqVector for the document and field or null if there is no termVector for this field.
- * @throws IOException if there is an error reading the term vector files
- */
- TermFreqVector* get(const int32_t docNum, const TCHAR* field);
-
-
- /**
- * Return all term vectors stored for this document or null if the could not be read in.
- *
- * @param docNum The document number to retrieve the vector for
- * @return All term frequency vectors
- * @throws IOException if there is an error reading the term vector files
- */
- bool get(int32_t docNum, Array<TermFreqVector*>& result);
-};
-
-
-struct TermVectorOffsetInfo
-{
- int startOffset;
- int endOffset;
-
-public:
- static Array<TermVectorOffsetInfo> EMPTY_OFFSET_INFO;
- TermVectorOffsetInfo();
- ~TermVectorOffsetInfo();
- TermVectorOffsetInfo(int32_t startOffset, int32_t endOffset);
- int32_t getEndOffset() const;
- void setEndOffset(int32_t endOffset);
- int32_t getStartOffset() const;
- void setStartOffset(int32_t startOffset);
- bool equals(TermVectorOffsetInfo* o);
- size_t hashCode() const;
-};
-
-
-/* Extends <code>TermFreqVector</code> to provide additional information about
- * positions in which each of the terms is found. A TermPositionVector not
- * necessarily contains both positions and offsets, but at least one of these
- * arrays exists.
-*/
-class TermPositionVector : public virtual TermFreqVector
-{
-public:
-
- /** Returns an array of positions in which the term is found.
- * Terms are identified by the index at which its number appears in the
- * term String array obtained from the <code>indexOf</code> method.
- * May return null if positions have not been stored.
- */
- virtual Array<int32_t>* getTermPositions(int32_t index) = 0;
-
- /**
- * Returns an array of TermVectorOffsetInfo in which the term is found.
- * May return null if offsets have not been stored.
- *
- * @see org.apache.lucene.analysis.Token
- *
- * @param index The position in the array to get the offsets from
- * @return An array of TermVectorOffsetInfo objects or the empty list
- */
- virtual Array<TermVectorOffsetInfo>* getOffsets(int32_t index) = 0;
-
- virtual ~TermPositionVector(){
- }
-};
-
-
-class SegmentTermPositionVector: public SegmentTermVector, public TermPositionVector
-{
-protected:
- Array< Array<int32_t> >* positions;
- Array< Array<TermVectorOffsetInfo> >* offsets;
- static Array<int32_t> EMPTY_TERM_POS;
-public:
- SegmentTermPositionVector(const TCHAR* field, TCHAR** terms,
- Array<int32_t>* termFreqs, Array< Array<int32_t> >* positions,
- Array< Array<TermVectorOffsetInfo> >* offsets);
- ~SegmentTermPositionVector();
-
- /**
- * Returns an array of TermVectorOffsetInfo in which the term is found.
- *
- * @param index The position in the array to get the offsets from
- * @return An array of TermVectorOffsetInfo objects or the empty list
- * @see org.apache.lucene.analysis.Token
- */
- Array<TermVectorOffsetInfo>* getOffsets(int32_t index);
-
- /**
- * Returns an array of positions in which the term is found.
- * Terms are identified by the index at which its number appears in the
- * term String array obtained from the <code>indexOf</code> method.
- */
- Array<int32_t>* getTermPositions(int32_t index);
-
- const TCHAR* getField() {
- return SegmentTermVector::getField(); }
-
- TCHAR* toString() const {
- return SegmentTermVector::toString(); }
-
- int32_t size() {
- return SegmentTermVector::size(); }
-
- const TCHAR** getTerms() {
- return SegmentTermVector::getTerms(); }
-
- const Array<int32_t>* getTermFrequencies() {
- return SegmentTermVector::getTermFrequencies(); }
-
- int32_t indexOf(const TCHAR* termText) {
- return SegmentTermVector::indexOf(termText); }
-
- void indexesOf(const TCHAR** termNumbers, const int32_t start,
- const int32_t len, Array<int32_t>& ret) {
- SegmentTermVector::indexesOf(termNumbers, start, len, ret); }
-
- virtual TermPositionVector* __asTermPositionVector();
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorReader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorReader.cpp
deleted file mode 100644
index 3a861f138..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorReader.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "TermVector.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-TermVectorsReader::TermVectorsReader(CL_NS(store)::Directory* d,
- const QString& segment, FieldInfos* fieldInfos)
-{
- if (d->fileExists(segment + TermVectorsWriter::LUCENE_TVX_EXTENSION)) {
- tvx = d->openInput(segment + TermVectorsWriter::LUCENE_TVX_EXTENSION);
- checkValidFormat(tvx);
-
- tvd = d->openInput(segment + TermVectorsWriter::LUCENE_TVD_EXTENSION);
- tvdFormat = checkValidFormat(tvd);
-
- tvf = d->openInput(segment + TermVectorsWriter::LUCENE_TVF_EXTENSION);
- tvfFormat = checkValidFormat(tvf);
-
- _size = tvx->length() / 8;
- }else{
- tvx = NULL;
- tvd = NULL;
- tvf = NULL;
- _size = 0;
- }
-
- this->fieldInfos = fieldInfos;
-}
-
-TermVectorsReader::TermVectorsReader(const TermVectorsReader& copy)
-{
- tvx = copy.tvx->clone();
- tvd = copy.tvd->clone();
- tvf = copy.tvf->clone();
-
- tvdFormat = copy.tvdFormat;
- tvfFormat = copy.tvfFormat;
- _size = copy._size;
- fieldInfos = copy.fieldInfos;
-}
-TermVectorsReader* TermVectorsReader::clone() const{
- if (tvx == NULL || tvd == NULL || tvf == NULL)
- return NULL;
- return _CLNEW TermVectorsReader(*this);
-}
-
-TermVectorsReader::~TermVectorsReader(){
- close();
-}
-
-void TermVectorsReader::close(){
- // why don't we trap the exception and at least make sure that
- // all streams that we can close are closed?
- CLuceneError keep(0,"",false);
- bool thrown = false;
-
- if (tvx != NULL){
- try{
- tvx->close();
- }catch(CLuceneError& err){
- if ( err.number() == CL_ERR_IO ){
- keep = err;
- thrown = true;
- }else
- throw err;
- }
- _CLDELETE(tvx);//delete even if error thrown
- }
- if (tvd != NULL){
- try{
- tvd->close();
- }catch(CLuceneError& err){
- if ( err.number() == CL_ERR_IO ){
- keep = err;
- thrown = true;
- }else
- throw err;
- }
- _CLDELETE(tvd);
- }
- if (tvf != NULL){
- try{
- tvf->close();
- }catch(CLuceneError& err){
- if ( err.number() == CL_ERR_IO ){
- keep = err;
- thrown = true;
- }else
- throw err;
- }
- _CLDELETE(tvf);
- }
-
- if ( thrown )
- throw keep;
-}
-
-TermFreqVector* TermVectorsReader::get(const int32_t docNum, const TCHAR* field){
- // Check if no term vectors are available for this segment at all
- int32_t fieldNumber = fieldInfos->fieldNumber(field);
- TermFreqVector* result = NULL;
- if (tvx != NULL) {
- //We need to account for the FORMAT_SIZE at when seeking in the tvx
- //We don't need to do this in other seeks because we already have the
- // file pointer
- //that was written in another file
- tvx->seek((docNum * 8L) + TermVectorsWriter::FORMAT_SIZE);
- int64_t position = tvx->readLong();
-
- tvd->seek(position);
- int32_t fieldCount = tvd->readVInt();
- // There are only a few fields per document. We opt for a full scan
- // rather then requiring that they be ordered. We need to read through
- // all of the fields anyway to get to the tvf pointers.
- int32_t number = 0;
- int32_t found = -1;
- for (int32_t i = 0; i < fieldCount; ++i) {
- if(tvdFormat == TermVectorsWriter::FORMAT_VERSION)
- number = tvd->readVInt();
- else
- number += tvd->readVInt();
- if (number == fieldNumber)
- found = i;
- }
-
- // This field, although valid in the segment, was not found in this
- // document
- if (found != -1) {
- // Compute position in the tvf file
- position = 0;
- for (int32_t i = 0; i <= found; ++i)
- position += tvd->readVLong();
- result = readTermVector(field, position);
- }
- }
- return result;
-}
-
-
-bool TermVectorsReader::get(int32_t docNum, Array<TermFreqVector*>& result){
- // Check if no term vectors are available for this segment at all
- if (tvx != NULL) {
- //We need to offset by
- tvx->seek((docNum * 8L) + TermVectorsWriter::FORMAT_SIZE);
- int64_t position = tvx->readLong();
-
- tvd->seek(position);
- int32_t fieldCount = tvd->readVInt();
-
- // No fields are vectorized for this document
- if (fieldCount != 0) {
- int32_t number = 0;
- const TCHAR** fields = _CL_NEWARRAY(const TCHAR*,fieldCount+1);
-
- { //msvc6 scope fix
- for (int32_t i = 0; i < fieldCount; ++i) {
- if(tvdFormat == TermVectorsWriter::FORMAT_VERSION)
- number = tvd->readVInt();
- else
- number += tvd->readVInt();
- fields[i] = fieldInfos->fieldName(number);
- }
- }
- fields[fieldCount]=NULL;
-
- // Compute position in the tvf file
- position = 0;
- int64_t* tvfPointers = _CL_NEWARRAY(int64_t,fieldCount);
- { //msvc6 scope fix
- for (int32_t i = 0; i < fieldCount; ++i) {
- position += tvd->readVLong();
- tvfPointers[i] = position;
- }
- }
-
- readTermVectors(fields, tvfPointers, fieldCount, result);
- _CLDELETE_ARRAY(tvfPointers);
- _CLDELETE_ARRAY(fields);
- }
- return true;
- }
- return false;
-}
-
-
-int32_t TermVectorsReader::checkValidFormat(CL_NS(store)::IndexInput* in)
-{
- int32_t format = in->readInt();
- if (format > TermVectorsWriter::FORMAT_VERSION)
- {
- CL_NS(util)::StringBuffer err;
- err.append(_T("Incompatible format version: "));
- err.appendInt(format);
- err.append(_T(" expected "));
- err.appendInt(TermVectorsWriter::FORMAT_VERSION);
- err.append(_T(" or less"));
- _CLTHROWT(CL_ERR_Runtime,err.getBuffer());
- }
- return format;
-}
-
-void TermVectorsReader::readTermVectors(const TCHAR** fields,
- const int64_t* tvfPointers, const int32_t len, Array<TermFreqVector*>& result)
-{
- result.length = len;
- result.values = _CL_NEWARRAY(TermFreqVector*,len);
- for (int32_t i = 0; i < len; ++i) {
- result.values[i] = readTermVector(fields[i], tvfPointers[i]);
- }
-}
-
-SegmentTermVector* TermVectorsReader::readTermVector(const TCHAR* field,
- const int64_t tvfPointer)
-{
- // Now read the data from specified position. We don't need to offset by
- // the FORMAT here since the pointer already includes the offset
- tvf->seek(tvfPointer);
-
- int32_t numTerms = tvf->readVInt();
- // If no terms - return a constant empty termvector. However, this should never occur!
- if (numTerms == 0)
- return _CLNEW SegmentTermVector(field, NULL, NULL);
-
- bool storePositions;
- bool storeOffsets;
-
- if(tvfFormat == TermVectorsWriter::FORMAT_VERSION){
- uint8_t bits = tvf->readByte();
- storePositions = (bits & TermVectorsWriter::STORE_POSITIONS_WITH_TERMVECTOR) != 0;
- storeOffsets = (bits & TermVectorsWriter::STORE_OFFSET_WITH_TERMVECTOR) != 0;
- }
- else{
- tvf->readVInt();
- storePositions = false;
- storeOffsets = false;
- }
-
- TCHAR** terms = _CL_NEWARRAY(TCHAR*,numTerms+1);
- Array<int32_t>* termFreqs = _CLNEW Array<int32_t>(numTerms);
-
- // we may not need these, but declare them
- Array< Array<int32_t> >* positions = NULL;
- Array< Array<TermVectorOffsetInfo> >* offsets = NULL;
- if(storePositions){
- Array<int32_t>* tmp = _CL_NEWARRAY(Array<int32_t>,numTerms);
- positions = _CLNEW Array< Array<int32_t> >(tmp, numTerms);
- }
- if(storeOffsets){
- Array<TermVectorOffsetInfo>* tmp = _CL_NEWARRAY(Array<TermVectorOffsetInfo>,numTerms);
- offsets = _CLNEW Array< Array<TermVectorOffsetInfo> >(tmp, numTerms);
- }
-
- int32_t start = 0;
- int32_t deltaLength = 0;
- int32_t totalLength = 0;
- int32_t bufferLen=10; // init the buffer with a length of 10 character
- TCHAR* buffer = (TCHAR*)malloc(bufferLen * sizeof(TCHAR));
-
- for (int32_t i = 0; i < numTerms; ++i) {
- start = tvf->readVInt();
- deltaLength = tvf->readVInt();
- totalLength = start + deltaLength;
- if (bufferLen < totalLength) // increase buffer
- {
- buffer=(TCHAR*)realloc(buffer,totalLength * sizeof(TCHAR));
- bufferLen = totalLength;
- }
-
- //read the term
- tvf->readChars(buffer, start, deltaLength);
- terms[i] = _CL_NEWARRAY(TCHAR,totalLength+1);
- _tcsncpy(terms[i],buffer,totalLength);
- terms[i][totalLength] = '\0'; //null terminate term
-
- //read the frequency
- int32_t freq = tvf->readVInt();
- termFreqs->values[i] = freq;
-
- if (storePositions) { //read in the positions
- Array<int32_t>& pos = positions->values[i];
- pos.length = freq;
- pos.values = _CL_NEWARRAY(int32_t,freq);
-
- int32_t prevPosition = 0;
- for (int32_t j = 0; j < freq; ++j)
- {
- pos.values[j] = prevPosition + tvf->readVInt();
- prevPosition = pos.values[j];
- }
- }
-
- if (storeOffsets) {
- Array<TermVectorOffsetInfo>& offs = offsets->values[i];
- offs.length = freq;
- offs.values = _CL_NEWARRAY(TermVectorOffsetInfo,freq);
-
- int32_t prevOffset = 0;
- for (int32_t j = 0; j < freq; ++j) {
- int32_t startOffset = prevOffset + tvf->readVInt();
- int32_t endOffset = startOffset + tvf->readVInt();
- offs.values[j].setStartOffset(startOffset);
- offs.values[j].setEndOffset(endOffset);
- prevOffset = endOffset;
- }
- }
- }
- free(buffer);
- terms[numTerms]=NULL; //null terminate terms array
-
- SegmentTermVector* tv = NULL;
- if (storePositions || storeOffsets){
- return _CLNEW SegmentTermPositionVector(field, terms, termFreqs, positions, offsets);
- }else {
- return _CLNEW SegmentTermVector(field, terms, termFreqs);
- }
-}
-
-int64_t TermVectorsReader::size()
-{
- return _size;
-}
-
-
-
-
-Array<TermVectorOffsetInfo> TermVectorOffsetInfo::EMPTY_OFFSET_INFO;
-
-TermVectorOffsetInfo::TermVectorOffsetInfo()
-{
- startOffset = 0;
- endOffset=0;
-}
-
-TermVectorOffsetInfo::~TermVectorOffsetInfo()
-{
-}
-
-TermVectorOffsetInfo::TermVectorOffsetInfo(int32_t startOffset, int32_t endOffset)
-{
- this->endOffset = endOffset;
- this->startOffset = startOffset;
-}
-
-int32_t TermVectorOffsetInfo::getEndOffset() const
-{
- return endOffset;
-}
-
-void TermVectorOffsetInfo::setEndOffset(int32_t endOffset)
-{
- this->endOffset = endOffset;
-}
-
-int32_t TermVectorOffsetInfo::getStartOffset() const
-{
- return startOffset;
-}
-
-void TermVectorOffsetInfo::setStartOffset(int32_t startOffset)
-{
- this->startOffset = startOffset;
-}
-
-bool TermVectorOffsetInfo::equals(TermVectorOffsetInfo* termVectorOffsetInfo)
-{
- if (this == termVectorOffsetInfo)
- return true;
-
- if (endOffset != termVectorOffsetInfo->endOffset) return false;
- if (startOffset != termVectorOffsetInfo->startOffset) return false;
-
- return true;
-}
-
-size_t TermVectorOffsetInfo::hashCode() const
-{
- size_t result;
- result = startOffset;
- result = 29 * result + endOffset;
- return result;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorWriter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorWriter.cpp
deleted file mode 100644
index 821d2c788..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/TermVectorWriter.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "TermVector.h"
-#include "CLucene/util/Misc.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(index)
-
-const QLatin1String TermVectorsWriter::LUCENE_TVX_EXTENSION(".tvx");
-const QLatin1String TermVectorsWriter::LUCENE_TVD_EXTENSION(".tvd");
-const QLatin1String TermVectorsWriter::LUCENE_TVF_EXTENSION(".tvf");
-
-TermVectorsWriter::TermVectorsWriter(CL_NS(store)::Directory* directory,
- const QString& segment,FieldInfos* fieldInfos)
-{
- // Open files for TermVector storage
- tvx = directory->createOutput(segment + LUCENE_TVX_EXTENSION);
- tvx->writeInt(FORMAT_VERSION);
-
- tvd = directory->createOutput(segment + LUCENE_TVD_EXTENSION);
- tvd->writeInt(FORMAT_VERSION);
-
- tvf = directory->createOutput(segment + LUCENE_TVF_EXTENSION);
- tvf->writeInt(FORMAT_VERSION);
-
- this->fieldInfos = fieldInfos;
-
- currentField = NULL;
- currentDocPointer = -1;
-}
-
-TermVectorsWriter::~TermVectorsWriter()
-{
- if (tvx != NULL) {
- tvx->close();
- _CLDELETE(tvx);
- }
-
- if (tvd != NULL) {
- tvd->close();
- _CLDELETE(tvd);
- }
-
- if (tvf != NULL){
- tvf->close();
- _CLDELETE(tvf);
- }
-}
-
-void TermVectorsWriter::openDocument()
-{
- closeDocument();
- currentDocPointer = tvd->getFilePointer();
-}
-
-void TermVectorsWriter::closeDocument()
-{
- if (isDocumentOpen()) {
- closeField();
- writeDoc();
- fields.clear();
- currentDocPointer = -1;
- }
-}
-
-bool TermVectorsWriter::isDocumentOpen() const
-{
- return currentDocPointer != -1;
-}
-
-
-void TermVectorsWriter::openField(int32_t fieldNumber,
- bool storePositionWithTermVector, bool storeOffsetWithTermVector)
-{
- if (!isDocumentOpen())
- _CLTHROWA(CL_ERR_InvalidState,"Cannot open field when no document is open.");
-
- closeField();
- currentField = _CLNEW TVField(fieldNumber, storePositionWithTermVector,
- storeOffsetWithTermVector);
-}
-
-void TermVectorsWriter::openField(const TCHAR* field)
-{
- FieldInfo* fieldInfo = fieldInfos->fieldInfo(field);
- openField(fieldInfo->number, fieldInfo->storePositionWithTermVector,
- fieldInfo->storeOffsetWithTermVector);
-}
-
-void TermVectorsWriter::closeField()
-{
- if (isFieldOpen()) {
- /* DEBUG */
- //System.out.println("closeField()");
- /* DEBUG */
-
- // save field and terms
- writeField();
- fields.push_back(currentField);
- terms.clear();
- currentField = NULL;
- }
-}
-
-bool TermVectorsWriter::isFieldOpen() const
-{
- return currentField != NULL;
-}
-
-void TermVectorsWriter::addTerm(const TCHAR* termText, int32_t freq,
- Array<int32_t>* positions, Array<TermVectorOffsetInfo>* offsets)
-{
- if (!isDocumentOpen())
- _CLTHROWA(CL_ERR_InvalidState, "Cannot add terms when document is not open");
-
- if (!isFieldOpen())
- _CLTHROWA(CL_ERR_InvalidState, "Cannot add terms when field is not open");
-
- addTermInternal(termText, freq, positions, offsets);
-}
-
-void TermVectorsWriter::addTermInternal(const TCHAR* termText, int32_t freq,
- Array<int32_t>* positions, Array<TermVectorOffsetInfo>* offsets)
-{
- TVTerm* term = _CLNEW TVTerm();
- term->setTermText(termText);
- term->freq = freq;
- term->positions = positions;
- term->offsets = offsets;
- terms.push_back(term);
-}
-
-void TermVectorsWriter::addAllDocVectors(Array<TermFreqVector*>& vectors)
-{
- openDocument();
-
- for (int32_t i = 0; i < vectors.length; ++i) {
- bool storePositionWithTermVector = false;
- bool storeOffsetWithTermVector = false;
-
- if ( vectors[i]->__asTermPositionVector() != NULL ) {
- TermPositionVector* tpVector = vectors[i]->__asTermPositionVector();
-
- if (tpVector->size() > 0 && tpVector->getTermPositions(0) != NULL)
- storePositionWithTermVector = true;
- if (tpVector->size() > 0 && tpVector->getOffsets(0) != NULL)
- storeOffsetWithTermVector = true;
-
- FieldInfo* fieldInfo = fieldInfos->fieldInfo(tpVector->getField());
- openField(fieldInfo->number, storePositionWithTermVector, storeOffsetWithTermVector);
-
- for (int32_t j = 0; j < tpVector->size(); ++j)
- addTermInternal(tpVector->getTerms()[j],
- (*tpVector->getTermFrequencies())[j],
- tpVector->getTermPositions(j),
- tpVector->getOffsets(j));
-
- closeField();
-
- } else {
- TermFreqVector* tfVector = vectors[i];
-
- FieldInfo* fieldInfo = fieldInfos->fieldInfo(tfVector->getField());
- openField(fieldInfo->number, storePositionWithTermVector, storeOffsetWithTermVector);
-
- for (int32_t j = 0; j < tfVector->size(); ++j)
- addTermInternal(tfVector->getTerms()[j],
- (*tfVector->getTermFrequencies())[j], NULL, NULL);
-
- closeField();
- }
- }
-
- closeDocument();
-}
-
-
-void TermVectorsWriter::close()
-{
- try {
- closeDocument();
-
- // make an effort to close all streams we can but remember and re-throw
- // the first exception encountered in this process
-#define _DOTVWCLOSE(x) \
- if (x != NULL) { \
- try { \
- x->close(); \
- _CLDELETE(x) \
- } catch (CLuceneError& e) { \
- if ( e.number() != CL_ERR_IO ) \
- throw e; \
- if (ikeep == 0) \
- ikeep = e.number(); \
- if (keep[0] == 0) \
- strcpy(keep,e.what()); \
- } catch (...) { \
- if (keep[0] == 0) \
- strcpy(keep, "Unknown error while closing " #x);\
- } \
- }
- } _CLFINALLY ( \
- char keep[200];
- int32_t ikeep = 0;
- keep[0] = 0;
- _DOTVWCLOSE(tvx);
- _DOTVWCLOSE(tvd);
- _DOTVWCLOSE(tvf);
- if (keep[0] != 0)
- _CLTHROWA(ikeep, keep);
- );
-}
-
-void TermVectorsWriter::writeField()
-{
- // remember where this field is written
- currentField->tvfPointer = tvf->getFilePointer();
- //System.out.println("Field Pointer: " + currentField.tvfPointer);
- int32_t size = terms.size();
-
- tvf->writeVInt(size);
-
- bool storePositions = currentField->storePositions;
- bool storeOffsets = currentField->storeOffsets;
- uint8_t bits = 0x0;
- if (storePositions)
- bits |= STORE_POSITIONS_WITH_TERMVECTOR;
- if (storeOffsets)
- bits |= STORE_OFFSET_WITH_TERMVECTOR;
- tvf->writeByte(bits);
-
- const TCHAR* lastTermText = LUCENE_BLANK_STRING;
- int32_t lastTermTextLen = 0;
-
- for (int32_t i = 0; i < size; ++i) {
- TVTerm* term = terms[i];
- int32_t start = CL_NS(util)::Misc::stringDifference(lastTermText,
- lastTermTextLen, term->getTermText(),term->getTermTextLen());
- int32_t length = term->getTermTextLen() - start;
- tvf->writeVInt(start); // write shared prefix length
- tvf->writeVInt(length); // write delta length
- tvf->writeChars(term->getTermText(), start, length); // write delta chars
- tvf->writeVInt(term->freq);
-
- lastTermText = term->getTermText();
- lastTermTextLen = term->getTermTextLen();
-
- if (storePositions) {
- if(term->positions == NULL)
- _CLTHROWA(CL_ERR_IllegalState, "Trying to write positions that are NULL!");
-
- // use delta encoding for positions
- int32_t position = 0;
- for (int32_t j = 0; j < term->freq; ++j){
- tvf->writeVInt((*term->positions)[j] - position);
- position = (*term->positions)[j];
- }
- }
-
- if (storeOffsets) {
- if(term->offsets == NULL)
- _CLTHROWA(CL_ERR_IllegalState, "Trying to write offsets that are NULL!");
-
- // use delta encoding for offsets
- int32_t position = 0;
- for (int32_t j = 0; j < term->freq; ++j) {
- tvf->writeVInt((*term->offsets)[j].getStartOffset() - position);
- //Save the diff between the two.
- tvf->writeVInt((*term->offsets)[j].getEndOffset() -
- (*term->offsets)[j].getStartOffset());
- position = (*term->offsets)[j].getEndOffset();
- }
- }
- }
-}
-
-void TermVectorsWriter::writeDoc()
-{
- if (isFieldOpen()) {
- _CLTHROWA(CL_ERR_InvalidState,
- "Field is still open while writing document");
- }
-
- // write document index record
- tvx->writeLong(currentDocPointer);
-
- // write document data record
- int32_t size = fields.size();
-
- // write the number of fields
- tvd->writeVInt(size);
-
- // write field numbers
- for (int32_t j = 0; j < size; ++j) {
- tvd->writeVInt(fields[j]->number);
- }
-
- // write field pointers
- int64_t lastFieldPointer = 0;
- for (int32_t i = 0; i < size; ++i) {
- TVField* field = (TVField*) fields[i];
- tvd->writeVLong(field->tvfPointer - lastFieldPointer);
-
- lastFieldPointer = field->tvfPointer;
- }
-}
-
-const TCHAR* TermVectorsWriter::TVTerm::getTermText() const
-{
- return termText;
-}
-
-size_t TermVectorsWriter::TVTerm::getTermTextLen()
-{
- if (termTextLen==-1)
- termTextLen = _tcslen(termText);
- return termTextLen;
-}
-
-void TermVectorsWriter::TVTerm::setTermText(const TCHAR* val)
-{
- _CLDELETE_CARRAY(termText);
- termText = STRDUP_TtoT(val);
- termTextLen = -1;
-
-}
-
-TermVectorsWriter::TVTerm::TVTerm()
- : freq(0)
- , positions(NULL)
- , offsets(NULL)
-{
- termText=NULL;
- termTextLen=-1;
-}
-
-TermVectorsWriter::TVTerm::~TVTerm()
-{
- _CLDELETE_CARRAY(termText)
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/index/Terms.h b/src/assistant/3rdparty/clucene/src/CLucene/index/Terms.h
deleted file mode 100644
index 806441876..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/index/Terms.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_index_Terms_
-#define _lucene_index_Terms_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Term.h"
-CL_NS_DEF(index)
-
-class TermEnum; //predefine
-class TermPositions;
-
-/** TermDocs provides an interface for enumerating &lt;document, frequency&gt;
- pairs for a term. <p> The document portion names each document containing
- the term. Documents are indicated by number. The frequency portion gives
- the number of times the term occurred in each document. <p> The pairs are
- ordered by document number.
-
- @see IndexReader#termDocs()
- */
-class TermDocs: LUCENE_BASE {
-public:
- virtual ~TermDocs(){
- }
-
- // Sets this to the data for a term.
- // The enumeration is reset to the start of the data for this term.
- virtual void seek(Term* term)=0;
-
- /** Sets this to the data for the current term in a {@link TermEnum}.
- * This may be optimized in some implementations.
- */
- virtual void seek(TermEnum* termEnum)=0;
-
- // Returns the current document number. <p> This is invalid until {@link
- // #next()} is called for the first time.
- virtual int32_t doc() const=0;
-
- // Returns the frequency of the term within the current document. <p> This
- // is invalid until {@link #next()} is called for the first time.
- virtual int32_t freq() const=0;
-
- // Moves to the next pair in the enumeration. <p> Returns true iff there is
- // such a next pair in the enumeration.
- virtual bool next() =0;
-
- // Attempts to read multiple entries from the enumeration, up to length of
- // <i>docs</i>. Document numbers are stored in <i>docs</i>, and term
- // frequencies are stored in <i>freqs</i>. The <i>freqs</i> array must be as
- // int64_t as the <i>docs</i> array.
- //
- // <p>Returns the number of entries read. Zero is only returned when the
- // stream has been exhausted.
- virtual int32_t read(int32_t* docs, int32_t* freqs, int32_t length)=0;
-
- // Skips entries to the first beyond the current whose document number is
- // greater than or equal to <i>target</i>. <p>Returns true iff there is such
- // an entry. <p>Behaves as if written: <pre>
- // bool skipTo(int32_t target) {
- // do {
- // if (!next())
- // return false;
- // } while (target > doc());
- // return true;
- // }
- // </pre>
- // Some implementations are considerably more efficient than that.
- virtual bool skipTo(const int32_t target)=0;
-
- // Frees associated resources.
- virtual void close() = 0;
-
-
- /** Solve the diamond inheritence problem by providing a reinterpret function.
- * No dynamic casting is required and no RTTI data is needed to do this
- */
- virtual TermPositions* __asTermPositions()=0;
-};
-
-
-// Abstract class for enumerating terms.
-//
-//<p>Term enumerations are always ordered by Term.compareTo(). Each term in
-//the enumeration is greater than all that precede it.
-class TermEnum: LUCENE_BASE {
-public:
- // Increments the enumeration to the next element. True if one exists.
- virtual bool next()=0;
-
- // Returns a pointer to the current Term in the enumeration.
- virtual Term* term()=0;
-
- // Returns the current Term in the enumeration.
- virtual Term* term(bool pointer){
- Term* ret = term();
- if ( !pointer )
- ret->__cl_decref();
- return ret;
- }
-
- // Returns the docFreq of the current Term in the enumeration.
- virtual int32_t docFreq() const=0;
-
- // Closes the enumeration to further activity, freeing resources.
- virtual void close() =0;
-
- virtual ~TermEnum(){
- }
-
- // Term Vector support
- /** Skips terms to the first beyond the current whose value is
- * greater or equal to <i>target</i>. <p>Returns true iff there is such
- * an entry. <p>Behaves as if written: <pre>
- * public boolean skipTo(Term target) {
- * do {
- * if (!next())
- * return false;
- * } while (target > term());
- * return true;
- * }
- * </pre>
- * Some implementations are considerably more efficient than that.
- */
- virtual bool skipTo(Term* target){
- do {
- if (!next())
- return false;
- } while (target->compareTo(term(false)) > 0);
- return true;
- }
-
- /**
- * Because we need to know how to cast the object, we need the objects name.
- */
- virtual const char* getObjectName() = 0;
-};
-
-
-
-/**
- * TermPositions provides an interface for enumerating the &lt;document,
- * frequency, &lt;position&gt;* &gt; tuples for a term. <p> The document and
- * frequency are the same as for a TermDocs. The positions portion lists the ordinal
- * positions of each occurrence of a term in a document.
- *
- * @see IndexReader#termPositions()
- */
-class TermPositions: public virtual TermDocs {
-public:
- // Returns next position in the current document. It is an error to call
- // this more than {@link #freq()} times
- // without calling {@link #next()}<p> This is
- // invalid until {@link #next()} is called for
- // the first time.
- virtual int32_t nextPosition() = 0;
-
- virtual ~TermPositions(){
- }
-
- /** Solve the diamond inheritence problem by providing a reinterpret function.
- * No dynamic casting is required and no RTTI data is needed to do this
- */
- virtual TermDocs* __asTermDocs()=0;
- virtual TermPositions* __asTermPositions()=0;
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.cpp
deleted file mode 100644
index d147f8b6d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.cpp
+++ /dev/null
@@ -1,371 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Lexer.h"
-
-#include "CLucene/util/FastCharStream.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/util/StringBuffer.h"
-#include "TokenList.h"
-#include "QueryToken.h"
-#include "QueryParserBase.h"
-
-CL_NS_USE(util)
-
-CL_NS_DEF(queryParser)
-Lexer::Lexer(QueryParserBase* queryparser, const TCHAR* query) {
- //Func - Constructor
- //Pre - query != NULL and contains the query string
- //Post - An instance of Lexer has been created
-
- this->queryparser = queryparser;
-
- CND_PRECONDITION(query != NULL, "query is NULL");
-
- //The InputStream of Reader must be destroyed in the destructor
- delSR = true;
-
- StringReader *r = _CLNEW StringReader(query);
-
- //Check to see if r has been created properly
- CND_CONDITION(r != NULL, "Could not allocate memory for StringReader r");
-
- //Instantie a FastCharStream instance using r and assign it to reader
- reader = _CLNEW FastCharStream(r);
-
- //Check to see if reader has been created properly
- CND_CONDITION(reader != NULL, "Could not allocate memory for FastCharStream reader");
-
- //The InputStream of Reader must be destroyed in the destructor
- delSR = true;
-
-}
-
-
-Lexer::Lexer(QueryParserBase* queryparser, Reader* source) {
- //Func - Constructor
- // Initializes a new instance of the Lexer class with the specified
- // TextReader to lex.
- //Pre - Source contains a valid reference to a Reader
- //Post - An instance of Lexer has been created using source as the reader
-
- this->queryparser = queryparser;
-
- //Instantie a FastCharStream instance using r and assign it to reader
- reader = _CLNEW FastCharStream(source);
-
- //Check to see if reader has been created properly
- CND_CONDITION(reader != NULL, "Could not allocate memory for FastCharStream reader");
-
- //The InputStream of Reader must not be destroyed in the destructor
- delSR = false;
-}
-
-
-Lexer::~Lexer() {
- //Func - Destructor
- //Pre - true
- //Post - if delSR was true the InputStream input of reader has been deleted
- // The instance of Lexer has been destroyed
-
- if (delSR) {
- _CLDELETE(reader->input);
- }
-
- _CLDELETE(reader);
-}
-
-
-void Lexer::Lex(TokenList *tokenList) {
- //Func - Breaks the input stream onto the tokens list tokens
- //Pre - tokens != NULL and contains a TokenList in which the tokens can be stored
- //Post - The tokens have been added to the TokenList tokens
-
- CND_PRECONDITION(tokenList != NULL, "tokens is NULL");
-
- //Get all the tokens
- while(true) {
- //Add the token to the tokens list
-
- //Get the next token
- QueryToken* token = _CLNEW QueryToken;
- if ( !GetNextToken(token) ){
- _CLDELETE(token);
- break;
- }
- tokenList->add(token);
- }
-
- //The end has been reached so create an EOF_ token
- //Add the final token to the TokenList _tokens
- tokenList->add(_CLNEW QueryToken( QueryToken::EOF_));
-}
-
-
-bool Lexer::GetNextToken(QueryToken* token) {
- while(!reader->Eos()) {
- int ch = reader->GetNext();
-
- if ( ch == -1 )
- break;
-
- // skipping whitespaces
- if( _istspace(ch)!=0 ) {
- continue;
- }
- TCHAR buf[2] = {TCHAR(ch),'\0'};
- switch(ch) {
- case '+':
- token->set(buf, QueryToken::PLUS);
- return true;
- case '-':
- token->set(buf, QueryToken::MINUS);
- return true;
- case '(':
- token->set(buf, QueryToken::LPAREN);
- return true;
- case ')':
- token->set(buf, QueryToken::RPAREN);
- return true;
- case ':':
- token->set(buf, QueryToken::COLON);
- return true;
- case '!':
- token->set(buf, QueryToken::NOT);
- return true;
- case '^':
- token->set(buf, QueryToken::CARAT);
- return true;
- case '~':
- if( _istdigit( reader->Peek() )!=0 ) {
- TCHAR number[LUCENE_MAX_FIELD_LEN];
- ReadIntegerNumber(ch, number,LUCENE_MAX_FIELD_LEN);
- token->set(number, QueryToken::SLOP);
- return true;
- }else{
- token->set(buf, QueryToken::FUZZY);
- return true;
- }
- break;
- case '"':
- return ReadQuoted(ch, token);
- case '[':
- return ReadInclusiveRange(ch, token);
- case '{':
- return ReadExclusiveRange(ch, token);
- case ']':
- case '}':
- case '*':
- queryparser->throwParserException( _T("Unrecognized TCHAR %d at %d::%d."),
- ch, reader->Column(), reader->Line() );
- return false;
- default:
- return ReadTerm(ch, token);
-
- // end of swith
- }
-
- }
- return false;
-}
-
-
-void Lexer::ReadIntegerNumber(const TCHAR ch, TCHAR* buf, int buflen) {
- int bp=0;
- buf[bp++] = ch;
-
- int c = reader->Peek();
- while( c!=-1 && _istdigit(c)!=0 && bp<buflen-1 ) {
- buf[bp++] = reader->GetNext();
- c = reader->Peek();
- }
- buf[bp++] = 0;
-}
-
-
-bool Lexer::ReadInclusiveRange(const TCHAR prev, QueryToken* token) {
- int ch = prev;
- StringBuffer range;
- range.appendChar(ch);
-
- while(!reader->Eos()) {
- ch = reader->GetNext();
- if ( ch == -1 )
- break;
- range.appendChar(ch);
-
- if(ch == ']'){
- token->set(range.getBuffer(), QueryToken::RANGEIN);
- return true;
- }
- }
- queryparser->throwParserException(_T("Unterminated inclusive range! %d %d::%d"),' ',
- reader->Column(),reader->Column());
- return false;
-}
-
-
-bool Lexer::ReadExclusiveRange(const TCHAR prev, QueryToken* token) {
- int ch = prev;
- StringBuffer range;
- range.appendChar(ch);
-
- while(!reader->Eos()) {
- ch = reader->GetNext();
-
- if (ch==-1)
- break;
- range.appendChar(ch);
-
- if(ch == '}'){
- token->set(range.getBuffer(), QueryToken::RANGEEX);
- return true;
- }
- }
- queryparser->throwParserException(_T("Unterminated exclusive range! %d %d::%d"),' ',
- reader->Column(),reader->Column() );
- return false;
-}
-
-bool Lexer::ReadQuoted(const TCHAR prev, QueryToken* token) {
- int ch = prev;
- StringBuffer quoted;
- quoted.appendChar(ch);
-
- while(!reader->Eos()) {
- ch = reader->GetNext();
-
- if (ch==-1)
- break;
-
- quoted.appendChar(ch);
-
- if(ch == '"'){
- token->set(quoted.getBuffer(), QueryToken::QUOTED);
- return true;
- }
- }
- queryparser->throwParserException(_T("Unterminated string! %d %d::%d"),' ',
- reader->Column(),reader->Column());
- return false;
-}
-
-
-bool Lexer::ReadTerm(const TCHAR prev, QueryToken* token) {
- int ch = prev;
- bool completed = false;
- int32_t asteriskCount = 0;
- bool hasQuestion = false;
-
- StringBuffer val;
- TCHAR buf[3]; //used for readescaped
-
- while(true) {
- switch(ch) {
- case -1:
- break;
- case '\\':
- {
- if ( ReadEscape(ch, buf) )
- val.append( buf );
- else
- return false;
- }
- break;
-
- case LUCENE_WILDCARDTERMENUM_WILDCARD_STRING:
- asteriskCount++;
- val.appendChar(ch);
- break;
- case LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR:
- hasQuestion = true;
- val.appendChar(ch);
- break;
- case '\n':
- case '\t':
- case ' ':
- case '+':
- case '-':
- case '!':
- case '(':
- case ')':
- case ':':
- case '^':
- case '[':
- case ']':
- case '{':
- case '}':
- case '~':
- case '"':
- // create new QueryToken
- reader->UnGet();
- completed = true;
- break;
- default:
- val.appendChar(ch);
- break;
- // end of switch
- }
-
- if(completed || ch==-1 || reader->Eos() )
- break;
- else
- ch = reader->GetNext();
- }
-
- // create new QueryToken
- if(hasQuestion)
- token->set(val.getBuffer(), QueryToken::WILDTERM);
- else if(asteriskCount == 1 && val.getBuffer()[val.length() - 1] == '*')
- token->set(val.getBuffer(), QueryToken::PREFIXTERM);
- else if(asteriskCount > 0)
- token->set(val.getBuffer(), QueryToken::WILDTERM);
- else if( _tcsicmp(val.getBuffer(), _T("AND"))==0 || _tcscmp(val.getBuffer(), _T("&&"))==0 )
- token->set(val.getBuffer(), QueryToken::AND_);
- else if( _tcsicmp(val.getBuffer(), _T("OR"))==0 || _tcscmp(val.getBuffer(), _T("||"))==0)
- token->set(val.getBuffer(), QueryToken::OR);
- else if( _tcsicmp(val.getBuffer(), _T("NOT"))==0 )
- token->set(val.getBuffer(), QueryToken::NOT);
- else {
- bool isnum = true;
- int32_t nlen=val.length();
- for (int32_t i=0;i<nlen;++i) {
- TCHAR ch=val.getBuffer()[i];
- if ( _istalpha(ch) ) {
- isnum=false;
- break;
- }
- }
-
- if ( isnum )
- token->set(val.getBuffer(), QueryToken::NUMBER);
- else
- token->set(val.getBuffer(), QueryToken::TERM);
- }
- return true;
-}
-
-
-bool Lexer::ReadEscape(TCHAR prev, TCHAR* buf) {
- TCHAR ch = prev;
- int bp=0;
- buf[bp++] = ch;
-
- ch = reader->GetNext();
- int32_t idx = _tcscspn( buf, _T("\\+-!():^[]{}\"~*") );
- if(idx == 0) {
- buf[bp++] = ch;
- buf[bp++]=0;
- return true;
- }
- queryparser->throwParserException(_T("Unrecognized escape sequence at %d %d::%d"), ' ',
- reader->Column(),reader->Line());
- return false;
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.h b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.h
deleted file mode 100644
index a36a4d1a0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/Lexer.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_queryParser_Lexer_
-#define _lucene_queryParser_Lexer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/FastCharStream.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/util/StringBuffer.h"
-
-#include "TokenList.h"
-
-CL_NS_DEF(queryParser)
-class QueryParserBase;
- // A simple Lexer that is used by QueryParser.
- class Lexer:LUCENE_BASE
- {
- private:
- CL_NS(util)::FastCharStream* reader;
- QueryParserBase* queryparser; //holds the queryparser so that we can do callbacks
- bool delSR; //Indicates if the reader must be deleted or not
-
- public:
- // Initializes a new instance of the Lexer class with the specified
- // query to lex.
- Lexer(QueryParserBase* queryparser, const TCHAR* query);
-
- // Initializes a new instance of the Lexer class with the specified
- // TextReader to lex.
- Lexer(QueryParserBase* queryparser, CL_NS(util)::Reader* source);
-
- //Breaks the input stream onto the tokens list tokens
- void Lex(TokenList *tokens);
-
- ~Lexer();
-
- private:
- bool GetNextToken(QueryToken* token);
-
- // Reads an integer number. buf should quite large, probably as large as a field should ever be
- void ReadIntegerNumber(const TCHAR ch, TCHAR* buf, int buflen);
-
- // Reads an inclusive range like [some words]
- bool ReadInclusiveRange(const TCHAR prev, QueryToken* token);
-
- // Reads an exclusive range like {some words}
- bool ReadExclusiveRange(const TCHAR prev, QueryToken* token);
-
- // Reads quoted string like "something else"
- bool ReadQuoted(const TCHAR prev, QueryToken* token);
-
- bool ReadTerm(const TCHAR prev, QueryToken* token);
-
- //reads an escaped character into the buf. Buf requires at least 3 characters
- bool ReadEscape(const TCHAR prev, TCHAR* buf);
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.cpp b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.cpp
deleted file mode 100644
index a41ffa81e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "MultiFieldQueryParser.h"
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/search/BooleanQuery.h"
-#include "CLucene/search/PhraseQuery.h"
-#include "CLucene/search/SearchHeader.h"
-#include "QueryParser.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_USE(search)
-CL_NS_USE(analysis)
-
-CL_NS_DEF(queryParser)
-
-MultiFieldQueryParser::MultiFieldQueryParser(const TCHAR** fields,
- CL_NS(analysis)::Analyzer* analyzer, BoostMap* boosts)
- : QueryParser(NULL, analyzer)
-{
- this->fields = fields;
- this->boosts = boosts;
-}
-
-MultiFieldQueryParser::~MultiFieldQueryParser()
-{
-}
-
-//static
-Query* MultiFieldQueryParser::parse(const TCHAR* query, const TCHAR** fields,
- Analyzer* analyzer)
-{
- BooleanQuery* bQuery = _CLNEW BooleanQuery();
- int32_t i = 0;
- while (fields[i] != NULL){
- Query* q = QueryParser::parse(query, fields[i], analyzer);
- if (q && (q->getQueryName() != _T("BooleanQuery")
- || ((BooleanQuery*)q)->getClauseCount() > 0)) {
- bQuery->add(q , true, false, false);
- } else {
- _CLDELETE(q);
- }
- i++;
- }
- return bQuery;
-}
-
-//static
-Query* MultiFieldQueryParser::parse(const TCHAR* query, const TCHAR** fields,
- const uint8_t* flags, Analyzer* analyzer)
-{
- BooleanQuery* bQuery = _CLNEW BooleanQuery();
- int32_t i = 0;
- while ( fields[i] != NULL ) {
- Query* q = QueryParser::parse(query, fields[i], analyzer);
- if (q && (q->getQueryName() != _T("BooleanQuery")
- || ((BooleanQuery*)q)->getClauseCount() > 0)) {
- uint8_t flag = flags[i];
- switch (flag) {
- case MultiFieldQueryParser::REQUIRED_FIELD:
- bQuery->add(q, true, true, false);
- break;
- case MultiFieldQueryParser::PROHIBITED_FIELD:
- bQuery->add(q, true, false, true);
- break;
- default:
- bQuery->add(q, true, false, false);
- break;
- }
- } else {
- _CLDELETE(q);
- }
- i++;
- }
- return bQuery;
-}
-
-
-Query* MultiFieldQueryParser::GetFieldQuery(const TCHAR* field, TCHAR* queryText, int32_t slop){
- if (field == NULL) {
- CL_NS_STD(vector)<BooleanClause*> clauses;
- for (int i = 0; fields[i]!=NULL; ++i) {
- Query* q = QueryParser::GetFieldQuery(fields[i], queryText);
- if (q != NULL) {
- //If the user passes a map of boosts
- if (boosts != NULL) {
- //Get the boost from the map and apply them
- BoostMap::const_iterator itr = boosts->find(fields[i]);
- if (itr != boosts->end()) {
- q->setBoost(itr->second);
- }
- }
- if (q->getQueryName() == PhraseQuery::getClassName()) {
- ((PhraseQuery*)q)->setSlop(slop);
- }
- //if (q instanceof MultiPhraseQuery) {
- // ((MultiPhraseQuery) q).setSlop(slop);
- //}
- q = QueryAddedCallback(fields[i], q);
- if ( q )
- clauses.push_back(_CLNEW BooleanClause(q, true, false,false));
- }
- }
- if (clauses.size() == 0) // happens for stopwords
- return NULL;
- Query* q = QueryParser::GetBooleanQuery(clauses);
- return q;
- }else{
- Query* q = QueryParser::GetFieldQuery(field, queryText);
- if ( q )
- q = QueryAddedCallback(field,q);
- return q;
- }
-}
-
-
-Query* MultiFieldQueryParser::GetFieldQuery(const TCHAR* field, TCHAR* queryText){
- return GetFieldQuery(field, queryText, 0);
-}
-
-
-CL_NS(search)::Query* MultiFieldQueryParser::GetFuzzyQuery(const TCHAR* field, TCHAR* termStr){
- if (field == NULL) {
- CL_NS_STD(vector)<BooleanClause*> clauses;
- for (int i = 0; fields[i]!=NULL; ++i) {
- Query* q = QueryParser::GetFuzzyQuery(fields[i], termStr); //todo: , minSimilarity
- if ( q ){
- q = QueryAddedCallback(fields[i], q);
- if ( q ){
- clauses.push_back(_CLNEW BooleanClause(q,true,false,false) );
- }
- }
- }
- return QueryParser::GetBooleanQuery(clauses);
- }else{
- Query* q = QueryParser::GetFuzzyQuery(field, termStr);//todo: , minSimilarity
- if ( q )
- q = QueryAddedCallback(field,q);
- return q;
- }
-}
-
-Query* MultiFieldQueryParser::GetPrefixQuery(const TCHAR* field, TCHAR* termStr){
- if (field == NULL) {
- CL_NS_STD(vector)<BooleanClause*> clauses;
- for (int i = 0; fields[i]!=NULL; ++i) {
- Query* q = QueryParser::GetPrefixQuery(fields[i], termStr);
- if ( q ){
- q = QueryAddedCallback(fields[i],q);
- if ( q ){
- clauses.push_back(_CLNEW BooleanClause(q,true,false,false));
- }
- }
- }
- return QueryParser::GetBooleanQuery(clauses);
- }else{
- Query* q = QueryParser::GetPrefixQuery(field, termStr);
- if ( q )
- q = QueryAddedCallback(field,q);
- return q;
- }
-}
-
-Query* MultiFieldQueryParser::GetWildcardQuery(const TCHAR* field, TCHAR* termStr){
- if (field == NULL) {
- CL_NS_STD(vector)<BooleanClause*> clauses;
- for (int i = 0; fields[i]!=NULL; ++i) {
- Query* q = QueryParser::GetWildcardQuery(fields[i], termStr);
- if ( q ){
- q = QueryAddedCallback(fields[i],q);
- if ( q ){
- clauses.push_back(_CLNEW BooleanClause(q,true,false,false));
- }
- }
- }
- return QueryParser::GetBooleanQuery(clauses);
- }else{
- Query* q = QueryParser::GetWildcardQuery(field, termStr);
- if ( q )
- q = QueryAddedCallback(field,q);
- return q;
- }
-}
-
-
-Query* MultiFieldQueryParser::GetRangeQuery(const TCHAR* field, TCHAR* part1, TCHAR* part2, bool inclusive){
- if (field == NULL) {
- CL_NS_STD(vector)<BooleanClause*> clauses;
- for (int i = 0; fields[i]!=NULL; ++i) {
- Query* q = QueryParser::GetRangeQuery(fields[i], part1, part2, inclusive);
- if ( q ){
- q = QueryAddedCallback(fields[i],q);
- if ( q ){
- clauses.push_back(_CLNEW BooleanClause(q,true,false,false));
- }
- }
- }
- return QueryParser::GetBooleanQuery(clauses);
- }else{
- Query* q = QueryParser::GetRangeQuery(field, part1, part2, inclusive);
- if ( q )
- q = QueryAddedCallback(field,q);
- return q;
- }
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.h b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.h
deleted file mode 100644
index bf7d652a7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef MultiFieldQueryParser_H
-#define MultiFieldQueryParser_H
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/search/SearchHeader.h"
-#include "QueryParser.h"
-
-
-CL_NS_DEF(queryParser)
-
-typedef CL_NS(util)::CLHashMap<const TCHAR*,
- qreal,
- CL_NS(util)::Compare::TChar,
- CL_NS(util)::Equals::TChar,
- CL_NS(util)::Deletor::tcArray,
- CL_NS(util)::Deletor::DummyFloat
- > BoostMap;
-
- /**
- * A QueryParser which constructs queries to search multiple fields.
- *
- */
- class MultiFieldQueryParser: public QueryParser
- {
- protected:
- const TCHAR** fields;
- BoostMap* boosts;
- public:
- LUCENE_STATIC_CONSTANT(uint8_t, NORMAL_FIELD=0);
- LUCENE_STATIC_CONSTANT(uint8_t, REQUIRED_FIELD=1);
- LUCENE_STATIC_CONSTANT(uint8_t, PROHIBITED_FIELD=2);
-
- /**
- * Creates a MultiFieldQueryParser.
- *
- * <p>It will, when parse(String query)
- * is called, construct a query like this (assuming the query consists of
- * two terms and you specify the two fields <code>title</code> and <code>body</code>):</p>
- *
- * <code>
- * (title:term1 body:term1) (title:term2 body:term2)
- * </code>
- *
- * <p>When setDefaultOperator(AND_OPERATOR) is set, the result will be:</p>
- *
- * <code>
- * +(title:term1 body:term1) +(title:term2 body:term2)
- * </code>
- *
- * <p>In other words, all the query's terms must appear, but it doesn't matter in
- * what fields they appear.</p>
- */
- MultiFieldQueryParser(const TCHAR** fields, CL_NS(analysis)::Analyzer* a, BoostMap* boosts = NULL);
- virtual ~MultiFieldQueryParser();
-
- /**
- * <p>
- * Parses a query which searches on the fields specified.
- * <p>
- * If x fields are specified, this effectively constructs:
- * <pre>
- * <code>
- * (field1:query) (field2:query) (field3:query)...(fieldx:query)
- * </code>
- * </pre>
- *
- * @param query Query string to parse
- * @param fields Fields to search on
- * @param analyzer Analyzer to use
- * @throws ParserException if query parsing fails
- * @throws TokenMgrError if query parsing fails
- */
- static CL_NS(search)::Query* parse(const TCHAR* query, const TCHAR** fields, CL_NS(analysis)::Analyzer* analyzer);
-
- /**
- * <p>
- * Parses a query, searching on the fields specified.
- * Use this if you need to specify certain fields as required,
- * and others as prohibited.
- * <p><pre>
- * Usage:
- * <code>
- * String[] fields = {"filename", "contents", "description"};
- * int32_t[] flags = {MultiFieldQueryParser.NORMAL FIELD,
- * MultiFieldQueryParser.REQUIRED FIELD,
- * MultiFieldQueryParser.PROHIBITED FIELD,};
- * parse(query, fields, flags, analyzer);
- * </code>
- * </pre>
- *<p>
- * The code above would construct a query:
- * <pre>
- * <code>
- * (filename:query) +(contents:query) -(description:query)
- * </code>
- * </pre>
- *
- * @param query Query string to parse
- * @param fields Fields to search on
- * @param flags Flags describing the fields
- * @param analyzer Analyzer to use
- * @throws ParserException if query parsing fails
- * @throws TokenMgrError if query parsing fails
- */
- static CL_NS(search)::Query* parse(const TCHAR* query, const TCHAR** fields, const uint8_t* flags, CL_NS(analysis)::Analyzer* analyzer);
-
-
-
- protected:
- CL_NS(search)::Query* GetFieldQuery(const TCHAR* field, TCHAR* queryText);
- CL_NS(search)::Query* GetFieldQuery(const TCHAR* field, TCHAR* queryText, int32_t slop);
- CL_NS(search)::Query* GetFuzzyQuery(const TCHAR* field, TCHAR* termStr);
- CL_NS(search)::Query* GetRangeQuery(const TCHAR* field, TCHAR* part1, TCHAR* part2, bool inclusive);
- CL_NS(search)::Query* GetPrefixQuery(const TCHAR* field, TCHAR* termStr);
- CL_NS(search)::Query* GetWildcardQuery(const TCHAR* field, TCHAR* termStr);
-
- /**
- * A special virtual function for the MultiFieldQueryParser which can be used
- * to clean up queries. Once the field name is known and the query has been
- * created, its passed to this function.
- * An example of this usage is to set boosts.
- */
- virtual CL_NS(search)::Query* QueryAddedCallback(const TCHAR* field, CL_NS(search)::Query* query){ return query; }
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.cpp b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.cpp
deleted file mode 100644
index b234b99b3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.cpp
+++ /dev/null
@@ -1,509 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "QueryParser.h"
-
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/search/SearchHeader.h"
-#include "CLucene/index/Term.h"
-
-#include "TokenList.h"
-#include "QueryToken.h"
-#include "QueryParserBase.h"
-#include "Lexer.h"
-
-CL_NS_USE(util)
-CL_NS_USE(index)
-CL_NS_USE(analysis)
-CL_NS_USE(search)
-
-CL_NS_DEF(queryParser)
-
- QueryParser::QueryParser(const TCHAR* _field, Analyzer* _analyzer) : QueryParserBase(_analyzer){
- //Func - Constructor.
- // Instantiates a QueryParser for the named field _field
- //Pre - _field != NULL
- //Post - An instance has been created
-
- if ( _field )
- field = STRDUP_TtoT(_field);
- else
- field = NULL;
- tokens = NULL;
- lowercaseExpandedTerms = true;
- }
-
- QueryParser::~QueryParser() {
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- _CLDELETE_CARRAY(field);
- }
-
- //static
- Query* QueryParser::parse(const TCHAR* query, const TCHAR* field, Analyzer* analyzer){
- //Func - Returns a new instance of the Query class with a specified query, field and
- // analyzer values.
- //Pre - query != NULL and holds the query to parse
- // field != NULL and holds the default field for query terms
- // analyzer holds a valid reference to an Analyzer and is used to
- // find terms in the query text
- //Post - query has been parsed and an instance of Query has been returned
-
- CND_PRECONDITION(query != NULL, "query is NULL");
- CND_PRECONDITION(field != NULL, "field is NULL");
-
- QueryParser parser(field, analyzer);
- return parser.parse(query);
- }
-
- Query* QueryParser::parse(const TCHAR* query){
- //Func - Returns a parsed Query instance
- //Pre - query != NULL and contains the query value to be parsed
- //Post - Returns a parsed Query Instance
-
- CND_PRECONDITION(query != NULL, "query is NULL");
-
- //Instantie a Stringer that can read the query string
- Reader* r = _CLNEW StringReader(query);
-
- //Check to see if r has been created properly
- CND_CONDITION(r != NULL, "Could not allocate memory for StringReader r");
-
- //Pointer for the return value
- Query* ret = NULL;
-
- try{
- //Parse the query managed by the StringReader R and return a parsed Query instance
- //into ret
- ret = parse(r);
- }_CLFINALLY (
- _CLDELETE(r);
- );
-
- return ret;
- }
-
- Query* QueryParser::parse(Reader* reader){
- //Func - Returns a parsed Query instance
- //Pre - reader contains a valid reference to a Reader and manages the query string
- //Post - A parsed Query instance has been returned or
-
- //instantiate the TokenList tokens
- TokenList _tokens;
- this->tokens = &_tokens;
-
- //Instantiate a lexer
- Lexer lexer(this, reader);
-
- //tokens = lexer.Lex();
- //Lex the tokens
- lexer.Lex(tokens);
-
- //Peek to the first token and check if is an EOF
- if (tokens->peek()->Type == QueryToken::EOF_){
- // The query string failed to yield any tokens. We discard the
- // TokenList tokens and raise an exceptioin.
- QueryToken* token = this->tokens->extract();
- _CLDELETE(token);
- _CLTHROWA(CL_ERR_Parse, "No query given.");
- }
-
- //Return the parsed Query instance
- Query* ret = MatchQuery(field);
- this->tokens = NULL;
- return ret;
- }
-
- int32_t QueryParser::MatchConjunction(){
- //Func - matches for CONJUNCTION
- // CONJUNCTION ::= <AND> | <OR>
- //Pre - tokens != NULL
- //Post - if the first token is an AND or an OR then
- // the token is extracted and deleted and CONJ_AND or CONJ_OR is returned
- // otherwise CONJ_NONE is returned
-
- CND_PRECONDITION(tokens != NULL, "tokens is NULL");
-
- switch(tokens->peek()->Type){
- case QueryToken::AND_ :
- //Delete the first token of tokenlist
- ExtractAndDeleteToken();
- return CONJ_AND;
- case QueryToken::OR :
- //Delete the first token of tokenlist
- ExtractAndDeleteToken();
- return CONJ_OR;
- default :
- return CONJ_NONE;
- }
- }
-
- int32_t QueryParser::MatchModifier(){
- //Func - matches for MODIFIER
- // MODIFIER ::= <PLUS> | <MINUS> | <NOT>
- //Pre - tokens != NULL
- //Post - if the first token is a PLUS the token is extracted and deleted and MOD_REQ is returned
- // if the first token is a MINUS or NOT the token is extracted and deleted and MOD_NOT is returned
- // otherwise MOD_NONE is returned
- CND_PRECONDITION(tokens != NULL, "tokens is NULL");
-
- switch(tokens->peek()->Type){
- case QueryToken::PLUS :
- //Delete the first token of tokenlist
- ExtractAndDeleteToken();
- return MOD_REQ;
- case QueryToken::MINUS :
- case QueryToken::NOT :
- //Delete the first token of tokenlist
- ExtractAndDeleteToken();
- return MOD_NOT;
- default :
- return MOD_NONE;
- }
- }
-
- Query* QueryParser::MatchQuery(const TCHAR* field){
- //Func - matches for QUERY
- // QUERY ::= [MODIFIER] QueryParser::CLAUSE (<CONJUNCTION> [MODIFIER] CLAUSE)*
- //Pre - field != NULL
- //Post -
-
- CND_PRECONDITION(tokens != NULL, "tokens is NULL");
-
- CL_NS_STD(vector)<BooleanClause*> clauses;
-
- Query* q = NULL;
-
- int32_t mods = MOD_NONE;
- int32_t conj = CONJ_NONE;
-
- //match for MODIFIER
- mods = MatchModifier();
-
- //match for CLAUSE
- q = MatchClause(field);
- AddClause(clauses, CONJ_NONE, mods, q);
-
- // match for CLAUSE*
- while(true){
- QueryToken* p = tokens->peek();
- if(p->Type == QueryToken::EOF_){
- QueryToken* qt = MatchQueryToken(QueryToken::EOF_);
- _CLDELETE(qt);
- break;
- }
-
- if(p->Type == QueryToken::RPAREN){
- //MatchQueryToken(QueryToken::RPAREN);
- break;
- }
-
- //match for a conjuction (AND OR NOT)
- conj = MatchConjunction();
- //match for a modifier
- mods = MatchModifier();
-
- q = MatchClause(field);
- if ( q != NULL )
- AddClause(clauses, conj, mods, q);
- }
-
- // finalize query
- if(clauses.size() == 1){ //bvk: removed this && firstQuery != NULL
- BooleanClause* c = clauses[0];
- Query* q = c->query;
-
- //Condition check to be sure clauses[0] is valid
- CND_CONDITION(c != NULL, "c is NULL");
-
- //Tell the boolean clause not to delete its query
- c->deleteQuery=false;
- //Clear the clauses list
- clauses.clear();
- _CLDELETE(c);
-
- return q;
- }else{
- return GetBooleanQuery(clauses);
- }
- }
-
- Query* QueryParser::MatchClause(const TCHAR* field){
- //Func - matches for CLAUSE
- // CLAUSE ::= [TERM <COLONQueryParser::>] ( TERM | (<LPAREN> QUERY <RPAREN>))
- //Pre - field != NULL
- //Post -
-
- Query* q = NULL;
- const TCHAR* sfield = field;
- bool delField = false;
-
- QueryToken *DelToken = NULL;
-
- //match for [TERM <COLON>]
- QueryToken* term = tokens->extract();
- if(term->Type == QueryToken::TERM && tokens->peek()->Type == QueryToken::COLON){
- DelToken = MatchQueryToken(QueryToken::COLON);
-
- CND_CONDITION(DelToken != NULL,"DelToken is NULL");
- _CLDELETE(DelToken);
-
- TCHAR* tmp = STRDUP_TtoT(term->Value);
- discardEscapeChar(tmp);
- delField = true;
- sfield = tmp;
- _CLDELETE(term);
- }else{
- tokens->push(term);
- term = NULL;
- }
-
- // match for
- // TERM | (<LPAREN> QUERY <RPAREN>)
- if(tokens->peek()->Type == QueryToken::LPAREN){
- DelToken = MatchQueryToken(QueryToken::LPAREN);
-
- CND_CONDITION(DelToken != NULL,"DelToken is NULL");
- _CLDELETE(DelToken);
-
- q = MatchQuery(sfield);
- //DSR:2004.11.01:
- //If exception is thrown while trying to match trailing parenthesis,
- //need to prevent q from leaking.
-
- try{
- DelToken = MatchQueryToken(QueryToken::RPAREN);
-
- CND_CONDITION(DelToken != NULL,"DelToken is NULL");
- _CLDELETE(DelToken);
-
- }catch(...) {
- _CLDELETE(q);
- throw;
- }
- }else{
- q = MatchTerm(sfield);
- }
-
- if ( delField )
- _CLDELETE_CARRAY(sfield);
- return q;
- }
-
-
- Query* QueryParser::MatchTerm(const TCHAR* field){
- //Func - matches for TERM
- // TERM ::= TERM | PREFIXTERM | WILDTERM | NUMBER
- // [ <FUZZY> ] [ <CARAT> <NUMBER> [<FUZZY>]]
- // | (<RANGEIN> | <RANGEEX>) [<CARAT> <NUMBER>]
- // | <QUOTED> [SLOP] [<CARAT> <NUMBER>]
- //Pre - field != NULL
- //Post -
-
- QueryToken* term = NULL;
- QueryToken* slop = NULL;
- QueryToken* boost = NULL;
-
- bool prefix = false;
- bool wildcard = false;
- bool fuzzy = false;
- bool rangein = false;
- Query* q = NULL;
-
- term = tokens->extract();
- QueryToken* DelToken = NULL; //Token that is about to be deleted
-
- switch(term->Type){
- case QueryToken::TERM:
- case QueryToken::NUMBER:
- case QueryToken::PREFIXTERM:
- case QueryToken::WILDTERM:
- { //start case
- //Check if type of QueryToken term is a prefix term
- if(term->Type == QueryToken::PREFIXTERM){
- prefix = true;
- }
- //Check if type of QueryToken term is a wildcard term
- if(term->Type == QueryToken::WILDTERM){
- wildcard = true;
- }
- //Peek to see if the type of the next token is fuzzy term
- if(tokens->peek()->Type == QueryToken::FUZZY){
- DelToken = MatchQueryToken(QueryToken::FUZZY);
-
- CND_CONDITION(DelToken !=NULL, "DelToken is NULL");
- _CLDELETE(DelToken);
-
- fuzzy = true;
- }
- if(tokens->peek()->Type == QueryToken::CARAT){
- DelToken = MatchQueryToken(QueryToken::CARAT);
-
- CND_CONDITION(DelToken !=NULL, "DelToken is NULL");
- _CLDELETE(DelToken);
-
- boost = MatchQueryToken(QueryToken::NUMBER);
-
- if(tokens->peek()->Type == QueryToken::FUZZY){
- DelToken = MatchQueryToken(QueryToken::FUZZY);
-
- CND_CONDITION(DelToken !=NULL, "DelToken is NULL");
- _CLDELETE(DelToken);
-
- fuzzy = true;
- }
- } //end if type==CARAT
-
- discardEscapeChar(term->Value); //clean up
- if(wildcard){
- q = GetWildcardQuery(field,term->Value);
- break;
- }else if(prefix){
- //Create a PrefixQuery
- term->Value[_tcslen(term->Value)-1] = 0; //discard the *
- q = GetPrefixQuery(field,term->Value);
- break;
- }else if(fuzzy){
- //Create a FuzzyQuery
-
- //Check if the last char is a ~
- if(term->Value[_tcslen(term->Value)-1] == '~'){
- //remove the ~
- term->Value[_tcslen(term->Value)-1] = '\0';
- }
-
- q = GetFuzzyQuery(field,term->Value);
- break;
- }else{
- q = GetFieldQuery(field, term->Value);
- break;
- }
- }
-
-
- case QueryToken::RANGEIN:
- case QueryToken::RANGEEX:{
- if(term->Type == QueryToken::RANGEIN){
- rangein = true;
- }
-
- if(tokens->peek()->Type == QueryToken::CARAT){
- DelToken = MatchQueryToken(QueryToken::CARAT);
-
- CND_CONDITION(DelToken !=NULL, "DelToken is NULL");
- _CLDELETE(DelToken);
-
- boost = MatchQueryToken(QueryToken::NUMBER);
- }
-
- TCHAR* noBrackets = term->Value + 1;
- noBrackets[_tcslen(noBrackets)-1] = 0;
- q = ParseRangeQuery(field, noBrackets, rangein);
- break;
- }
-
-
- case QueryToken::QUOTED:{
- if(tokens->peek()->Type == QueryToken::SLOP){
- slop = MatchQueryToken(QueryToken::SLOP);
- }
-
- if(tokens->peek()->Type == QueryToken::CARAT){
- DelToken = MatchQueryToken(QueryToken::CARAT);
-
- CND_CONDITION(DelToken !=NULL, "DelToken is NULL");
- _CLDELETE(DelToken);
-
- boost = MatchQueryToken(QueryToken::NUMBER);
- }
-
- //remove the quotes
- TCHAR* quotedValue = term->Value+1;
- quotedValue[_tcslen(quotedValue)-1] = '\0';
-
- int32_t islop = phraseSlop;
- if(slop != NULL ){
- try {
- TCHAR* end; //todo: should parse using float...
- islop = (int32_t)_tcstoi64(slop->Value+1, &end, 10);
- }catch(...){
- //ignored
- }
- }
-
- q = GetFieldQuery(field, quotedValue, islop);
- _CLDELETE(slop);
- }
- } // end of switch
-
- _CLDELETE(term);
-
-
- if( q!=NULL && boost != NULL ){
- qreal f = 1.0F;
- try {
- TCHAR* tmp;
- f = _tcstod(boost->Value, &tmp);
- }catch(...){
- //ignored
- }
- _CLDELETE(boost);
-
- q->setBoost( f);
- }
-
- return q;
- }
-
- QueryToken* QueryParser::MatchQueryToken(QueryToken::Types expectedType){
- //Func - matches for QueryToken of the specified type and returns it
- // otherwise Exception throws
- //Pre - tokens != NULL
- //Post -
-
- CND_PRECONDITION(tokens != NULL,"tokens is NULL");
-
- if(tokens->count() == 0){
- throwParserException(_T("Error: Unexpected end of program"),' ',0,0);
- }
-
- //Extract a token form the TokenList tokens
- QueryToken* t = tokens->extract();
- //Check if the type of the token t matches the expectedType
- if (expectedType != t->Type){
- TCHAR buf[200];
- _sntprintf(buf,200,_T("Error: Unexpected QueryToken: %d, expected: %d"),t->Type,expectedType);
- _CLDELETE(t);
- throwParserException(buf,' ',0,0);
- }
-
- //Return the matched token
- return t;
- }
-
- void QueryParser::ExtractAndDeleteToken(void){
- //Func - Extracts the first token from the Tokenlist tokenlist
- // and destroys it
- //Pre - true
- //Post - The first token has been extracted and destroyed
-
- CND_PRECONDITION(tokens != NULL, "tokens is NULL");
-
- //Extract the token from the TokenList tokens
- QueryToken* t = tokens->extract();
- //Condition Check Token may not be NULL
- CND_CONDITION(t != NULL, "Token is NULL");
- //Delete Token
- _CLDELETE(t);
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.h b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.h
deleted file mode 100644
index a2fc85c89..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParser.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_queryParser_QueryParser_
-#define _lucene_queryParser_QueryParser_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/analysis/AnalysisHeader.h"
-#include "CLucene/util/Reader.h"
-#include "CLucene/search/SearchHeader.h"
-#include "CLucene/index/Term.h"
-
-#include "TokenList.h"
-#include "QueryToken.h"
-#include "QueryParserBase.h"
-#include "Lexer.h"
-
-CL_NS_DEF(queryParser)
-
-/**
-* @brief CLucene's default query parser.
-*
-* <p>It's a query parser.
-* The only method that clients should need to call is Parse().
-* The syntax for query const TCHAR*s is as follows:
-* A Query is a series of clauses. A clause may be prefixed by:</p>
-* <ul>
-* <li>a plus (+) or a minus (-) sign, indicating that the
-* clause is required or prohibited respectively; or</li>
-* <li>a term followed by a colon, indicating the field to be searched.
-* This enables one to construct queries which search multiple fields.</li>
-* </ul>
-* <p>
-* A clause may be either:</p>
-* <ul>
-* <li>a term, indicating all the documents that contain this term; or</li>
-* <li>a nested query, enclosed in parentheses. Note that this may be
-* used with a +/- prefix to require any of a set of terms.</li>
-* </ul>
-* <p>
-* Thus, in BNF, the query grammar is:</p>
-* <code>
-* Query ::= ( Clause )*
-* Clause ::= ["+", "-"] [&lt;TERM&gt; ":"] ( &lt;TERM&gt; | "(" Query ")" )
-* </code>
-* <p>
-* Examples of appropriately formatted queries can be found in the test cases.
-* </p>
-*/
-class QueryParser : public QueryParserBase
-{
-private:
- const TCHAR* field;
- TokenList* tokens;
-public:
- /**
- * Initializes a new instance of the QueryParser class with a specified field and
- * analyzer values.
- */
- QueryParser(const TCHAR* field, CL_NS(analysis)::Analyzer* analyzer);
- ~QueryParser();
-
- /**
- * Returns a parsed Query instance.
- * Note: this call is not threadsafe, either use a seperate QueryParser for each thread, or use a thread lock
- * <param name="query">The query value to be parsed.</param>
- * <returns>A parsed Query instance.</returns>
- */
- virtual CL_NS(search)::Query* parse(const TCHAR* query);
-
- /**
- * Returns a parsed Query instance.
- * Note: this call is not threadsafe, either use a seperate QueryParser for each thread, or use a thread lock
- * <param name="reader">The TextReader value to be parsed.</param>
- * <returns>A parsed Query instance.</returns>
- */
- virtual CL_NS(search)::Query* parse(CL_NS(util)::Reader* reader);
-
- /**
- * Returns a new instance of the Query class with a specified query, field and
- * analyzer values.
- */
- static CL_NS(search)::Query* parse(const TCHAR* query, const TCHAR* field, CL_NS(analysis)::Analyzer* analyzer);
-
- CL_NS(analysis)::Analyzer* getAnalyzer() { return analyzer; }
-
- /**
- * @return Returns the field.
- */
- const TCHAR* getField() { return field; }
-
- //deprecated functions
- _CL_DEPRECATED( setLowercaseExpandedTerms ) void setLowercaseWildcardTerms(bool lowercaseWildcardTerms){ setLowercaseExpandedTerms(lowercaseWildcardTerms); }
- _CL_DEPRECATED( getLowercaseExpandedTerms ) bool getLowercaseWildcardTerms() const { return getLowercaseExpandedTerms(); }
-protected:
- //these functions may be defined under certain compilation conditions.
- //note that this functionality is deprecated, you should create your own queryparser
- //if you want to remove this functionality...it will be removed... be warned!
-#ifdef NO_PREFIX_QUERY
- virtual CL_NS(search)::Query* GetPrefixQuery(const TCHAR* field,const TCHAR* termStr){ return NULL; }
-#endif
-#ifdef NO_FUZZY_QUERY
- virtual CL_NS(search)::Query* GetFuzzyQuery(const TCHAR* field,const TCHAR* termStr){ return NULL; }
-#endif
-#ifdef NO_RANGE_QUERY
- virtual CL_NS(search)::Query* GetRangeQuery(const TCHAR* field, const TCHAR* part1, const TCHAR* part2, bool inclusive) { return NULL; }
-#endif
-#ifdef NO_WILDCARD_QUERY
- virtual CL_NS(search)::Query* GetWildcardQuery(const TCHAR* field, TCHAR* termStr) { return NULL; }
-#endif
-private:
- /**
- * matches for CONJUNCTION
- * CONJUNCTION ::= <AND> | <OR>
- */
- int32_t MatchConjunction();
-
- /**
- * matches for MODIFIER
- * MODIFIER ::= <PLUS> | <MINUS> | <NOT>
- */
- int32_t MatchModifier();
-
- /**
- * matches for QUERY
- * QUERY ::= [MODIFIER] CLAUSE (<CONJUNCTION> [MODIFIER] CLAUSE)*
- */
- CL_NS(search)::Query* MatchQuery(const TCHAR* field);
-
- /**
- * matches for CLAUSE
- * CLAUSE ::= [TERM <COLON>] ( TERM | (<LPAREN> QUERY <RPAREN>))
- */
- CL_NS(search)::Query* MatchClause(const TCHAR* field);
-
- /**
- * matches for TERM
- * TERM ::= TERM | PREFIXTERM | WILDTERM | NUMBER
- * [ <FUZZY> ] [ <CARAT> <NUMBER> [<FUZZY>]]
- *
- * | (<RANGEIN> | <RANGEEX>) [<CARAT> <NUMBER>]
- * | <QUOTED> [SLOP] [<CARAT> <NUMBER>]
- */
- CL_NS(search)::Query* MatchTerm(const TCHAR* field);
-
- /**
- * matches for QueryToken of the specified type and returns it
- * otherwise Exception throws
- */
- QueryToken* MatchQueryToken(QueryToken::Types expectedType);
-
- /**
- * Extracts the first token from the Tokenlist tokenlist
- * and destroys it
- */
- void ExtractAndDeleteToken(void);
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.cpp b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.cpp
deleted file mode 100644
index c25d9323d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "QueryParserBase.h"
-
-#include "CLucene/search/TermQuery.h"
-#include "CLucene/search/PhraseQuery.h"
-#include "CLucene/search/RangeQuery.h"
-#include "CLucene/search/FuzzyQuery.h"
-#include "CLucene/search/WildcardQuery.h"
-#include "CLucene/search/PrefixQuery.h"
-
-
-CL_NS_USE(search)
-CL_NS_USE(util)
-CL_NS_USE(analysis)
-CL_NS_USE(index)
-
-CL_NS_DEF(queryParser)
-
-QueryParserBase::QueryParserBase(Analyzer* analyzer){
-//Func - Constructor
-//Pre - true
-//Post - instance has been created with PhraseSlop = 0
- this->analyzer = analyzer;
- this->defaultOperator = OR_OPERATOR;
- this->phraseSlop = 0;
- this->lowercaseExpandedTerms = true;
-}
-
-QueryParserBase::~QueryParserBase(){
-//Func - Destructor
-//Pre - true
-//Post - The instance has been destroyed
-}
-
-
-void QueryParserBase::discardEscapeChar(TCHAR* source) const{
- int len = _tcslen(source);
- int j = 0;
- for (int i = 0; i < len; i++) {
- if (source[i] == '\\' && source[i+1] != '\0' ) {
- _tcscpy(source+i,source+i+1);
- len--;
- }
- }
-}
-
-void QueryParserBase::AddClause(CL_NS_STD(vector)<BooleanClause*>& clauses, int32_t conj, int32_t mods, Query* q){
-//Func - Adds the next parsed clause.
-//Pre -
-//Post -
-
- bool required, prohibited;
-
- // If this term is introduced by AND, make the preceding term required,
- // unless it's already prohibited.
- const uint32_t nPreviousClauses = clauses.size();
- if (nPreviousClauses > 0 && conj == CONJ_AND) {
- BooleanClause* c = clauses[nPreviousClauses-1];
- if (!c->prohibited)
- c->required = true;
- }
-
- if (nPreviousClauses > 0 && defaultOperator == AND_OPERATOR && conj == CONJ_OR) {
- // If this term is introduced by OR, make the preceding term optional,
- // unless it's prohibited (that means we leave -a OR b but +a OR b-->a OR b)
- // notice if the input is a OR b, first term is parsed as required; without
- // this modification a OR b would parse as +a OR b
- BooleanClause* c = clauses[nPreviousClauses-1];
- if (!c->prohibited){
- c->required = false;
- c->prohibited = false;
- }
- }
-
- // We might have been passed a NULL query; the term might have been
- // filtered away by the analyzer.
- if (q == NULL)
- return;
-
- if (defaultOperator == OR_OPERATOR) {
- // We set REQUIRED if we're introduced by AND or +; PROHIBITED if
- // introduced by NOT or -; make sure not to set both.
- prohibited = (mods == MOD_NOT);
- required = (mods == MOD_REQ);
- if (conj == CONJ_AND && !prohibited) {
- required = true;
- }
- } else {
- // We set PROHIBITED if we're introduced by NOT or -; We set REQUIRED
- // if not PROHIBITED and not introduced by OR
- prohibited = (mods == MOD_NOT);
- required = (!prohibited && conj != CONJ_OR);
- }
-
- if ( required && prohibited )
- throwParserException( _T("Clause cannot be both required and prohibited"), ' ',0,0);
- clauses.push_back(_CLNEW BooleanClause(q,true, required, prohibited));
-}
-
-void QueryParserBase::throwParserException(const TCHAR* message, TCHAR ch, int32_t col, int32_t line )
-{
- TCHAR msg[1024];
- _sntprintf(msg,1024,message,ch,col,line);
- _CLTHROWT (CL_ERR_Parse, msg );
-}
-
-
-Query* QueryParserBase::GetFieldQuery(const TCHAR* field, TCHAR* queryText, int32_t slop){
- Query* ret = GetFieldQuery(field,queryText);
- if ( ret && ret->getQueryName() == PhraseQuery::getClassName() )
- ((PhraseQuery*)ret)->setSlop(slop);
-
- return ret;
-}
-
-Query* QueryParserBase::GetFieldQuery(const TCHAR* field, TCHAR* queryText){
-//Func - Returns a query for the specified field.
-// Use the analyzer to get all the tokens, and then build a TermQuery,
-// PhraseQuery, or nothing based on the term count
-//Pre - field != NULL
-// analyzer contains a valid reference to an Analyzer
-// queryText != NULL and contains the query
-//Post - A query instance has been returned for the specified field
-
- CND_PRECONDITION(field != NULL, "field is NULL");
- CND_PRECONDITION(queryText != NULL, "queryText is NULL");
-
- //Instantiate a stringReader for queryText
- StringReader reader(queryText);
- TokenStream* source = analyzer->tokenStream(field, &reader);
- CND_CONDITION(source != NULL,"source is NULL");
-
- StringArrayConstWithDeletor v;
-
- Token t;
- int positionCount = 0;
- bool severalTokensAtSamePosition = false;
-
- //Get the tokens from the source
- try{
- while (source->next(&t)){
- v.push_back(STRDUP_TtoT(t.termText()));
-
- if (t.getPositionIncrement() != 0)
- positionCount += t.getPositionIncrement();
- else
- severalTokensAtSamePosition = true;
- }
- }catch(CLuceneError& err){
- if ( err.number() != CL_ERR_IO )
- throw err;
- }
- _CLDELETE(source);
-
- //Check if there are any tokens retrieved
- if (v.size() == 0){
- return NULL;
- }else{
- if (v.size() == 1){
- Term* t = _CLNEW Term(field, v[0]);
- Query* ret = _CLNEW TermQuery( t );
- _CLDECDELETE(t);
- return ret;
- }else{
- if (severalTokensAtSamePosition) {
- if (positionCount == 1) {
- // no phrase query:
- BooleanQuery* q = _CLNEW BooleanQuery; //todo: disableCoord=true here, but not implemented in BooleanQuery
- StringArrayConst::iterator itr = v.begin();
- while ( itr != v.end() ){
- Term* t = _CLNEW Term(field, *itr);
- q->add(_CLNEW TermQuery(t),true, false,false);//should occur...
- _CLDECDELETE(t);
- ++itr;
- }
- return q;
- }else {
- _CLTHROWA(CL_ERR_UnsupportedOperation, "MultiPhraseQuery NOT Implemented");
- }
- }else{
- PhraseQuery* q = _CLNEW PhraseQuery;
- q->setSlop(phraseSlop);
-
- StringArrayConst::iterator itr = v.begin();
- while ( itr != v.end() ){
- const TCHAR* data = *itr;
- Term* t = _CLNEW Term(field, data);
- q->add(t);
- _CLDECDELETE(t);
- ++itr;
- }
- return q;
- }
- }
- }
-}
-
-void QueryParserBase::setLowercaseExpandedTerms(bool lowercaseExpandedTerms){
- this->lowercaseExpandedTerms = lowercaseExpandedTerms;
-}
-bool QueryParserBase::getLowercaseExpandedTerms() const {
- return lowercaseExpandedTerms;
-}
-void QueryParserBase::setDefaultOperator(int oper){
- this->defaultOperator=oper;
-}
-int QueryParserBase::getDefaultOperator() const{
- return defaultOperator;
-}
-
-
-Query* QueryParserBase::ParseRangeQuery(const TCHAR* field, TCHAR* queryText, bool inclusive)
-{
- //todo: this must be fixed, [-1--5] (-1 to -5) should yield a result, but won't parse properly
- //because it uses an analyser, should split it up differently...
-
- // Use the analyzer to get all the tokens. There should be 1 or 2.
- StringReader reader(queryText);
- TokenStream* source = analyzer->tokenStream(field, &reader);
-
- TCHAR* terms[2];
- terms[0]=NULL;terms[1]=NULL;
- Token t;
- bool tret=true;
- bool from=true;
- while(tret)
- {
- try{
- tret = source->next(&t);
- }catch (CLuceneError& err){
- if ( err.number() == CL_ERR_IO )
- tret=false;
- else
- throw err;
- }
- if (tret)
- {
- if ( !from && _tcscmp(t.termText(),_T("TO"))==0 )
- continue;
-
-
- TCHAR* tmp = STRDUP_TtoT(t.termText());
- discardEscapeChar(tmp);
- terms[from? 0 : 1] = tmp;
-
- if (from)
- from = false;
- else
- break;
- }
- }
- Query* ret = GetRangeQuery(field, terms[0], terms[1],inclusive);
- _CLDELETE_CARRAY(terms[0]);
- _CLDELETE_CARRAY(terms[1]);
- _CLDELETE(source);
-
- return ret;
-}
-
-Query* QueryParserBase::GetPrefixQuery(const TCHAR* field, TCHAR* termStr){
-//Pre - field != NULL and field contains the name of the field that the query will use
-// termStr != NULL and is the token to use for building term for the query
-// (WITH or WITHOUT a trailing '*' character!)
-//Post - A PrefixQuery instance has been returned
-
- CND_PRECONDITION(field != NULL,"field is NULL");
- CND_PRECONDITION(termStr != NULL,"termStr is NULL");
-
- if ( lowercaseExpandedTerms )
- _tcslwr(termStr);
-
- Term* t = _CLNEW Term(field, termStr);
- CND_CONDITION(t != NULL,"Could not allocate memory for term t");
-
- Query *q = _CLNEW PrefixQuery(t);
- CND_CONDITION(q != NULL,"Could not allocate memory for PrefixQuery q");
-
- _CLDECDELETE(t);
- return q;
-}
-
-Query* QueryParserBase::GetFuzzyQuery(const TCHAR* field, TCHAR* termStr){
-//Func - Factory method for generating a query (similar to getPrefixQuery}). Called when parser parses
-// an input term token that has the fuzzy suffix (~) appended.
-//Pre - field != NULL and field contains the name of the field that the query will use
-// termStr != NULL and is the token to use for building term for the query
-// (WITH or WITHOUT a trailing '*' character!)
-//Post - A FuzzyQuery instance has been returned
-
- CND_PRECONDITION(field != NULL,"field is NULL");
- CND_PRECONDITION(termStr != NULL,"termStr is NULL");
-
- if ( lowercaseExpandedTerms )
- _tcslwr(termStr);
-
- Term* t = _CLNEW Term(field, termStr);
- CND_CONDITION(t != NULL,"Could not allocate memory for term t");
-
- Query *q = _CLNEW FuzzyQuery(t);
- CND_CONDITION(q != NULL,"Could not allocate memory for FuzzyQuery q");
-
- _CLDECDELETE(t);
- return q;
-}
-
-
-Query* QueryParserBase::GetWildcardQuery(const TCHAR* field, TCHAR* termStr){
- CND_PRECONDITION(field != NULL,"field is NULL");
- CND_PRECONDITION(termStr != NULL,"termStr is NULL");
-
- if ( lowercaseExpandedTerms )
- _tcslwr(termStr);
-
- Term* t = _CLNEW Term(field, termStr);
- CND_CONDITION(t != NULL,"Could not allocate memory for term t");
- Query* q = _CLNEW WildcardQuery(t);
- _CLDECDELETE(t);
-
- return q;
-}
-
-Query* QueryParserBase::GetBooleanQuery(CL_NS_STD(vector)<CL_NS(search)::BooleanClause*>& clauses){
- if ( clauses.size() == 0 )
- return NULL;
-
- BooleanQuery* query = _CLNEW BooleanQuery();
- //Condition check to see if query has been allocated properly
- CND_CONDITION(query != NULL, "No memory could be allocated for query");
-
- //iterate through all the clauses
- for( uint32_t i=0;i<clauses.size();i++ ){
- //Condition check to see if clauses[i] is valdid
- CND_CONDITION(clauses[i] != NULL, "clauses[i] is NULL");
- //Add it to query
- query->add(clauses[i]);
- }
- return query;
-}
-
-
-CL_NS(search)::Query* QueryParserBase::GetRangeQuery(const TCHAR* field, TCHAR* part1, TCHAR* part2, bool inclusive){
- //todo: does jlucene handle rangequeries differntly? if we are using
- //a certain type of analyser, the terms may be filtered out, which
- //is not necessarily what we want.
- if (lowercaseExpandedTerms) {
- _tcslwr(part1);
- _tcslwr(part2);
- }
- //todo: should see if we can parse the strings as dates... currently we leave that up to the end-developer...
- Term* t1 = _CLNEW Term(field,part1);
- Term* t2 = _CLNEW Term(field,part2);
- Query* ret = _CLNEW RangeQuery(t1, t2, inclusive);
- _CLDECDELETE(t1);
- _CLDECDELETE(t2);
-
- return ret;
-}
-
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.h b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.h
deleted file mode 100644
index 261e587b0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryParserBase.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_queryParser_QueryParserBase_
-#define _lucene_queryParser_QueryParserBase_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/VoidList.h"
-#include "CLucene/search/BooleanClause.h"
-#include "CLucene/analysis/Analyzers.h"
-#include "QueryToken.h"
-
-CL_NS_DEF(queryParser)
-
- /**
- * Contains default implementations used by QueryParser.
- * You can override any of these to provide a customised QueryParser.
- */
- class QueryParserBase:LUCENE_BASE
- {
- protected:
- /* The actual operator the parser uses to combine query terms */
- int defaultOperator;
- int32_t phraseSlop;
-
- bool lowercaseExpandedTerms;
-
- LUCENE_STATIC_CONSTANT(int, CONJ_NONE=0);
- LUCENE_STATIC_CONSTANT(int, CONJ_AND=1);
- LUCENE_STATIC_CONSTANT(int, CONJ_OR=2);
-
- LUCENE_STATIC_CONSTANT(int, MOD_NONE=0);
- LUCENE_STATIC_CONSTANT(int, MOD_NOT=10);
- LUCENE_STATIC_CONSTANT(int, MOD_REQ=11);
-
- CL_NS(analysis)::Analyzer* analyzer;
-
- public:
- QueryParserBase(CL_NS(analysis)::Analyzer* analyzer);
- ~QueryParserBase();
-
- /**
- * Whether terms of wildcard, prefix, fuzzy and range queries are to be automatically
- * lower-cased or not. Default is <code>true</code>.
- */
- void setLowercaseExpandedTerms(bool lowercaseExpandedTerms);
-
- /**
- * @see #setLowercaseExpandedTerms(boolean)
- */
- bool getLowercaseExpandedTerms() const;
-
- //values used for setOperator
- LUCENE_STATIC_CONSTANT(int, OR_OPERATOR=0);
- LUCENE_STATIC_CONSTANT(int, AND_OPERATOR=1);
-
- /**
- * Sets the boolean operator of the QueryParser.
- * In default mode (<code>OR_OPERATOR</code>) terms without any modifiers
- * are considered optional: for example <code>capital of Hungary</code> is equal to
- * <code>capital OR of OR Hungary</code>.<br/>
- * In <code>AND_OPERATOR</code> mode terms are considered to be in conjuction: the
- * above mentioned query is parsed as <code>capital AND of AND Hungary</code>
- */
- void setDefaultOperator(int oper);
- /**
- * Gets implicit operator setting, which will be either AND_OPERATOR
- * or OR_OPERATOR.
- */
- int getDefaultOperator() const;
-
- //public so that the lexer can call this
- virtual void throwParserException(const TCHAR* message, TCHAR ch, int32_t col, int32_t line );
-
- /**
- * Sets the default slop for phrases. If zero, then exact phrase matches
- * are required. Default value is zero.
- */
- void setPhraseSlop(int phraseSlop) { this->phraseSlop = phraseSlop; }
-
- /**
- * Gets the default slop for phrases.
- */
- int getPhraseSlop() { return phraseSlop; }
-
- protected:
-
- /**
- * Removes the escaped characters
- */
- void discardEscapeChar(TCHAR* token) const;
-
- //Analyzes the expanded term termStr with the StandardFilter and the LowerCaseFilter.
- TCHAR* AnalyzeExpandedTerm(const TCHAR* field, TCHAR* termStr);
-
- // Adds the next parsed clause.
- virtual void AddClause(std::vector<CL_NS(search)::BooleanClause*>& clauses, int32_t conj, int32_t mods, CL_NS(search)::Query* q);
-
- /**
- * Returns a termquery, phrasequery for the specified field.
- * Note: this is only a partial implementation, since MultiPhraseQuery is not implemented yet
- * return NULL to disallow
- */
- virtual CL_NS(search)::Query* GetFieldQuery(const TCHAR* field, TCHAR* queryText);
-
- /**
- * Delegates to GetFieldQuery(string, string), and adds slop onto phrasequery.
- * Can be used to remove slop functionality
- */
- virtual CL_NS(search)::Query* GetFieldQuery(const TCHAR* field, TCHAR* queryText, int32_t slop);
-
- /**
- * Factory method for generating a query (similar to
- * {@link #GetWildcardQuery}). Called when parser parses an input term
- * token that uses prefix notation; that is, contains a single '*' wildcard
- * character as its last character. Since this is a special case
- * of generic wildcard term, and such a query can be optimized easily,
- * this usually results in a different query object.
- *<p>
- * Depending on settings, a prefix term may be lower-cased
- * automatically. It will not go through the default Analyzer,
- * however, since normal Analyzers are unlikely to work properly
- * with wildcard templates.
- *<p>
- * Can be overridden by extending classes, to provide custom handling for
- * wild card queries, which may be necessary due to missing analyzer calls.
- *
- * @param field Name of the field query will use.
- * @param termStr Term token to use for building term for the query
- * (<b>without</b> trailing '*' character!)
- *
- * @return Resulting {@link Query} built for the term
- * return NULL to disallow
- */
- virtual CL_NS(search)::Query* GetPrefixQuery(const TCHAR* field, TCHAR* termStr);
-
- /**
- * Factory method for generating a query. Called when parser
- * parses an input term token that contains one or more wildcard
- * characters (? and *), but is not a prefix term token (one
- * that has just a single * character at the end)
- *<p>
- * Depending on settings, prefix term may be lower-cased
- * automatically. It will not go through the default Analyzer,
- * however, since normal Analyzers are unlikely to work properly
- * with wildcard templates.
- *<p>
- * Can be overridden by extending classes, to provide custom handling for
- * wildcard queries, which may be necessary due to missing analyzer calls.
- *
- * @param field Name of the field query will use.
- * @param termStr Term token that contains one or more wild card
- * characters (? or *), but is not simple prefix term
- *
- * @return Resulting {@link Query} built for the term
- * return NULL to disallow
- */
- virtual CL_NS(search)::Query* GetWildcardQuery(const TCHAR* field, TCHAR* termStr);
-
- /**
- * Factory method for generating a query (similar to
- * {@link #GetWildcardQuery}). Called when parser parses
- * an input term token that has the fuzzy suffix (~) appended.
- *
- * @param field Name of the field query will use.
- * @param termStr Term token to use for building term for the query
- *
- * @return Resulting {@link Query} built for the term
- * return NULL to disallow
- */
- virtual CL_NS(search)::Query* GetFuzzyQuery(const TCHAR* field, TCHAR* termStr);
-
- /**
- * Factory method for generating query, given a set of clauses.
- * By default creates a boolean query composed of clauses passed in.
- *
- * Can be overridden by extending classes, to modify query being
- * returned.
- *
- * @param clauses Vector that contains {@link BooleanClause} instances
- * to join.
- *
- * @return Resulting {@link Query} object.
- * return NULL to disallow
- *
- * Memory: clauses must all be cleaned up by this function.
- */
- virtual CL_NS(search)::Query* GetBooleanQuery(std::vector<CL_NS(search)::BooleanClause*>& clauses);
-
- /**
- * return NULL to disallow
- */
- virtual CL_NS(search)::Query* GetRangeQuery(const TCHAR* field, TCHAR* part1, TCHAR* part2, bool inclusive);
- virtual CL_NS(search)::Query* ParseRangeQuery(const TCHAR* field, TCHAR* str, bool inclusive);
-
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.cpp b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.cpp
deleted file mode 100644
index ee88a3cb6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "QueryToken.h"
-
-CL_NS_DEF(queryParser)
-
-
-QueryToken::QueryToken():
- Value(NULL)
-{
- set(UNKNOWN_);
-}
-QueryToken::QueryToken(TCHAR* value, const int32_t start, const int32_t end, const QueryToken::Types type):
- Value(NULL)
-{
- set(value,start,end,type);
-}
-
-QueryToken::~QueryToken(){
-//Func - Destructor
-//Pre - true
-//Post - Instance has been destroyed
-
- #ifndef LUCENE_TOKEN_WORD_LENGTH
- _CLDELETE_CARRAY( Value );
- #endif
-}
-
-// Initializes a new instance of the Token class LUCENE_EXPORT.
-//
-QueryToken::QueryToken(TCHAR* value, const QueryToken::Types type):
- Value(NULL)
-{
- set(value,type);
-}
-
-// Initializes a new instance of the Token class LUCENE_EXPORT.
-//
-QueryToken::QueryToken(QueryToken::Types type):
- Value(NULL)
-{
- set(type);
-}
-
-
-void QueryToken::set(TCHAR* value, const Types type){
- set(value,0,-1,type);
-}
-void QueryToken::set(TCHAR* value, const int32_t start, const int32_t end, const Types type){
- #ifndef LUCENE_TOKEN_WORD_LENGTH
- _CLDELETE_CARRAY(Value);
- Value = STRDUP_TtoT(value);
- #else
- _tcsncpy(Value,value,LUCENE_TOKEN_WORD_LENGTH);
- Value[LUCENE_TOKEN_WORD_LENGTH];
- #endif
- this->Start = start;
- this->End = end;
- this->Type = type;
-
- if ( this->End < 0 )
- this->End = _tcslen(Value);
-}
-void QueryToken::set(Types type){
- set(LUCENE_BLANK_STRING,0,0,type);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.h b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.h
deleted file mode 100644
index 739a667ba..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/QueryToken.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_queryParser_QueryToken_
-#define _lucene_queryParser_QueryToken_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "QueryParserBase.h"
-
-CL_NS_DEF(queryParser)
-
- // Token class that used by QueryParser.
- class QueryToken:LUCENE_BASE
- {
- public:
- enum Types
- {
- AND_,
- OR,
- NOT,
- PLUS,
- MINUS,
- LPAREN,
- RPAREN,
- COLON,
- CARAT,
- QUOTED,
- TERM,
- SLOP,
- FUZZY,
- PREFIXTERM,
- WILDTERM,
- RANGEIN,
- RANGEEX,
- NUMBER,
- EOF_,
- UNKNOWN_
- };
-
-
- #ifdef LUCENE_TOKEN_WORD_LENGTH
- TCHAR Value[LUCENE_TOKEN_WORD_LENGTH+1];
- #else
- TCHAR* Value;
- #endif
-
- int32_t Start;
- int32_t End;
- QueryToken::Types Type;
-
- // Initializes a new instance of the Token class.
- QueryToken(TCHAR* value, const int32_t start, const int32_t end, const Types type);
-
- // Initializes a new instance of the Token class.
- QueryToken(TCHAR* value, const Types type);
-
- // Initializes a new instance of the Token class.
- QueryToken(Types type);
-
- // Initializes an empty instance of the Token class.
- QueryToken();
-
- ~QueryToken();
-
- void set(TCHAR* value, const int32_t start, const int32_t end, const Types type);
- void set(TCHAR* value, const Types type);
- void set(Types type);
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.cpp b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.cpp
deleted file mode 100644
index 7d30b931f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "TokenList.h"
-
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/VoidList.h"
-#include "QueryToken.h"
-
-CL_NS_DEF(queryParser)
-
- TokenList::TokenList(){
- //Func - Constructor
- //Pre - true
- //Post - Instance has been created
- }
-
- TokenList::~TokenList(){
- //Func - Destructor
- //Pre - true
- //Post - The tokenlist has been destroyed
-
- tokens.clear();
- }
-
- void TokenList::add(QueryToken* token){
- //Func - Adds a QueryToken token to the TokenList
- //Pre - token != NULL
- //Post - token has been added to the token list
-
- CND_PRECONDITION(token != NULL, "token != NULL");
-
- tokens.insert(tokens.begin(),token);
- }
-
- void TokenList::push(QueryToken* token){
- //Func -
- //Pre - token != NULL
- //Post -
-
- CND_PRECONDITION(token != NULL, "token is NULL");
-
- tokens.push_back(token);
- }
-
- QueryToken* TokenList::peek() {
- /* DSR:2004.11.01: Reverted my previous (circa April 2004) fix (which
- ** raised an exception if Peek was called when there were no tokens) in
- ** favor of returning the EOF token. This solution is much better
- ** integrated with the rest of the code in the queryParser subsystem. */
- size_t nTokens = tokens.size();
- if (nTokens == 0) {
- push(_CLNEW QueryToken(QueryToken::EOF_));
- nTokens++;
- }
- return tokens[nTokens-1];
- }
-
- QueryToken* TokenList::extract(){
- //Func - Extract token from the TokenList
- //Pre - true
- //Post - Retracted token has been returned
-
- QueryToken* token = peek();
- //Retract the current peeked token
- tokens.delete_back();
-
- return token;
- }
-
- int32_t TokenList::count() const
- {
- return tokens.size();
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.h b/src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.h
deleted file mode 100644
index 3166bba78..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/queryParser/TokenList.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_queryParser_TokenList_
-#define _lucene_queryParser_TokenList_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/VoidList.h"
-#include "QueryToken.h"
-CL_NS_DEF(queryParser)
-
- // Represents a list of the tokens.
- class TokenList:LUCENE_BASE
- {
- private:
- CL_NS(util)::CLVector<QueryToken*> tokens; //todo:,CL_NS(util)::Deletor::Object<QueryToken>
- public:
- TokenList();
- ~TokenList();
-
- void add(QueryToken* token);
-
- void push(QueryToken* token);
-
- QueryToken* peek();
-
- QueryToken* extract();
-
- int32_t count() const;
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanClause.h b/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanClause.h
deleted file mode 100644
index b89cb31d7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanClause.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_BooleanClause_
-#define _lucene_search_BooleanClause_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-#include "SearchHeader.h"
-
-CL_NS_DEF(search)
- // A clause in a BooleanQuery.
- class BooleanClause:LUCENE_BASE {
- public:
- class Compare:public CL_NS_STD(binary_function)<const BooleanClause*,const BooleanClause*,bool>
- {
- public:
- bool operator()( const BooleanClause* val1, const BooleanClause* val2 ) const{
- return val1->equals(val2);
- }
- };
-
- // The query whose matching documents are combined by the boolean query.
- Query* query;
-
- int32_t getClauseCount();
-
- // If true, documents documents which <i>do not</i>
- // match this sub-query will <i>not</i> match the boolean query.
- bool required;
-
- // If true, documents documents which <i>do</i>
- // match this sub-query will <i>not</i> match the boolean query.
- bool prohibited;
-
- bool deleteQuery;
-
- // Constructs a BooleanClause with query <code>q</code>, required
- // <code>r</code> and prohibited <code>p</code>.
- BooleanClause(Query* q, const bool DeleteQuery,const bool req, const bool p):
- query(q),
- required(req),
- prohibited(p),
- deleteQuery(DeleteQuery)
- {
- }
-
- BooleanClause(const BooleanClause& clone):
-#if defined(LUCENE_ENABLE_MEMLEAKTRACKING)
-#elif defined(LUCENE_ENABLE_REFCOUNT)
-#else
- LuceneVoidBase(),
-#endif
- query(clone.query->clone()),
- required(clone.required),
- prohibited(clone.prohibited),
- deleteQuery(true)
- {
- }
-
- BooleanClause* clone() const{
- BooleanClause* ret = _CLNEW BooleanClause(*this);
- return ret;
- }
-
- ~BooleanClause(){
- if ( deleteQuery )
- _CLDELETE( query );
- }
-
- /** Returns true iff <code>o</code> is equal to this. */
- bool equals(const BooleanClause* other) const {
- return this->query->equals(other->query)
- && (this->required == other->required)
- && (this->prohibited == other->prohibited);
- }
-
- size_t hashCode() const{
- return query->hashCode() ^ (this->required?1:0) ^ (this->prohibited?2:0);
- }
- };
-
-
-CL_NS_END
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.cpp
deleted file mode 100644
index 3fd36d847..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.cpp
+++ /dev/null
@@ -1,363 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "BooleanQuery.h"
-
-#include "BooleanClause.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/util/Arrays.h"
-#include "SearchHeader.h"
-#include "BooleanScorer.h"
-#include "Scorer.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
- BooleanQuery::BooleanQuery():
- clauses(true)
- {
- }
-
- BooleanQuery::BooleanQuery(const BooleanQuery& clone):
- Query(clone)
- {
- for ( uint32_t i=0;i<clone.clauses.size();i++ ){
- BooleanClause* clause = clone.clauses[i]->clone();
- clause->deleteQuery=true;
- add(clause);
- }
- }
-
- BooleanQuery::~BooleanQuery(){
- clauses.clear();
- }
-
- size_t BooleanQuery::hashCode() const {
- //todo: do cachedHashCode, and invalidate on add/remove clause
- size_t ret = 0;
- for (uint32_t i = 0 ; i < clauses.size(); i++) {
- BooleanClause* c = clauses[i];
- ret = 31 * ret + c->hashCode();
- }
- ret = ret ^ Similarity::floatToByte(getBoost());
- return ret;
- }
-
- const TCHAR* BooleanQuery::getQueryName() const{
- return getClassName();
- }
- const TCHAR* BooleanQuery::getClassName(){
- return _T("BooleanQuery");
- }
-
- /**
- * Default value is 1024. Use <code>org.apache.lucene.maxClauseCount</code>
- * system property to override.
- */
- size_t BooleanQuery::maxClauseCount = LUCENE_BOOLEANQUERY_MAXCLAUSECOUNT;
- size_t BooleanQuery::getMaxClauseCount(){
- return maxClauseCount;
- }
-
- void BooleanQuery::setMaxClauseCount(size_t maxClauseCount){
- BooleanQuery::maxClauseCount = maxClauseCount;
- }
-
- void BooleanQuery::add(Query* query, const bool deleteQuery, const bool required, const bool prohibited) {
- BooleanClause* bc = _CLNEW BooleanClause(query,deleteQuery,required, prohibited);
- try{
- add(bc);
- }catch(...){
- _CLDELETE(bc);
- throw;
- }
- }
-
- void BooleanQuery::add(BooleanClause* clause) {
- if (clauses.size() >= getMaxClauseCount())
- _CLTHROWA(CL_ERR_TooManyClauses,"Too Many Clauses");
-
- clauses.push_back(clause);
- }
-
-
- size_t BooleanQuery::getClauseCount() const {
- return (int32_t) clauses.size();
- }
-
- TCHAR* BooleanQuery::toString(const TCHAR* field) const{
- StringBuffer buffer;
- if (getBoost() != 1.0) {
- buffer.append(_T("("));
- }
-
- for (uint32_t i = 0 ; i < clauses.size(); i++) {
- BooleanClause* c = clauses[i];
- if (c->prohibited)
- buffer.append(_T("-"));
- else if (c->required)
- buffer.append(_T("+"));
-
- if ( c->query->instanceOf(BooleanQuery::getClassName()) ) { // wrap sub-bools in parens
- buffer.append(_T("("));
-
- TCHAR* buf = c->query->toString(field);
- buffer.append(buf);
- _CLDELETE_CARRAY( buf );
-
- buffer.append(_T(")"));
- } else {
- TCHAR* buf = c->query->toString(field);
- buffer.append(buf);
- _CLDELETE_CARRAY( buf );
- }
- if (i != clauses.size()-1)
- buffer.append(_T(" "));
-
- if (getBoost() != 1.0) {
- buffer.append(_T(")^"));
- buffer.appendFloat(getBoost(),1);
- }
- }
- return buffer.toString();
- }
-
-
-
-
- BooleanClause** BooleanQuery::getClauses() const
- {
- CND_MESSAGE(false, "Warning: BooleanQuery::getClauses() is deprecated")
- BooleanClause** ret = _CL_NEWARRAY(BooleanClause*, clauses.size()+1);
- getClauses(ret);
- return ret;
- }
-
- void BooleanQuery::getClauses(BooleanClause** ret) const
- {
- size_t size=clauses.size();
- for ( uint32_t i=0;i<size;i++ )
- ret[i] = clauses[i];
- }
- Query* BooleanQuery::rewrite(IndexReader* reader) {
- if (clauses.size() == 1) { // optimize 1-clause queries
- BooleanClause* c = clauses[0];
- if (!c->prohibited) { // just return clause
- Query* query = c->query->rewrite(reader); // rewrite first
-
- //if the query doesn't actually get re-written,
- //then return a clone (because the BooleanQuery
- //will register different to the returned query.
- if ( query == c->query )
- query = query->clone();
-
- if (getBoost() != 1.0f) { // incorporate boost
- query->setBoost(getBoost() * query->getBoost());
- }
-
- return query;
- }
- }
-
- BooleanQuery* clone = NULL; // recursively rewrite
- for (uint32_t i = 0 ; i < clauses.size(); i++) {
- BooleanClause* c = clauses[i];
- Query* query = c->query->rewrite(reader);
- if (query != c->query) { // clause rewrote: must clone
- if (clone == NULL)
- clone = (BooleanQuery*)this->clone();
- //todo: check if delete query should be on...
- //in fact we should try and get rid of these
- //for compatibility sake
- clone->clauses.set (i, _CLNEW BooleanClause(query, true, c->required, c->prohibited));
- }
- }
- if (clone != NULL) {
- return clone; // some clauses rewrote
- } else
- return this; // no clauses rewrote
- }
-
-
- Query* BooleanQuery::clone() const{
- BooleanQuery* clone = _CLNEW BooleanQuery(*this);
- return clone;
- }
-
- /** Returns true iff <code>o</code> is equal to this. */
- bool BooleanQuery::equals(Query* o)const {
- if (!(o->instanceOf(BooleanQuery::getClassName())))
- return false;
- const BooleanQuery* other = (BooleanQuery*)o;
-
- bool ret = (this->getBoost() == other->getBoost());
- if ( ret ){
- CLListEquals<BooleanClause,BooleanClause::Compare, const ClausesType, const ClausesType> comp;
- ret = comp.equals(&this->clauses,&other->clauses);
- }
- return ret;
- }
-
- qreal BooleanQuery::BooleanWeight::getValue() { return parentQuery->getBoost(); }
- Query* BooleanQuery::BooleanWeight::getQuery() { return (Query*)parentQuery; }
-
-
-
-
-
- BooleanQuery::BooleanWeight::BooleanWeight(Searcher* searcher,
- CLVector<BooleanClause*,Deletor::Object<BooleanClause> >* clauses, BooleanQuery* parentQuery)
- {
- this->searcher = searcher;
- this->parentQuery = parentQuery;
- this->clauses = clauses;
- for (uint32_t i = 0 ; i < clauses->size(); i++) {
- weights.push_back((*clauses)[i]->query->_createWeight(searcher));
- }
- }
- BooleanQuery::BooleanWeight::~BooleanWeight(){
- this->weights.clear();
- }
-
- qreal BooleanQuery::BooleanWeight::sumOfSquaredWeights() {
- qreal sum = 0.0f;
- for (uint32_t i = 0 ; i < weights.size(); i++) {
- BooleanClause* c = (*clauses)[i];
- Weight* w = weights[i];
- if (!c->prohibited)
- sum += w->sumOfSquaredWeights(); // sum sub weights
- }
- sum *= parentQuery->getBoost() * parentQuery->getBoost(); // boost each sub-weight
- return sum ;
- }
-
- void BooleanQuery::BooleanWeight::normalize(qreal norm) {
- norm *= parentQuery->getBoost(); // incorporate boost
- for (uint32_t i = 0 ; i < weights.size(); i++) {
- BooleanClause* c = (*clauses)[i];
- Weight* w = weights[i];
- if (!c->prohibited)
- w->normalize(norm);
- }
- }
-
- Scorer* BooleanQuery::BooleanWeight::scorer(IndexReader* reader){
- // First see if the (faster) ConjunctionScorer will work. This can be
- // used when all clauses are required. Also, at this point a
- // BooleanScorer cannot be embedded in a ConjunctionScorer, as the hits
- // from a BooleanScorer are not always sorted by document number (sigh)
- // and hence BooleanScorer cannot implement skipTo() correctly, which is
- // required by ConjunctionScorer.
- bool allRequired = true;
- bool noneBoolean = true;
- { //msvc6 scope fix
- for (uint32_t i = 0 ; i < weights.size(); i++) {
- BooleanClause* c = (*clauses)[i];
- if (!c->required)
- allRequired = false;
- if (c->query->instanceOf(BooleanQuery::getClassName()))
- noneBoolean = false;
- }
- }
-
- if (allRequired && noneBoolean) { // ConjunctionScorer is okay
- ConjunctionScorer* result =
- _CLNEW ConjunctionScorer(parentQuery->getSimilarity(searcher));
- for (uint32_t i = 0 ; i < weights.size(); i++) {
- Weight* w = weights[i];
- Scorer* subScorer = w->scorer(reader);
- if (subScorer == NULL)
- return NULL;
- result->add(subScorer);
- }
- return result;
- }
-
- // Use good-old BooleanScorer instead.
- BooleanScorer* result = _CLNEW BooleanScorer(parentQuery->getSimilarity(searcher));
-
- { //msvc6 scope fix
- for (uint32_t i = 0 ; i < weights.size(); i++) {
- BooleanClause* c = (*clauses)[i];
- Weight* w = weights[i];
- Scorer* subScorer = w->scorer(reader);
- if (subScorer != NULL)
- result->add(subScorer, c->required, c->prohibited);
- else if (c->required)
- return NULL;
- }
- }
-
- return result;
- }
-
- void BooleanQuery::BooleanWeight::explain(IndexReader* reader, int32_t doc, Explanation* result){
- int32_t coord = 0;
- int32_t maxCoord = 0;
- qreal sum = 0.0f;
- Explanation* sumExpl = _CLNEW Explanation;
- for (uint32_t i = 0 ; i < weights.size(); i++) {
- BooleanClause* c = (*clauses)[i];
- Weight* w = weights[i];
- Explanation* e = _CLNEW Explanation;
- w->explain(reader, doc, e);
- if (!c->prohibited)
- maxCoord++;
- if (e->getValue() > 0) {
- if (!c->prohibited) {
- sumExpl->addDetail(e);
- sum += e->getValue();
- coord++;
- e = NULL; //prevent e from being deleted
- } else {
- //we want to return something else...
- _CLDELETE(sumExpl);
- result->setValue(0.0f);
- result->setDescription(_T("match prohibited"));
- return;
- }
- } else if (c->required) {
- _CLDELETE(sumExpl);
- result->setValue(0.0f);
- result->setDescription(_T("match prohibited"));
- return;
- }
-
- _CLDELETE(e);
- }
- sumExpl->setValue(sum);
-
- if (coord == 1){ // only one clause matched
- Explanation* tmp = sumExpl;
- sumExpl = sumExpl->getDetail(0)->clone(); // eliminate wrapper
- _CLDELETE(tmp);
- }
-
- sumExpl->setDescription(_T("sum of:"));
- qreal coordFactor = parentQuery->getSimilarity(searcher)->coord(coord, maxCoord);
- if (coordFactor == 1.0f){ // coord is no-op
- result->set(*sumExpl); // eliminate wrapper
- _CLDELETE(sumExpl);
- } else {
- result->setDescription( _T("product of:"));
- result->addDetail(sumExpl);
-
- StringBuffer explbuf;
- explbuf.append(_T("coord("));
- explbuf.appendInt(coord);
- explbuf.append(_T("/"));
- explbuf.appendInt(maxCoord);
- explbuf.append(_T(")"));
- result->addDetail(_CLNEW Explanation(coordFactor, explbuf.getBuffer()));
- result->setValue(sum*coordFactor);
- }
- }
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.h
deleted file mode 100644
index 27b67d1e5..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanQuery.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_BooleanQuery_
-#define _lucene_search_BooleanQuery_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "ConjunctionScorer.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/StringBuffer.h"
-#include "SearchHeader.h"
-#include "BooleanClause.h"
-#include "BooleanScorer.h"
-#include "Scorer.h"
-
-CL_NS_DEF(search)
-
-
- // A Query that matches documents matching boolean combinations of other
- // queries, typically {@link TermQuery}s or {@link PhraseQuery}s.
- class BooleanQuery:public Query {
- public:
- typedef CL_NS(util)::CLVector<BooleanClause*,CL_NS(util)::Deletor::Object<BooleanClause> > ClausesType;
- private:
- BooleanQuery::ClausesType clauses;
- static size_t maxClauseCount;
-
- class BooleanWeight: public Weight {
- private:
- Searcher* searcher;
- CL_NS(util)::CLVector<Weight*,CL_NS(util)::Deletor::Object<Weight> > weights;
- ClausesType* clauses;
- BooleanQuery* parentQuery;
- public:
- BooleanWeight(Searcher* searcher,
- CL_NS(util)::CLVector<BooleanClause*,CL_NS(util)::Deletor::Object<BooleanClause> >* clauses,
- BooleanQuery* parentQuery);
- ~BooleanWeight();
- Query* getQuery();
- qreal getValue();
- qreal sumOfSquaredWeights();
- void normalize(qreal norm);
- Scorer* scorer(CL_NS(index)::IndexReader* reader);
- void explain(CL_NS(index)::IndexReader* reader, int32_t doc, Explanation* ret);
- };//booleanweight
-
- protected:
- Weight* _createWeight(Searcher* searcher) {
- return _CLNEW BooleanWeight(searcher,&clauses,this);
- }
- BooleanQuery(const BooleanQuery& clone);
- public:
- /** Constructs an empty boolean query. */
- BooleanQuery();
-
- ~BooleanQuery();
-
- const TCHAR* getQueryName() const;
- static const TCHAR* getClassName();
-
- /** Return the maximum number of clauses permitted, 1024 by default.
- * Attempts to add more than the permitted number of clauses cause {@link
- * TooManyClauses} to be thrown.*/
- static size_t getMaxClauseCount();
-
- /** Set the maximum number of clauses permitted. */
- static void setMaxClauseCount(size_t maxClauseCount);
-
- /** Adds a clause to a boolean query. Clauses may be:
- * <ul>
- * <li><code>required</code> which means that documents which <i>do not</i>
- * match this sub-query will <i>not</i> match the boolean query;
- * <li><code>prohibited</code> which means that documents which <i>do</i>
- * match this sub-query will <i>not</i> match the boolean query; or
- * <li>neither, in which case matched documents are neither prohibited from
- * nor required to match the sub-query. However, a document must match at
- * least 1 sub-query to match the boolean query.
- * </ul>
- * It is an error to specify a clause as both <code>required</code> and
- * <code>prohibited</code>.
- *
- * @see #getMaxClauseCount()
- */
- void add(Query* query, const bool required, const bool prohibited){
- add(query,false,required,prohibited);
- }
- void add(Query* query, const bool deleteQuery, const bool required, const bool prohibited);
-
- /** Copies the clauses of this query into the array.
- * The array must be at least as long as getClauseCount()
- * If you want to use the clauses, make sure you null terminate it.
- */
- void getClauses(BooleanClause** clauses) const;
-
- ///@deprecated
- _CL_DEPRECATED( getClauses(clauses) ) BooleanClause** getClauses() const;
-
- /**
- * Give client code access to clauses.size() so we know how
- * large the array returned by getClauses is.
- */
- size_t getClauseCount() const;
-
- /** Adds a clause to a boolean query.
- * @see #getMaxClauseCount()
- */
- void add(BooleanClause* clause);
-
- Query* rewrite(CL_NS(index)::IndexReader* reader);
- Query* clone() const;
- bool equals(Query* o) const;
-
- /** Prints a user-readable version of this query. */
- TCHAR* toString(const TCHAR* field) const;
- /** Returns a hash code value for this object.*/
- size_t hashCode() const;
- };
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.cpp
deleted file mode 100644
index ae7ee40d6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "BooleanScorer.h"
-
-#include "Scorer.h"
-#include "Similarity.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
- BooleanScorer::BooleanScorer(Similarity* similarity):
- Scorer(similarity),
- scorers(NULL),
- maxCoord (1),
- nextMask (1),
- end(0),
- current(NULL),
- requiredMask (0),
- prohibitedMask (0),
- coordFactors (NULL)
- {
- bucketTable = _CLNEW BucketTable(this);
- }
-
- BooleanScorer::~BooleanScorer(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- _CLDELETE(bucketTable);
- _CLDELETE_ARRAY(coordFactors);
- _CLDELETE(scorers);
- }
-
-
- bool BooleanScorer::next() {
- bool more;
- do {
- while (bucketTable->first != NULL) { // more queued
- current = bucketTable->first;
- bucketTable->first = current->next; // pop the queue
-
- // check prohibited & required
- if ((current->bits & prohibitedMask) == 0 &&
- (current->bits & requiredMask) == requiredMask) {
- return true;
- }
- }
-
- // refill the queue
- more = false;
- end += BooleanScorer::BucketTable_SIZE;
- for (SubScorer* sub = scorers; sub != NULL; sub = sub->next) {
- Scorer* scorer = sub->scorer;
- int32_t doc;
- while (!sub->done && (doc=scorer->doc()) < end) {
- sub->collector->collect(doc, scorer->score());
- sub->done = !scorer->next();
- }
- if (!sub->done) {
- more = true;
- }
- }
- } while (bucketTable->first != NULL || more);
-
- return false;
- }
-
- qreal BooleanScorer::score(){
- if (coordFactors == NULL)
- computeCoordFactors();
- return current->score * coordFactors[current->coord];
- }
-
- bool BooleanScorer::skipTo(int32_t target) {
- _CLTHROWA(CL_ERR_UnsupportedOperation,"UnsupportedOperationException: BooleanScorer::skipTo");
- }
-
- void BooleanScorer::explain(int32_t doc, Explanation* ret) {
- _CLTHROWA(CL_ERR_UnsupportedOperation,"UnsupportedOperationException: BooleanScorer::explain");
- }
-
- TCHAR* BooleanScorer::toString() {
- CL_NS(util)::StringBuffer buffer;
- buffer.append(_T("boolean("));
- for (SubScorer* sub = scorers; sub != NULL; sub = sub->next) {
- buffer.append(sub->scorer->toString());
- buffer.append(_T(" "));
- }
- buffer.appendChar(')');
- return buffer.toString();
- }
-
- void BooleanScorer::add(Scorer* scorer, const bool required, const bool prohibited) {
- int32_t mask = 0;
- if (required || prohibited) {
- if (nextMask == 0)
- _CLTHROWA(CL_ERR_IndexOutOfBounds, "More than 32 required/prohibited clauses in query.");
- mask = nextMask;
- nextMask = ( nextMask << 1 );
- } else
- mask = 0;
-
- if (!prohibited)
- maxCoord++;
-
- if (prohibited)
- prohibitedMask |= mask; // update prohibited mask
- else if (required)
- requiredMask |= mask; // update required mask
-
- //scorer, HitCollector, and scorers is delete in the SubScorer
- scorers = _CLNEW SubScorer(scorer, required, prohibited,
- bucketTable->newCollector(mask), scorers);
- }
-
- void BooleanScorer::computeCoordFactors(){
- coordFactors = _CL_NEWARRAY(qreal,maxCoord);
- for (int32_t i = 0; i < maxCoord; i++)
- coordFactors[i] = getSimilarity()->coord(i, maxCoord-1);
- }
-
- /*void BooleanScorer::score(HitCollector* results, const int32_t maxDoc) {
- if (coordFactors == NULL)
- computeCoordFactors();
-
- while (currentDoc < maxDoc) {
- currentDoc = (currentDoc+BucketTable_SIZE<maxDoc?currentDoc+BucketTable_SIZE:maxDoc);
- for (SubScorer* t = scorers; t != NULL; t = t->next)
- t->scorer->score((t->collector), currentDoc);
- bucketTable->collectHits(results);
- }
- }*/
-
-
-
-
- BooleanScorer::SubScorer::SubScorer(Scorer* scr, const bool r, const bool p, HitCollector* c, SubScorer* nxt):
- scorer(scr),
- required(r),
- prohibited(p),
- collector(c),
- next(nxt)
- {
- //Func - Constructor
- //Pre - scr != NULL,
- // c != NULL
- // nxt may or may not be NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(scr != NULL,"scr is NULL");
- CND_PRECONDITION(c != NULL,"c is NULL");
-
- done = !scorer->next();
- }
-
- BooleanScorer::SubScorer::~SubScorer(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- for (SubScorer * ptr = next; ptr; ){
- SubScorer* next = ptr->next;
- ptr->next = NULL;
- _CLDELETE(ptr);
- ptr = next;
- }
- _CLDELETE(scorer);
- _CLDELETE(collector);
- }
-
- BooleanScorer::Bucket::Bucket():
- doc(-1),
- score(0.0),
- bits(0),
- coord(0),
- next(NULL)
- {
- }
- BooleanScorer::Bucket::~Bucket(){
- }
-
-
-
-
- BooleanScorer::BucketTable::BucketTable(BooleanScorer* scr):
- scorer(scr),
- first(NULL)
- {
- buckets = _CL_NEWARRAY(Bucket,BucketTable_SIZE);
- }
- BooleanScorer::BucketTable::~BucketTable(){
- clear();
- _CLDELETE_ARRAY(buckets);
- }
-
- void BooleanScorer::BucketTable::clear(){
- //delete first;
- first = NULL;
- }
- int32_t BooleanScorer::BucketTable::size() const { return BooleanScorer::BucketTable_SIZE; }
-
- HitCollector* BooleanScorer::BucketTable::newCollector(const int32_t mask) {
- return _CLNEW Collector(mask, this);
- }
-
-
-
-
-
-
-
-
-
- BooleanScorer::Collector::Collector(const int32_t msk, BucketTable* bucketTbl):
- bucketTable(bucketTbl),
- mask(msk)
- {
- }
-
- void BooleanScorer::Collector::collect(const int32_t doc, const qreal score){
- BucketTable* table = bucketTable;
- int32_t i = doc & (BooleanScorer::BucketTable_SIZE-1);
- Bucket* bucket = &table->buckets[i];
-
- if (bucket->doc != doc) { // invalid bucket
- bucket->doc = doc; // set doc
- bucket->score = score; // initialize score
- bucket->bits = mask; // initialize mask
- bucket->coord = 1; // initialize coord
-
- bucket->next = table->first; // push onto valid list
- table->first = bucket;
- } else { // valid bucket
- bucket->score += score; // increment score
- bucket->bits |= mask; // add bits in mask
- bucket->coord++; // increment coord
- }
- }
-
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.h
deleted file mode 100644
index 2df114688..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/BooleanScorer.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_BooleanScorer_
-#define _lucene_search_BooleanScorer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Scorer.h"
-
-CL_NS_DEF(search)
-
-class BooleanScorer : public Scorer {
-public:
- class Bucket : LUCENE_BASE {
- public:
- int32_t doc; // tells if bucket is valid
- qreal score; // incremental score
- int32_t bits; // used for bool constraints
- int32_t coord; // count of terms in score
- Bucket* next; // next valid bucket
-
- Bucket();
- ~Bucket();
- };
-
- class SubScorer: LUCENE_BASE {
- public:
- bool done;
- Scorer* scorer;
- bool required;
- bool prohibited;
- HitCollector* collector;
- SubScorer* next;
- SubScorer(Scorer* scr, const bool r, const bool p, HitCollector* c, SubScorer* nxt);
- ~SubScorer();
- };
-
- class BucketTable:LUCENE_BASE {
- private:
- BooleanScorer* scorer;
- public:
- Bucket* buckets;
- Bucket* first; // head of valid list
-
- BucketTable(BooleanScorer* scr);
- int32_t size() const;
- HitCollector* newCollector(const int32_t mask);
- void clear();
- ~BucketTable();
-
- };
-
- class Collector: public HitCollector {
- private:
- BucketTable* bucketTable;
- int32_t mask;
- public:
- Collector(const int32_t mask, BucketTable* bucketTable);
-
- void collect(const int32_t doc, const qreal score);
- };
-
- SubScorer* scorers;
- BucketTable* bucketTable;
-
- int32_t maxCoord;
- int32_t nextMask;
-
- int32_t end;
- Bucket* current;
-
-public:
- LUCENE_STATIC_CONSTANT(int32_t,BucketTable_SIZE=1024);
- int32_t requiredMask;
- int32_t prohibitedMask;
- qreal* coordFactors;
-
- BooleanScorer(Similarity* similarity);
- ~BooleanScorer();
- void add(Scorer* scorer, const bool required, const bool prohibited);
- int32_t doc() const { return current->doc; }
- bool next();
- qreal score();
- bool skipTo(int32_t target);
- void explain(int32_t doc, Explanation* ret);
- TCHAR* toString();
- void computeCoordFactors();
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.cpp
deleted file mode 100644
index 694556ca7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CachingWrapperFilter.h"
-
-CL_NS_DEF(search)
-CL_NS_USE(index)
-CL_NS_USE(util)
-
-AbstractCachingFilter::AbstractCachingFilter():
- cache(false,true)
-{
-}
-AbstractCachingFilter::AbstractCachingFilter(const AbstractCachingFilter& copy):
- cache(false,true)
-{
-}
-AbstractCachingFilter::~AbstractCachingFilter(){
-}
-AbstractCachingFilter::BitSetHolder::BitSetHolder(CL_NS(util)::BitSet* bits, bool deleteBs){
- this->bits = bits;
- this->deleteBs = deleteBs;
-}
-AbstractCachingFilter::BitSetHolder::~BitSetHolder(){
- if ( deleteBs )
- _CLDELETE(bits);
-}
-
-
-BitSet* AbstractCachingFilter::bits(IndexReader* reader){
- SCOPED_LOCK_MUTEX(cache.THIS_LOCK)
- BitSetHolder* cached = cache.get(reader);
- if ( cached != NULL )
- return cached->bits;
- BitSet* bs = doBits(reader);
- BitSetHolder* bsh = _CLNEW BitSetHolder(bs, doShouldDeleteBitSet(bs));
- cache.put(reader,bsh);
- return bs;
-}
-void AbstractCachingFilter::closeCallback(CL_NS(index)::IndexReader* reader, void*){
- SCOPED_LOCK_MUTEX(cache.THIS_LOCK)
- cache.remove(reader);
-}
-
-
-
-
-CachingWrapperFilter::CachingWrapperFilter(Filter* filter, bool deleteFilter){
- this->filter = filter;
- this->deleteFilter = deleteFilter;
-}
-CachingWrapperFilter::CachingWrapperFilter(const CachingWrapperFilter& copy):
- AbstractCachingFilter(copy)
-{
- this->filter = copy.filter->clone();
- this->deleteFilter = true;
-}
-Filter* CachingWrapperFilter::clone() const{
- return _CLNEW CachingWrapperFilter(*this);
-}
-TCHAR* CachingWrapperFilter::toString(){
- TCHAR* fs = filter->toString();
- int len = _tcslen(fs)+23;
- TCHAR* ret = _CL_NEWARRAY(TCHAR,len);
- _sntprintf(ret,len,_T("CachingWrapperFilter(%s)"),fs);
- _CLDELETE_CARRAY(fs);
- return ret;
-}
-BitSet* CachingWrapperFilter::doBits(IndexReader* reader){
- return filter->bits(reader);
-}
-bool CachingWrapperFilter::doShouldDeleteBitSet( CL_NS(util)::BitSet* bits ){
- return filter->shouldDeleteBitSet(bits);
-}
-CachingWrapperFilter::~CachingWrapperFilter(){
- if ( deleteFilter ){
- _CLDELETE(filter);
- }else
- filter=NULL;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.h b/src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.h
deleted file mode 100644
index e48a18292..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/CachingWrapperFilter.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_CachingWrapperFilter_
-#define _lucene_search_CachingWrapperFilter_
-
-#include "CLucene/util/BitSet.h"
-#include "CLucene/index/IndexReader.h"
-#include "Filter.h"
-
-CL_NS_DEF(search)
-/**
- * Wraps another filter's result and caches it. The purpose is to allow
- * filters to implement this and allow itself to be cached. Alternatively,
- * use the CachingWrapperFilter to cache the filter.
- */
-class AbstractCachingFilter: public Filter
-{
- class BitSetHolder: LUCENE_BASE{
- bool deleteBs;
- public:
- BitSetHolder(CL_NS(util)::BitSet* bits, bool deleteBs);
- ~BitSetHolder();
- CL_NS(util)::BitSet* bits;
- };
- void closeCallback(CL_NS(index)::IndexReader* reader, void* param);
- typedef CL_NS(util)::CLHashMap<CL_NS(index)::IndexReader*,
- BitSetHolder*,
- CL_NS(util)::Compare::Void<CL_NS(index)::IndexReader>,
- CL_NS(util)::Equals::Void<CL_NS(index)::IndexReader>,
- CL_NS(util)::Deletor::Object<CL_NS(index)::IndexReader>,
- CL_NS(util)::Deletor::Object<BitSetHolder> > CacheType;
-
- CacheType cache;
-
-protected:
- AbstractCachingFilter( const AbstractCachingFilter& copy );
- virtual CL_NS(util)::BitSet* doBits( CL_NS(index)::IndexReader* reader ) = 0;
- virtual bool doShouldDeleteBitSet( CL_NS(util)::BitSet* bits ){ return false; }
- AbstractCachingFilter();
-public:
- virtual ~AbstractCachingFilter();
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader );
-
- virtual Filter *clone() const = 0;
- virtual TCHAR *toString() = 0;
-
- bool shouldDeleteBitSet( const CL_NS(util)::BitSet* bits ) const{ return false; }
-};
-
-/**
- * Wraps another filter's result and caches it. The purpose is to allow
- * filters to simply filter, and then wrap with this class to add
- * caching, keeping the two concerns decoupled yet composable.
- */
-class CachingWrapperFilter: public AbstractCachingFilter
-{
-private:
- Filter* filter;
- bool deleteFilter;
-protected:
- CachingWrapperFilter( const CachingWrapperFilter& copy );
- CL_NS(util)::BitSet* doBits( CL_NS(index)::IndexReader* reader );
- bool doShouldDeleteBitSet( CL_NS(util)::BitSet* bits );
-public:
- CachingWrapperFilter( Filter* filter, bool deleteFilter=true );
- ~CachingWrapperFilter();
-
- Filter *clone() const;
- TCHAR *toString();
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.cpp
deleted file mode 100644
index 4b6389c0f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-#include <CLucene/StdHeader.h>
-#include <CLucene/util/Misc.h>
-#include "ChainedFilter.h"
-
-CL_NS_DEF(search)
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_USE(document)
-
-
-ChainedFilter::ChainedFilter( Filter ** _filters, int _op ):
- filters(_filters),
- logicArray(NULL),
- logic(_op)
-{
-}
-ChainedFilter::ChainedFilter( Filter** _filters, int* _array ):
- filters(_filters),
- logicArray(_array),
- logic(-1)
-{
-}
-ChainedFilter::ChainedFilter( const ChainedFilter& copy ) :
- logicArray( copy.logicArray ),
- logic( copy.logic )
-{
- filters = copy.filters;
-}
-ChainedFilter::~ChainedFilter(void)
-{
-
-}
-
-Filter* ChainedFilter::clone() const {
- return _CLNEW ChainedFilter(*this );
-}
-
-const TCHAR* ChainedFilter::getLogicString(int logic){
- if ( logic == ChainedFilter::OR )
- return _T("OR");
- else if ( logic == ChainedFilter::AND )
- return _T("AND");
- else if ( logic == ChainedFilter::ANDNOT )
- return _T("ANDNOT");
- else if ( logic == ChainedFilter::XOR )
- return _T("XOR");
- else if ( logic >= ChainedFilter::USER ){
- return _T("USER");
- }
- return _T("");
-}
-
-TCHAR* ChainedFilter::toString()
-{
-
- Filter** filter = filters;
-
- StringBuffer buf(_T("ChainedFilter: ["));
- int* la = logicArray;
- while(*filter )
- {
- if ( filter != filters )
- buf.appendChar(' ');
- buf.append(getLogicString(logic==-1?*la:logic));
- buf.appendChar(' ');
-
- TCHAR* filterstr = (*filter)->toString();
- buf.append(filterstr);
- _CLDELETE_ARRAY( filterstr );
-
- filter++;
- if ( logic == -1 )
- la++;
- }
-
- buf.appendChar(']');
-
- return buf.toString();
-}
-
-
-/** Returns a BitSet with true for documents which should be permitted in
-search results, and false for those that should not. */
-BitSet* ChainedFilter::bits( IndexReader* reader )
-{
- if( logic != -1 )
- return bits( reader, logic );
- else if( logicArray != NULL )
- return bits( reader, logicArray );
- else
- return bits( reader, DEFAULT );
-}
-
-
-BitSet* ChainedFilter::bits( IndexReader* reader, int logic )
-{
- BitSet* bts = NULL;
-
- Filter** filter = filters;
-
- // see discussion at top of file
- if( *filter ) {
- BitSet* tmp = (*filter)->bits( reader );
- if ( (*filter)->shouldDeleteBitSet(tmp) ) //if we are supposed to delete this BitSet, then
- bts = tmp; //we can safely call it our own
- else if ( tmp == NULL ){
- int32_t len = reader->maxDoc();
- bts = _CLNEW BitSet( len ); //bitset returned null, which means match _all_
- for (int32_t i=0;i<len;i++ )
- bts->set(i);
- }else{
- bts = tmp->clone(); //else it is probably cached, so we need to copy it before using it.
- }
- filter++;
- }
- else
- bts = _CLNEW BitSet( reader->maxDoc() );
-
- while( *filter ) {
- doChain( bts, reader, logic, *filter );
- filter++;
- }
-
- return bts;
-}
-
-
-BitSet* ChainedFilter::bits( IndexReader* reader, int* _logicArray )
-{
- BitSet* bts = NULL;
-
- Filter** filter = filters;
- int* logic = _logicArray;
-
- // see discussion at top of file
- if( *filter ) {
- BitSet* tmp = (*filter)->bits( reader );
- if ( (*filter)->shouldDeleteBitSet(tmp) ) //if we are supposed to delete this BitSet, then
- bts = tmp; //we can safely call it our own
- else if ( tmp == NULL ){
- int32_t len = reader->maxDoc();
- bts = _CLNEW BitSet( len ); //bitset returned null, which means match _all_
- for (int32_t i=0;i<len;i++ )
- bts->set(i); //todo: this could mean that we can skip certain types of filters
- }
- else
- {
- bts = tmp->clone(); //else it is probably cached, so we need to copy it before using it.
- }
- filter++;
- logic++;
- }
- else
- bts = _CLNEW BitSet( reader->maxDoc() );
-
- while( *filter ) {
- doChain( bts, reader, *logic, *filter );
- filter++;
- logic++;
- }
-
- return bts;
-}
-
-void ChainedFilter::doUserChain( CL_NS(util)::BitSet* chain, CL_NS(util)::BitSet* filter, int logic ){
- _CLTHROWA(CL_ERR_Runtime,"User chain logic not implemented by superclass");
-}
-
-BitSet* ChainedFilter::doChain( BitSet* resultset, IndexReader* reader, int logic, Filter* filter )
-{
- BitSet* filterbits = filter->bits( reader );
- int32_t maxDoc = reader->maxDoc();
- int32_t i=0;
- if ( logic >= ChainedFilter::USER ){
- doUserChain(resultset,filterbits,logic);
- }else{
- switch( logic )
- {
- case OR:
- for( i=0; i < maxDoc; i++ )
- resultset->set( i, (resultset->get(i) || (filterbits==NULL || filterbits->get(i) ))?1:0 );
- break;
- case AND:
- for( i=0; i < maxDoc; i++ )
- resultset->set( i, (resultset->get(i) && (filterbits==NULL || filterbits->get(i) ))?1:0 );
- break;
- case ANDNOT:
- for( i=0; i < maxDoc; i++ )
- resultset->set( i, (resultset->get(i) && (filterbits==NULL || filterbits->get(i)))?0:1 );
- break;
- case XOR:
- for( i=0; i < maxDoc; i++ )
- resultset->set( i, resultset->get(i) ^ ((filterbits==NULL || filterbits->get(i) )?1:0) );
- break;
- default:
- doChain( resultset, reader, DEFAULT, filter );
- }
- }
-
- if ( filter->shouldDeleteBitSet(filterbits) )
- _CLDELETE( filterbits );
-
- return resultset;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.h b/src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.h
deleted file mode 100644
index f4d9d0049..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/ChainedFilter.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_ChainedFilter_
-#define _lucene_search_ChainedFilter_
-
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/BitSet.h"
-#include "CLucene/search/Filter.h"
-
-CL_NS_DEF(search)
-
-/*
-Discussion - brian@unixpoet.com
-
-From ChainedFilter.java:
-
-...
-
-// First AND operation takes place against a completely false
-// bitset and will always return zero results. Thanks to
-// Daniel Armbrust for pointing this out and suggesting workaround.
-
-if (logic[0] == AND)
-{
- result = (BitSet) chain[i].bits(reader).clone();
- ++i;
-}
-
-...
-
-The observation is correct and it was buggy. The problem is that the same
-issue remains for the ANDNOT logic op but with the inverse result: all bits
-set to 1. The result of the other ops, i.e. OR, AND, XOR for the first filter
-ends up just copying the bitset of the first filter (explicitly in the case of the AND).
-
-Why not do the same for the NAND? This will have the side effect of rendering the first op
-in the logic array superflous - not a big problem.
-
-The only "problem" is that we will return different results then the Java
-Lucene code - though I prefer CLucene to be a correct implementation and only maintain
-API compat rather than full 100% compat with Lucene.
-*/
-class ChainedFilter: public Filter
-{
-public:
- LUCENE_STATIC_CONSTANT(int, OR = 0); //set current bit if the chain is set OR if the filter bit is set
- LUCENE_STATIC_CONSTANT(int, AND = 1); //set current bit if the chain is set AND the filter bit is set
- LUCENE_STATIC_CONSTANT(int, ANDNOT = 2); //set current bit if the chain is not set AND the filter bit is not set
- LUCENE_STATIC_CONSTANT(int, XOR = 3); //set current bit if the chain is set OR the filter bit is set BUT not both is set
-
- LUCENE_STATIC_CONSTANT(int, USER = 5); //add this value to user defined value, then override doUserChain
-
- LUCENE_STATIC_CONSTANT(int, DEFAULT = OR);
-
-protected:
- Filter **filters;
- int *logicArray;
- int logic;
-
- ChainedFilter( const ChainedFilter& copy );
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader, int logic );
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader, int* logicArray );
- CL_NS(util)::BitSet* doChain( CL_NS(util)::BitSet* result, CL_NS(index)::IndexReader* reader, int logic, Filter* filter );
-
- virtual void doUserChain( CL_NS(util)::BitSet* chain, CL_NS(util)::BitSet* filter, int logic );
- virtual const TCHAR* getLogicString(int logic);
-public:
- ChainedFilter( Filter** filters, int op = DEFAULT );
- ChainedFilter( Filter** filters, int* _array );
- virtual ~ChainedFilter();
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader );
-
- virtual Filter* clone() const;
-
- TCHAR* toString();
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Compare.h b/src/assistant/3rdparty/clucene/src/CLucene/search/Compare.h
deleted file mode 100644
index ab38b17f1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Compare.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_Compare_
-#define _lucene_search_Compare_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "FieldSortedHitQueue.h"
-
-CL_NS_DEF(search)
-
-
-class ScoreDocComparators:LUCENE_BASE {
-protected:
- ScoreDocComparators(){}
-public:
- ~ScoreDocComparators(){
- }
-
- class Relevance:public ScoreDocComparator {
- public:
- int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j) {
- if (i->score > j->score) return -1;
- if (i->score < j->score) return 1;
- return 0;
- }
- CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i) {
- return _CLNEW CL_NS(util)::Compare::Float (i->score);
- }
- int32_t sortType() {
- return SortField::DOCSCORE;
- }
- };
-
- class IndexOrder:public ScoreDocComparator{
- public:
- IndexOrder():
- ScoreDocComparator()
- {
-
- }
- int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j) {
- if (i->doc < j->doc) return -1;
- if (i->doc > j->doc) return 1;
- return 0;
- }
- CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i) {
- return _CLNEW CL_NS(util)::Compare::Int32(i->doc);
- }
- int32_t sortType() {
- return SortField::DOC;
- }
- };
-
-
- class String: public ScoreDocComparator {
- FieldCache::StringIndex* index;
-#ifdef _CL__CND_DEBUG
- int32_t length;
-#endif
- public:
- String(FieldCache::StringIndex* index, int32_t len)
- {
-#ifdef _CL__CND_DEBUG
- this->length = len;
-#endif
- this->index = index;
- }
-
- int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j) {
- CND_PRECONDITION(i->doc<length, "i->doc>=length")
- CND_PRECONDITION(j->doc<length, "j->doc>=length")
- if (index->order[i->doc] < index->order[j->doc]) return -1;
- if (index->order[i->doc] > index->order[j->doc]) return 1;
- return 0;
- }
-
- CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i) {
- return _CLNEW CL_NS(util)::Compare::TChar(index->lookup[index->order[i->doc]]);
- }
-
- int32_t sortType() {
- return SortField::STRING;
- }
- };
-
- class Int32:public ScoreDocComparator{
- int32_t* fieldOrder;
-#ifdef _CL__CND_DEBUG
- int32_t length;
-#endif
- public:
- Int32(int32_t* fieldOrder, int32_t len)
- {
- this->fieldOrder = fieldOrder;
-#ifdef _CL__CND_DEBUG
- this->length = len;
-#endif
- }
-
-
- int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j) {
- CND_PRECONDITION(i->doc<length, "i->doc>=length")
- CND_PRECONDITION(j->doc<length, "j->doc>=length")
- if (fieldOrder[i->doc] < fieldOrder[j->doc]) return -1;
- if (fieldOrder[i->doc] > fieldOrder[j->doc]) return 1;
- return 0;
- }
-
- CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i) {
- CND_PRECONDITION(i->doc<length, "i->doc>=length")
- return _CLNEW CL_NS(util)::Compare::Int32(fieldOrder[i->doc]);
- }
-
- int32_t sortType() {
- return SortField::INT;
- }
- };
-
- class Float:public ScoreDocComparator {
- qreal* fieldOrder;
-#ifdef _CL__CND_DEBUG
- int32_t length;
-#endif
- public:
- Float(qreal* fieldOrder, int32_t len)
- {
- this->fieldOrder = fieldOrder;
-#ifdef _CL__CND_DEBUG
- this->length = len;
-#endif
- }
-
- int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j) {
- CND_PRECONDITION(i->doc<length, "i->doc>=length")
- CND_PRECONDITION(j->doc<length, "j->doc>=length")
- if (fieldOrder[i->doc] < fieldOrder[j->doc]) return -1;
- if (fieldOrder[i->doc] > fieldOrder[j->doc]) return 1;
- return 0;
- }
-
- CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i) {
- CND_PRECONDITION(i->doc<length, "i->doc>=length")
- return _CLNEW CL_NS(util)::Compare::Float(fieldOrder[i->doc]);
- }
-
- int32_t sortType() {
- return SortField::FLOAT;
- }
- };
-};
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.cpp
deleted file mode 100644
index 9b7846f8e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "ConjunctionScorer.h"
-#include "CLucene/util/Arrays.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
- Scorer* ConjunctionScorer::first() const{
- if ( scorers.end() == scorers.begin() )
- return NULL;
-
- return *scorers.begin();
- } //get First
- Scorer* ConjunctionScorer::last() {
- if ( scorers.end() == scorers.begin() )
- return NULL;
-
- CL_NS_STD(list)<Scorer*>::iterator i = scorers.end();
- --i;
- return *i;
- } //get Last
-
- class _ScorerSorter:public CL_NS(util)::Arrays::_Arrays<Scorer*>{
- public:
- bool equals(Scorer* o1,Scorer* o2) const{
- return o1->doc() == o2->doc();
- }
- int32_t compare(Scorer* o1,Scorer* o2) const{
- return o1->doc() - o2->doc();
- }
- };
- _ScorerSorter __ScorerSorter;
-
- void ConjunctionScorer::sortScorers() {
- // move scorers to an array
- int32_t size = scorers.size();
- Scorer** array = _CL_NEWARRAY(Scorer*,size+1);
- scorers.toArray(array);
- scorers.clear(); // empty the list
-
- // note that this comparator is not consistent with equals!
- __ScorerSorter.sort(array,size,0,size);
-
- for (int32_t i = 0; i<size; i++) {
- scorers.push_back(array[i]); // re-build list, now sorted
- }
- _CLDELETE_ARRAY(array);
- }
-
- bool ConjunctionScorer::doNext() {
- while (more && first()->doc() < last()->doc()) { // find doc w/ all clauses
- more = first()->skipTo(last()->doc()); // skip first upto last
- Scorer* scorer = *scorers.begin();
- scorers.delete_front();
- scorers.push_back(scorer); // move first to last
- }
- return more; // found a doc with all clauses
- }
-
-
- void ConjunctionScorer::init() {
- more = scorers.size() > 0;
-
- // compute coord factor
- coord = getSimilarity()->coord(scorers.size(), scorers.size());
-
- // move each scorer to its first entry
- CL_NS_STD(list)<Scorer*>::iterator i = scorers.begin();
- while (more && i!=scorers.end()) {
- more = ((Scorer*)*i)->next();
- ++i;
- }
-
- if (more)
- sortScorers(); // initial sort of list
-
- firstTime = false;
- }
-
- ConjunctionScorer::ConjunctionScorer(Similarity* similarity):
- Scorer(similarity),
- scorers(false),
- firstTime(true),
- more(true),
- coord(0.0)
- {
- }
- ConjunctionScorer::~ConjunctionScorer(){
- scorers.setDoDelete(true);
- }
-
- TCHAR *CL_NS(search)::Scorer::toString(void){
- return STRDUP_TtoT(_T("ConjunctionScorer"));
- }
-
-
- void ConjunctionScorer::add(Scorer* scorer){
- scorers.push_back(scorer);
- }
-
-
- int32_t ConjunctionScorer::doc() const{ return first()->doc(); }
-
- bool ConjunctionScorer::next() {
- if (firstTime) {
- init();
- } else if (more) {
- more = last()->next(); // trigger further scanning
- }
- return doNext();
- }
-
- bool ConjunctionScorer::skipTo(int32_t target) {
- CL_NS_STD(list)<Scorer*>::iterator i = scorers.begin();
- while (more && i!=scorers.end()) {
- more = ((Scorer*)*i)->skipTo(target);
- ++i;
- }
- if (more)
- sortScorers(); // re-sort scorers
- return doNext();
- }
-
- qreal ConjunctionScorer::score(){
- qreal score = 0.0f; // sum scores
- CL_NS_STD(list)<Scorer*>::const_iterator i = scorers.begin();
- while (i!=scorers.end()){
- score += (*i)->score();
- ++i;
- }
- score *= coord;
- return score;
- }
-
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.h
deleted file mode 100644
index 4b6807209..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/ConjunctionScorer.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_ConjunctionScorer_
-#define _lucene_search_ConjunctionScorer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-#include "Scorer.h"
-#include "Similarity.h"
-
-CL_NS_DEF(search)
-
-/** Scorer for conjunctions, sets of queries, all of which are required. */
-class ConjunctionScorer: public Scorer {
-private:
- CL_NS(util)::CLLinkedList<Scorer*,CL_NS(util)::Deletor::Object<Scorer> > scorers;
- bool firstTime;
- bool more;
- qreal coord;
-
- Scorer* first() const;
- Scorer* last();
- void sortScorers();
- bool doNext();
- void init();
-public:
- ConjunctionScorer(Similarity* similarity);
- virtual ~ConjunctionScorer();
- TCHAR* toString(void){
- return STRDUP_TtoT(_T("ConjunctionScorer"));
- }
- void add(Scorer* scorer);
- int32_t doc() const;
- bool next();
- bool skipTo(int32_t target);
- qreal score();
- virtual void explain(int32_t doc, Explanation* ret) {
- _CLTHROWA(CL_ERR_UnsupportedOperation,"UnsupportedOperationException: ConjunctionScorer::explain");
- }
-
-
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.cpp
deleted file mode 100644
index 925858204..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "DateFilter.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_USE(document)
-CL_NS_DEF(search)
-
- DateFilter::~DateFilter(){
- _CLDECDELETE( start );
- _CLDECDELETE( end );
- }
-
- DateFilter::DateFilter(const DateFilter& copy):
- start( _CL_POINTER(copy.start) ),
- end ( _CL_POINTER(copy.end) )
- {
- }
-
- /** Constructs a filter for field <code>f</code> matching times between
- <code>from</code> and <code>to</code>. */
- DateFilter::DateFilter(const TCHAR* f, int64_t from, int64_t to)
- {
- TCHAR* tmp = DateField::timeToString(from);
- start = _CLNEW Term(f, tmp);
- _CLDELETE_CARRAY(tmp);
-
- tmp = DateField::timeToString(to);
- end = _CLNEW Term(start, tmp);
- _CLDELETE_CARRAY(tmp);
- }
-
- /** Constructs a filter for field <code>f</code> matching times before
- <code>time</code>. */
- DateFilter* DateFilter::Before(const TCHAR* field, int64_t time) {
- return _CLNEW DateFilter(field, 0,time);
- }
-
- /** Constructs a filter for field <code>f</code> matching times after
- <code>time</code>. */
- DateFilter* DateFilter::After(const TCHAR* field, int64_t time) {
- return _CLNEW DateFilter(field,time, DATEFIELD_DATE_MAX );
- }
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- BitSet* DateFilter::bits(IndexReader* reader) {
- BitSet* bts = _CLNEW BitSet(reader->maxDoc());
-
- TermEnum* enumerator = reader->terms(start);
- if (enumerator->term(false) == NULL){
- _CLDELETE(enumerator);
- return bts;
- }
- TermDocs* termDocs = reader->termDocs();
-
- try {
- while (enumerator->term(false)->compareTo(end) <= 0) {
- termDocs->seek(enumerator->term(false));
- while (termDocs->next()) {
- bts->set(termDocs->doc());
- }
- if (!enumerator->next()) {
- break;
- }
- }
- } _CLFINALLY (
- termDocs->close();
- _CLDELETE(termDocs);
- enumerator->close();
- _CLDELETE(enumerator);
- );
- return bts;
- }
-
- Filter* DateFilter::clone() const{
- return _CLNEW DateFilter(*this);
- }
-
- TCHAR* DateFilter::toString(){
- size_t len = _tcslen(start->field()) + start->textLength() + end->textLength() + 8;
- TCHAR* ret = _CL_NEWARRAY(TCHAR,len);
- ret[0]=0;
- _sntprintf(ret,len,_T("%s: [%s-%s]"), start->field(),start->text(),end->text());
- return ret;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.h b/src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.h
deleted file mode 100644
index b37272b84..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/DateFilter.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_DateFilter_
-#define _lucene_search_DateFilter_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/document/DateField.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/BitSet.h"
-#include "Filter.h"
-
-CL_NS_DEF(search)
- /**
- * A Filter that restricts search results to a range of time.
- *
- * <p>For this to work, documents must have been indexed with a
- * {@link DateField}.
- */
- class DateFilter: public Filter {
- private:
- CL_NS(index)::Term* start;
- CL_NS(index)::Term* end;
-
- protected:
- DateFilter(const DateFilter& copy);
- public:
- ~DateFilter();
-
- /** Constructs a filter for field <code>f</code> matching times between
- <code>from</code> and <code>to</code>. */
- DateFilter(const TCHAR* f, int64_t from, int64_t to);
-
- /** Constructs a filter for field <code>f</code> matching times before
- <code>time</code>. */
- static DateFilter* Before(const TCHAR* field, int64_t time) ;
-
- /** Constructs a filter for field <code>f</code> matching times after
- <code>time</code>. */
- static DateFilter* After(const TCHAR* field, int64_t time) ;
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- CL_NS(util)::BitSet* bits(CL_NS(index)::IndexReader* reader) ;
-
- Filter* clone() const;
-
- TCHAR* toString();
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.cpp
deleted file mode 100644
index 1fbf2e99d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "ExactPhraseScorer.h"
-
-#include "PhraseScorer.h"
-#include "CLucene/index/Terms.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
- ExactPhraseScorer::ExactPhraseScorer(Weight* weight, TermPositions** tps,
- int32_t* positions, Similarity* similarity, uint8_t* norms):
- PhraseScorer(weight, tps, positions, similarity, norms){
- //Func - Constructor
- //Pre - tps != NULL
- // tpsLength >= 0
- // n != NULL
- //Post - Instance has been created
-
- CND_PRECONDITION(tps != NULL,"tps is NULL");
- CND_PRECONDITION(tps[0] != NULL,"tps is NULL");
- //CND_PRECONDITION(n != NULL,"n is NULL") =this is checked already in PhraseScorer
-
- }
-
- qreal ExactPhraseScorer::phraseFreq(){
- //Func - Returns the freqency of the phrase
- //Pre - first != NULL
- // last != NULL
- // pq != NULL
- // size of the PhraseQueue pq is 0
- //Post - The frequency of the phrase has been returned
-
- CND_PRECONDITION(first != NULL,"first is NULL");
- CND_PRECONDITION(last != NULL,"last is NULL");
- CND_PRECONDITION(pq != NULL,"pq is NULL");
- CND_PRECONDITION(pq->size()==0,"pq is not empty");
-
- //build pq from list
-
- //Add the nodes of the list of PhrasePositions and store them
- //into the PhraseQueue pq so it can used to build
- //a list of sorted nodes
- for (PhrasePositions* pp = first; pp != NULL; pp = pp->_next) {
- //Read the first TermPosition of the current PhrasePositions pp
- pp->firstPosition();
- //Store the current PhrasePositions pp into the PhraseQueue pq
- pq->put(pp);
- }
- //pqToList requires that first and last be NULL when it's called.
- //This is done at the beginning of pqToList()
- //In this case, the nodes of the linked list are referenced by pq (see
- //above loop), so we can clear our pointers to the head and tail of the
- //linked list without fear of leaking the nodes.
-
- //rebuild list from pq
- pqToList();
-
- //Initialize freq at 0
- int32_t freq = 0;
-
- //find position with all terms
- do {
- //scan forward in first
- while (first->position < last->position){
- do{
- if (!first->nextPosition()){
- return (qreal)freq;
- }
- } while (first->position < last->position);
- //Make the current first node the last node in the list
- firstToLast();
- }
- //all equal: a match has been found
- freq++;
- } while (last->nextPosition());
-
- return (qreal)freq;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.h
deleted file mode 100644
index d82aa9e9a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/ExactPhraseScorer.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_ExactPhraseScorer_
-#define _lucene_search_ExactPhraseScorer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "PhraseScorer.h"
-#include "CLucene/index/Terms.h"
-
-CL_NS_DEF(search)
-
- class ExactPhraseScorer: public PhraseScorer {
- public:
- ExactPhraseScorer(Weight* weight, CL_NS(index)::TermPositions** tps, int32_t* positions,
- Similarity* similarity, uint8_t* norms );
-
- ~ExactPhraseScorer(){
- }
- protected:
- //Returns the exact freqency of the phrase
- qreal phraseFreq();
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.cpp
deleted file mode 100644
index 87189b71b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Explanation.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
-
-Explanation::Explanation(qreal value, const TCHAR* description) {
- this->value = value;
- _tcsncpy(this->description,description,LUCENE_SEARCH_EXPLANATION_DESC_LEN);
-}
-
-Explanation::Explanation() {
- this->value = 0;
- this->description[0]=0;
-}
-
-Explanation::Explanation(const Explanation& copy){
- set(copy);
-}
-void Explanation::set(const Explanation& copy){
- this->value = copy.value;
- STRCPY_TtoT(description,copy.description,LUCENE_SEARCH_EXPLANATION_DESC_LEN);
-
- details.clear();
- typedef CL_NS(util)::Deletor::Object<Explanation> Deletor;
- CL_NS(util)::CLArrayList<Explanation*, Deletor>::const_iterator itr;
- itr = copy.details.begin();
- while ( itr != copy.details.end() ){
- details.push_back( (*itr)->clone() );
- ++itr;
- }
-}
-
-Explanation::~Explanation(){
-}
-
-void Explanation::setDescription(const TCHAR* description) {
- _tcsncpy(this->description,description,LUCENE_SEARCH_EXPLANATION_DESC_LEN);
-}
-
-
-Explanation* Explanation::clone() const{
- return _CLNEW Explanation(*this);
-}
-
-qreal Explanation::getValue() const{
- return value;
-}
-
-void Explanation::setValue(qreal value) {
- this->value = value;
-}
-
-const TCHAR* Explanation::getDescription() const {
- return description;
-}
-
-///todo: mem leaks
-TCHAR* Explanation::toString(int32_t depth) {
- StringBuffer buffer;
- for (int32_t i = 0; i < depth; i++) {
- buffer.append(_T(" "));
- }
- buffer.appendFloat(getValue(),2);
- buffer.append(_T(" = "));
- buffer.append(getDescription());
- buffer.append(_T("\n"));
-
- for ( uint32_t j=0;j<details.size();j++ ){
- TCHAR* tmp = details[j]->toString(depth+1);
- buffer.append(tmp);
- _CLDELETE_CARRAY(tmp);
- }
- return buffer.toString();
-}
-
-int Explanation::getDetailsLength(){
- return details.size();
-}
-Explanation* Explanation::getDetail(int i){
- return details[i];
-}
-/** The sub-nodes of this explanation node. */
-void Explanation::getDetails(Explanation** ret) {
- uint32_t size = details.size();
- for ( uint32_t i=0;i<size;i++ ){
- ret[i] = details[i]->clone();
- }
- ret[size] = NULL;
-}
-
-/** Adds a sub-node to this explanation node. */
-void Explanation::addDetail(Explanation* detail) {
- details.push_back(detail);
-}
-
-/** Render an explanation as text. */
-TCHAR* Explanation::toString() {
- return toString(0);
-}
-
-/** Render an explanation as HTML. */
-///todo: mem leaks
-TCHAR* Explanation::toHtml() {
- StringBuffer buffer;
- TCHAR* tmp;
- buffer.append(_T("<ul>\n"));
-
- buffer.append(_T("<li>"));
- buffer.appendFloat(getValue(),2);
- buffer.append(_T(" = "));
-
- buffer.append(getDescription());
- buffer.append(_T("</li>\n"));
-
- for ( uint32_t i=0;i<details.size();i++ ){
- tmp = details[i]->toHtml();
- buffer.append(tmp);
- _CLDELETE_CARRAY(tmp);
- }
- buffer.append(_T("</ul>\n"));
-
- return buffer.toString();
-}
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.h b/src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.h
deleted file mode 100644
index 7c95822b6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Explanation.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_Explanation
-#define _lucene_search_Explanation
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(search)
-
- #define LUCENE_SEARCH_EXPLANATION_DESC_LEN 200
- class Explanation :LUCENE_BASE {
- private:
- qreal value; // the value of this node
- TCHAR description[LUCENE_SEARCH_EXPLANATION_DESC_LEN]; // what it represents
- CL_NS(util)::CLArrayList<Explanation*,CL_NS(util)::Deletor::Object<Explanation> > details; // sub-explanations
-
- TCHAR* toString(int32_t depth);
- protected:
- Explanation(const Explanation& copy);
- public:
- Explanation();
- ~Explanation();
-
- Explanation(qreal value, const TCHAR* description);
- void set(const Explanation& other);
-
- Explanation* clone() const;
-
- /** The value assigned to this explanation node. */
- qreal getValue() const;
-
- /** Sets the value assigned to this explanation node. */
- void setValue(qreal value);
-
- /** A description of this explanation node. */
- const TCHAR* getDescription() const; ///<returns reference
-
- /** Sets the description of this explanation node. */
- void setDescription(const TCHAR* description);
-
- /** The sub-nodes of this explanation node.
- * @param ret this array of Explanations should be getDetailsLength()+1 in size.
- The array will be null terminated.
- */
- void getDetails(Explanation** ret);
- int getDetailsLength();
- Explanation* getDetail(int i);
-
- /** Adds a sub-node to this explanation node. */
- void addDetail(Explanation* detail);
-
- /** Render an explanation as text. */
- TCHAR* toString();
-
- /** Render an explanation as HTML. */
- TCHAR* toHtml();
- };
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.cpp
deleted file mode 100644
index fae672019..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "FieldCache.h"
-#include "FieldCacheImpl.h"
-
-CL_NS_DEF(search)
-
-FieldCache* FieldCache::DEFAULT = _CLNEW FieldCacheImpl();
-int32_t FieldCache::STRING_INDEX = -1;
-
-FieldCacheAuto::FieldCacheAuto(int32_t len, int32_t type){
- contentType = type;
- contentLen = len;
- ownContents = false;
-
- intArray=NULL;
- floatArray=NULL;
- stringIndex=NULL;
- stringArray=NULL;
- comparableArray=NULL;
- sortComparator=NULL;
- scoreDocComparator=NULL;
-}
-FieldCacheAuto::~FieldCacheAuto(){
- if ( contentType == FieldCacheAuto::INT_ARRAY ){
- _CLDELETE_ARRAY(intArray);
- }else if ( contentType == FieldCacheAuto::FLOAT_ARRAY ){
- _CLDELETE_ARRAY(floatArray);
- }else if ( contentType == FieldCacheAuto::STRING_INDEX ){
- _CLDELETE(stringIndex);
- }else if ( contentType == FieldCacheAuto::STRING_ARRAY ){
- if ( ownContents ){
- for ( int32_t i=0;i<contentLen;i++ )
- _CLDELETE_CARRAY(stringArray[i]);
- }
- _CLDELETE_ARRAY(stringArray);
- }else if ( contentType == FieldCacheAuto::COMPARABLE_ARRAY ){
- if ( ownContents ){
- for ( int32_t i=0;i<contentLen;i++ )
- _CLDELETE(comparableArray[i]);
- }
- _CLDELETE_ARRAY(comparableArray);
- }else if ( contentType == FieldCacheAuto::SORT_COMPARATOR ){
- _CLDELETE(sortComparator);
- }else if ( contentType == FieldCacheAuto::SCOREDOC_COMPARATOR ){
- _CLDELETE(scoreDocComparator);
- }
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.h
deleted file mode 100644
index eeec26f33..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCache.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FieldCache_
-#define _lucene_search_FieldCache_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "Sort.h"
-
-
-CL_NS_DEF(search)
-
-class FieldCacheAuto; //predefine
-
-/**
- * Expert: Maintains caches of term values.
- *
- */
-class FieldCache :LUCENE_BASE {
-public:
- virtual ~FieldCache(){
- }
-
- /** Expert: Stores term text values and document ordering data. */
- class StringIndex:LUCENE_BASE {
- public:
- /** All the term values, in natural order. */
- TCHAR** lookup;
-
- /** For each document, an index into the lookup array. */
- int32_t* order;
-
- int count;
-
- /** Creates one of these objects
- Consumes all memory given.
- */
- StringIndex (int32_t* values, TCHAR** lookup, int count) {
- this->count = count;
- this->order = values;
- this->lookup = lookup;
- }
-
- ~StringIndex(){
- _CLDELETE_ARRAY(order);
-
- for ( int i=0;i<count;i++ )
- _CLDELETE_CARRAY(lookup[i]);
- _CLDELETE_ARRAY(lookup);
- }
- };
-
-
- /** Indicator for FieldCache::StringIndex values in the cache.
- NOTE: the value assigned to this constant must not be
- the same as any of those in SortField!!
- */
- static int32_t STRING_INDEX;
-
- /** Expert: The cache used internally by sorting and range query classes. */
- static FieldCache* DEFAULT;
-
- /** Checks the internal cache for an appropriate entry, and if none is
- * found, reads the terms in <code>field</code> as integers and returns an array
- * of size <code>reader.maxDoc()</code> of the value each document
- * has in the given field.
- * @param reader Used to get field values.
- * @param field Which field contains the integers.
- * @return The values in the given field for each document.
- * @throws IOException If any error occurs.
- */
- virtual FieldCacheAuto* getInts (CL_NS(index)::IndexReader* reader, const TCHAR* field) = 0;
-
- /** Checks the internal cache for an appropriate entry, and if
- * none is found, reads the terms in <code>field</code> as floats and returns an array
- * of size <code>reader.maxDoc()</code> of the value each document
- * has in the given field.
- * @param reader Used to get field values.
- * @param field Which field contains the floats.
- * @return The values in the given field for each document.
- * @throws IOException If any error occurs.
- */
- virtual FieldCacheAuto* getFloats (CL_NS(index)::IndexReader* reader, const TCHAR* field) = 0;
-
- /** Checks the internal cache for an appropriate entry, and if none
- * is found, reads the term values in <code>field</code> and returns an array
- * of size <code>reader.maxDoc()</code> containing the value each document
- * has in the given field.
- * @param reader Used to get field values.
- * @param field Which field contains the strings.
- * @return The values in the given field for each document.
- * @throws IOException If any error occurs.
- */
- virtual FieldCacheAuto* getStrings (CL_NS(index)::IndexReader* reader, const TCHAR* field) = 0;
-
- /** Checks the internal cache for an appropriate entry, and if none
- * is found reads the term values in <code>field</code> and returns
- * an array of them in natural order, along with an array telling
- * which element in the term array each document uses.
- * @param reader Used to get field values.
- * @param field Which field contains the strings.
- * @return Array of terms and index into the array for each document.
- * @throws IOException If any error occurs.
- */
- virtual FieldCacheAuto* getStringIndex (CL_NS(index)::IndexReader* reader, const TCHAR* field) = 0;
-
- /** Checks the internal cache for an appropriate entry, and if
- * none is found reads <code>field</code> to see if it contains integers, floats
- * or strings, and then calls one of the other methods in this class to get the
- * values. For string values, a FieldCache::StringIndex is returned. After
- * calling this method, there is an entry in the cache for both
- * type <code>AUTO</code> and the actual found type.
- * @param reader Used to get field values.
- * @param field Which field contains the values.
- * @return int32_t[], qreal[] or FieldCache::StringIndex.
- * @throws IOException If any error occurs.
- */
- virtual FieldCacheAuto* getAuto (CL_NS(index)::IndexReader* reader, const TCHAR* field) = 0;
-
- /** Checks the internal cache for an appropriate entry, and if none
- * is found reads the terms out of <code>field</code> and calls the given SortComparator
- * to get the sort values. A hit in the cache will happen if <code>reader</code>,
- * <code>field</code>, and <code>comparator</code> are the same (using <code>equals()</code>)
- * as a previous call to this method.
- * @param reader Used to get field values.
- * @param field Which field contains the values.
- * @param comparator Used to convert terms into something to sort by.
- * @return Array of sort objects, one for each document.
- * @throws IOException If any error occurs.
- */
- virtual FieldCacheAuto* getCustom (CL_NS(index)::IndexReader* reader, const TCHAR* field, SortComparator* comparator) = 0;
-};
-
-/** A class holding an AUTO field. In java lucene an Object
- is used, but we use this.
- contentType:
- 1 - integer array
- 2 - float array
- 3 - FieldCache::StringIndex object
- This class is also used when returning getInt, getFloat, etc
- because we have no way of returning the size of the array and this
- class can be used to determine the array size
-*/
-class FieldCacheAuto:LUCENE_BASE{
-public:
- enum{
- INT_ARRAY=1,
- FLOAT_ARRAY=2,
- STRING_INDEX=3,
- STRING_ARRAY=4,
- COMPARABLE_ARRAY=5,
- SORT_COMPARATOR=6,
- SCOREDOC_COMPARATOR=7
- };
-
- FieldCacheAuto(int32_t len, int32_t type);
- ~FieldCacheAuto();
- ///if contents should be deleted too, depending on type
- bool ownContents;
- int32_t contentLen; //number of items in the list
- uint8_t contentType;
- int32_t* intArray; //item 1
- qreal* floatArray; //item 2
- FieldCache::StringIndex* stringIndex; //item 3
- TCHAR** stringArray; //item 4
- CL_NS(util)::Comparable** comparableArray; //item 5
- SortComparator* sortComparator; //item 6
- ScoreDocComparator* scoreDocComparator; //item 7
-
-};
-
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.cpp
deleted file mode 100644
index 62052097e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.cpp
+++ /dev/null
@@ -1,529 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "FieldCacheImpl.h"
-
-CL_NS_USE(util)
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
-FieldCacheImpl::FieldCacheImpl():
- cache(false,true){
-}
-FieldCacheImpl::~FieldCacheImpl(){
- cache.clear();
-}
-
-FieldCacheImpl::FileEntry::FileEntry (const TCHAR* field, int32_t type) {
- this->field = CLStringIntern::intern(field CL_FILELINE);
- this->type = type;
- this->custom = NULL;
- this->_hashCode = 0;
- }
-
- /** Creates one of these objects for a custom comparator. */
- FieldCacheImpl::FileEntry::FileEntry (const TCHAR* field, SortComparatorSource* custom) {
- this->field = CLStringIntern::intern(field CL_FILELINE);
- this->type = SortField::CUSTOM;
- this->custom = custom;
- this->_hashCode = 0;
- }
- FieldCacheImpl::FileEntry::~FileEntry(){
- CLStringIntern::unintern(field);
- }
-
- size_t FieldCacheImpl::FileEntry::hashCode(){
- if ( _hashCode == 0 ){
- //todo: cache hashcode?
- size_t ret = Misc::thashCode(field);
- if ( custom != NULL )
- ret = ret ^ custom->hashCode();
- ret = ret ^ (type*7); //type with a seed
- _hashCode = ret;
- }
- return _hashCode;
- }
- int32_t FieldCacheImpl::FileEntry::compareTo(const FieldCacheImpl::FileEntry* other) const{
- if ( other->field == this->field ){
- if ( other->type == this->type ){
- if ( other->custom == NULL ){
- if ( this->custom == NULL )
- return 0; //both null
- else
- return 1;
- }else if ( this->custom == NULL )
- return -1;
- else if ( other->custom < this->custom )
- return -1;
- else if ( other->custom > this->custom )
- return 1;
- else
- return 0;
- }else if ( other->type > this->type )
- return 1;
- else
- return -1;
-
- }else
- return _tcscmp(other->field,this->field);
- }
-
- /** Two of these are equal iff they reference the same field and type. */
- /*bool FieldCacheImpl::FileEntry::equals (FileEntry* other) {
- if (other->field == field && other->type == type) {
- if (other->custom == NULL) {
- if (custom == NULL)
- return true;
- } else if (other->custom->equals (custom)) {
- return true;
- }
- }
- }*/
-
- /** Composes a hashcode based on the field and type. */
- /*size_t FieldCacheImpl::FileEntry::hashCode() {
- return field->hashCode() ^ type ^ (custom==NULL ? 0 : custom->hashCode());
- }*/
-
-
-
-
-
- /** See if an object is in the cache. */
- FieldCacheAuto* FieldCacheImpl::lookup (IndexReader* reader, const TCHAR* field, int32_t type) {
- FieldCacheAuto* ret = NULL;
- FileEntry* entry = _CLNEW FileEntry (field, type);
- {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- fieldcacheCacheReaderType* readerCache = cache.get(reader);
- if (readerCache != NULL)
- ret = readerCache->get (entry);
- _CLDELETE(entry);
- }
- return ret;
- }
-
-
- /** See if a custom object is in the cache. */
- FieldCacheAuto* FieldCacheImpl::lookup (IndexReader* reader, const TCHAR* field, SortComparatorSource* comparer) {
- FieldCacheAuto* ret = NULL;
- FileEntry* entry = _CLNEW FileEntry (field, comparer);
- {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- fieldcacheCacheReaderType* readerCache = cache.get(reader);
- if (readerCache != NULL)
- ret = readerCache->get (entry);
- _CLDELETE(entry);
-}
- return ret;
- }
-
- void FieldCacheImpl::closeCallback(CL_NS(index)::IndexReader* reader, void* fieldCacheImpl){
- FieldCacheImpl* fci = (FieldCacheImpl*)fieldCacheImpl;
- SCOPED_LOCK_MUTEX(fci->THIS_LOCK)
- fci->cache.remove(reader);
- }
-
- /** Put an object into the cache. */
- void FieldCacheImpl::store (IndexReader* reader, const TCHAR* field, int32_t type, FieldCacheAuto* value) {
- FileEntry* entry = _CLNEW FileEntry (field, type);
- {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- fieldcacheCacheReaderType* readerCache = cache.get(reader);
- if (readerCache == NULL) {
- readerCache = _CLNEW fieldcacheCacheReaderType;
- cache.put(reader,readerCache);
- reader->addCloseCallback(closeCallback, this);
- }
- readerCache->put (entry, value);
- //this is supposed to return the previous value, but it needs to be deleted!!!
- }
- }
-
- /** Put a custom object into the cache. */
- void FieldCacheImpl::store (IndexReader* reader, const TCHAR* field, SortComparatorSource* comparer, FieldCacheAuto* value) {
- FileEntry* entry = _CLNEW FileEntry (field, comparer);
- {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- fieldcacheCacheReaderType* readerCache = cache.get(reader);
- if (readerCache == NULL) {
- readerCache = _CLNEW fieldcacheCacheReaderType;
- cache.put(reader, readerCache);
- reader->addCloseCallback(FieldCacheImpl::closeCallback, this);
- }
- readerCache->put(entry, value);
- //this is supposed to return the previous value, but it needs to be deleted!!!
- }
- }
-
-
-
-
-
- // inherit javadocs
- FieldCacheAuto* FieldCacheImpl::getInts (IndexReader* reader, const TCHAR* field) {
- field = CLStringIntern::intern(field CL_FILELINE);
- FieldCacheAuto* ret = lookup (reader, field, SortField::INT);
- if (ret == NULL) {
- int32_t retLen = reader->maxDoc();
- int32_t* retArray = _CL_NEWARRAY(int32_t,retLen);
- memset(retArray,0,sizeof(int32_t)*retLen);
- if (retLen > 0) {
- TermDocs* termDocs = reader->termDocs();
-
- Term* term = _CLNEW Term (field, LUCENE_BLANK_STRING, false);
- TermEnum* termEnum = reader->terms (term);
- _CLDECDELETE(term);
- try {
- if (termEnum->term(false) == NULL) {
- _CLTHROWA(CL_ERR_Runtime,"no terms in field"); //todo: add detailed error: + field);
- }
- do {
- Term* term = termEnum->term(false);
- if (term->field() != field)
- break;
-
- TCHAR* end;
- int32_t termval = (int32_t)_tcstoi64(term->text(), &end, 10);
- termDocs->seek (termEnum);
- while (termDocs->next()) {
- retArray[termDocs->doc()] = termval;
- }
- } while (termEnum->next());
- } _CLFINALLY(
- termDocs->close();
- _CLDELETE(termDocs);
- termEnum->close();
- _CLDELETE(termEnum);
- )
- }
-
- FieldCacheAuto* fa = _CLNEW FieldCacheAuto(retLen,FieldCacheAuto::INT_ARRAY);
- fa->intArray = retArray;
-
- store (reader, field, SortField::INT, fa);
- CLStringIntern::unintern(field);
- return fa;
- }
- CLStringIntern::unintern(field);
- return ret;
- }
-
- // inherit javadocs
- FieldCacheAuto* FieldCacheImpl::getFloats (IndexReader* reader, const TCHAR* field){
- field = CLStringIntern::intern(field CL_FILELINE);
- FieldCacheAuto* ret = lookup (reader, field, SortField::FLOAT);
- if (ret == NULL) {
- int32_t retLen = reader->maxDoc();
- qreal* retArray = _CL_NEWARRAY(qreal,retLen);
- memset(retArray,0,sizeof(qreal)*retLen);
- if (retLen > 0) {
- TermDocs* termDocs = reader->termDocs();
-
- Term* term = _CLNEW Term (field, LUCENE_BLANK_STRING, false);
- TermEnum* termEnum = reader->terms (term);
- _CLDECDELETE(term);
-
- try {
- if (termEnum->term(false) == NULL) {
- _CLTHROWA(CL_ERR_Runtime,"no terms in field "); //todo: make richer error + field);
- }
- do {
- Term* term = termEnum->term(false);
- if (term->field() != field)
- break;
-
- TCHAR* tmp;
- qreal termval = _tcstod(term->text(),&tmp);
- termDocs->seek (termEnum);
- while (termDocs->next()) {
- retArray[termDocs->doc()] = termval;
- }
- } while (termEnum->next());
- } _CLFINALLY(
- termDocs->close();
- _CLDELETE(termDocs);
- termEnum->close();
- _CLDELETE(termEnum);
- )
- }
-
- FieldCacheAuto* fa = _CLNEW FieldCacheAuto(retLen,FieldCacheAuto::FLOAT_ARRAY);
- fa->floatArray = retArray;
-
- store (reader, field, SortField::FLOAT, fa);
- CLStringIntern::unintern(field);
- return fa;
- }
- CLStringIntern::unintern(field);
- return ret;
- }
-
-
- // inherit javadocs
- FieldCacheAuto* FieldCacheImpl::getStrings (IndexReader* reader, const TCHAR* field){
- //todo: this is not really used, i think?
- field = CLStringIntern::intern(field CL_FILELINE);
- FieldCacheAuto* ret = lookup (reader, field, SortField::STRING);
- if (ret == NULL) {
- int32_t retLen = reader->maxDoc();
- TCHAR** retArray = _CL_NEWARRAY(TCHAR*,retLen+1);
- memset(retArray,0,sizeof(TCHAR*)*(retLen+1));
- if (retLen > 0) {
- TermDocs* termDocs = reader->termDocs();
-
- Term* term = _CLNEW Term (field, LUCENE_BLANK_STRING, false);
- TermEnum* termEnum = reader->terms (term);
- _CLDECDELETE(term);
-
- try {
- if (termEnum->term(false) == NULL) {
- _CLTHROWA(CL_ERR_Runtime,"no terms in field "); //todo: extend to + field);
- }
- do {
- Term* term = termEnum->term(false);
- if (term->field() != field)
- break;
- const TCHAR* termval = term->text();
- termDocs->seek (termEnum);
- while (termDocs->next()) {
- retArray[termDocs->doc()] = STRDUP_TtoT(termval); //todo: any better way of doing this???
- }
- } while (termEnum->next());
- } _CLFINALLY(
- retArray[retLen]=NULL;
- termDocs->close();
- _CLDELETE(termDocs);
- termEnum->close();
- _CLDELETE(termEnum);
- )
- }
-
-
- FieldCacheAuto* fa = _CLNEW FieldCacheAuto(retLen,FieldCacheAuto::STRING_ARRAY);
- fa->stringArray = retArray;
- fa->ownContents=true;
- store (reader, field, SortField::STRING, fa);
- CLStringIntern::unintern(field);
- return fa;
- }
- CLStringIntern::unintern(field);
- return ret;
- }
-
- // inherit javadocs
- FieldCacheAuto* FieldCacheImpl::getStringIndex (IndexReader* reader, const TCHAR* field){
- field = CLStringIntern::intern(field CL_FILELINE);
- FieldCacheAuto* ret = lookup (reader, field, STRING_INDEX);
- int32_t t = 0; // current term number
- if (ret == NULL) {
- int32_t retLen = reader->maxDoc();
- int32_t* retArray = _CL_NEWARRAY(int32_t,retLen);
- memset(retArray,0,sizeof(int32_t)*retLen);
-
- TCHAR** mterms = _CL_NEWARRAY(TCHAR*,retLen+2);
- mterms[0]=NULL;
- if ( retLen > 0 ) {
- TermDocs* termDocs = reader->termDocs();
-
- Term* term = _CLNEW Term (field, LUCENE_BLANK_STRING, false);
- TermEnum* termEnum = reader->terms (term);
- _CLDECDELETE(term);
-
-
- CND_PRECONDITION(t+1 <= retLen, "t out of bounds");
-
- // an entry for documents that have no terms in this field
- // should a document with no terms be at top or bottom?
- // this puts them at the top - if it is changed, FieldDocSortedHitQueue
- // needs to change as well.
- mterms[t++] = NULL;
-
- try {
- if (termEnum->term(false) == NULL) {
- _CLTHROWA(CL_ERR_Runtime,"no terms in field"); //todo: make rich message " + field);
- }
- do {
- Term* term = termEnum->term(false);
- if (term->field() != field)
- break;
-
- // store term text
- // we expect that there is at most one term per document
- if (t >= retLen+1)
- _CLTHROWA(CL_ERR_Runtime,"there are more terms than documents in field"); //todo: rich error \"" + field + "\"");
- mterms[t] = STRDUP_TtoT(term->text());
-
- termDocs->seek (termEnum);
- while (termDocs->next()) {
- retArray[termDocs->doc()] = t;
- }
-
- t++;
- } while (termEnum->next());
- CND_PRECONDITION(t<retLen+2,"t out of bounds");
- mterms[t] = NULL;
- } _CLFINALLY(
- termDocs->close();
- _CLDELETE(termDocs);
- termEnum->close();
- _CLDELETE(termEnum);
- );
-
- if (t == 0) {
- // if there are no terms, make the term array
- // have a single NULL entry
- _CLDELETE_ARRAY(mterms);
- mterms = _CL_NEWARRAY(TCHAR*,1); //todo: delete old mterms?
- mterms[0]=NULL;
- } else if (t < retLen) { //todo: check, was mterms.length
- // if there are less terms than documents,
- // trim off the dead array space
- //const TCHAR** terms = _CL_NEWARRAY(TCHAR,t);
- //System.arraycopy (mterms, 0, terms, 0, t);
- //mterms = terms;
-
- //we simply shorten the length of the array...
-
- }
- }
- FieldCache::StringIndex* value = _CLNEW FieldCache::StringIndex (retArray, mterms,t);
-
- FieldCacheAuto* fa = _CLNEW FieldCacheAuto(retLen,FieldCacheAuto::STRING_INDEX);
- fa->stringIndex = value;
- fa->ownContents=true;
- store (reader, field, STRING_INDEX, fa);
- CLStringIntern::unintern(field);
- return fa;
- }
- CLStringIntern::unintern(field);
- return ret;
- }
-
- // inherit javadocs
- FieldCacheAuto* FieldCacheImpl::getAuto (IndexReader* reader, const TCHAR* field) {
- field = CLStringIntern::intern(field CL_FILELINE);
- FieldCacheAuto* ret = lookup (reader, field, SortField::AUTO);
- if (ret == NULL) {
- Term* term = _CLNEW Term (field, LUCENE_BLANK_STRING, false);
- TermEnum* enumerator = reader->terms (term);
- _CLDECDELETE(term);
-
- try {
- Term* term = enumerator->term(false);
- if (term == NULL) {
- _CLTHROWA(CL_ERR_Runtime,"no terms in field - cannot determine sort type"); //todo: make rich error: " + field + "
- }
- if (term->field() == field) {
- const TCHAR* termtext = term->text();
- size_t termTextLen = term->textLength();
-
- bool isint=true;
- for ( size_t i=0;i<termTextLen;i++ ){
- if ( _tcschr(_T("0123456789 +-"),termtext[i]) == NULL ){
- isint = false;
- break;
- }
- }
- if ( isint )
- ret = getInts (reader, field);
- else{
- bool isfloat=true;
-
- int32_t searchLen = termTextLen;
- if ( termtext[termTextLen-1] == 'f' )
- searchLen--;
- for ( int32_t i=0;i<searchLen;i++ ){
- if ( _tcschr(_T("0123456789 Ee.+-"),termtext[i]) == NULL ){
- isfloat = false;
- break;
- }
- }
- if ( isfloat )
- ret = getFloats (reader, field);
- else{
- ret = getStringIndex (reader, field);
- }
- }
-
- if (ret != NULL) {
- store (reader, field, SortField::AUTO, ret);
- }
- } else {
- _CLTHROWA (CL_ERR_Runtime,"field does not appear to be indexed"); //todo: make rich error: \"" + field + "\"
- }
- } _CLFINALLY( enumerator->close(); _CLDELETE(enumerator) );
-
- }
- CLStringIntern::unintern(field);
- return ret;
- }
-
-
- // inherit javadocs
- FieldCacheAuto* FieldCacheImpl::getCustom (IndexReader* reader, const TCHAR* field, SortComparator* comparator){
- field = CLStringIntern::intern(field CL_FILELINE);
-
- FieldCacheAuto* ret = lookup (reader, field, comparator);
- if (ret == NULL) {
- int32_t retLen = reader->maxDoc();
- Comparable** retArray = _CL_NEWARRAY(Comparable*,retLen);
- memset(retArray,0,sizeof(Comparable*)*retLen);
- if (retLen > 0) {
- TermDocs* termDocs = reader->termDocs();
- TermEnum* termEnum = reader->terms ();
-
- try {
- if (termEnum->term(false) == NULL) {
- _CLTHROWA(CL_ERR_Runtime,"no terms in field "); //todo: make rich error + field);
- }
- do {
- Term* term = termEnum->term(false);
- if (term->field() != field)
- break;
- Comparable* termval = comparator->getComparable (term->text());
- termDocs->seek (termEnum);
- while (termDocs->next()) {
- retArray[termDocs->doc()] = termval;
- }
- } while (termEnum->next());
- } _CLFINALLY (
- termDocs->close();
- _CLDELETE(termDocs);
- termEnum->close();
- _CLDELETE(termEnum);
- );
- }
-
- FieldCacheAuto* fa = _CLNEW FieldCacheAuto(retLen,FieldCacheAuto::COMPARABLE_ARRAY);
- fa->comparableArray = retArray;
- fa->ownContents=true;
- store (reader, field, SortField::CUSTOM, fa);
- CLStringIntern::unintern(field);
- return fa;
- }
- CLStringIntern::unintern(field);
- return ret;
- }
-
-
- FieldCacheImpl::fieldcacheCacheReaderType::fieldcacheCacheReaderType(){
- setDeleteKey(false);
- setDeleteValue(false);
- }
- FieldCacheImpl::fieldcacheCacheReaderType::~fieldcacheCacheReaderType(){
- iterator itr = begin();
- while ( itr != end() ){
- FileEntry* f = itr->first;
- if ( f->getType() != SortField::AUTO )
- _CLDELETE( itr->second );
- _CLDELETE( f );
- ++itr;
- }
- clear();
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.h
deleted file mode 100644
index ac3c4cabc..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldCacheImpl.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FieldCacheImpl_
-#define _lucene_search_FieldCacheImpl_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "FieldCache.h"
-#include "Sort.h"
-
-
-CL_NS_DEF(search)
-
-
-/**
- * Expert: The default cache implementation, storing all values in memory.
- *
- */
-class FieldCacheImpl: public FieldCache {
-public:
- DEFINE_MUTEX(THIS_LOCK)
-
- /** Expert: Every key in the internal cache is of this type. */
- class FileEntry:LUCENE_BASE {
- const TCHAR* field; // which Field
- int32_t type; // which SortField type
- SortComparatorSource* custom; // which custom comparator
- size_t _hashCode;
- public:
- /** Creates one of these objects. */
- FileEntry (const TCHAR* field, int32_t type);
-
- /** Creates one of these objects for a custom comparator. */
- FileEntry (const TCHAR* field, SortComparatorSource* custom);
- ~FileEntry();
-
- int32_t getType() const{ return type; }
-
- /** Two of these are equal iff they reference the same field and type. */
- bool equals (FileEntry* other) const;
-
- /** Composes a hashcode based on the field and type. */
- size_t hashCode();
-
- int32_t compareTo(const FileEntry* other) const;
-
- class Compare:LUCENE_BASE, public CL_NS(util)::Compare::_base //<Term*>
- {
- public:
- bool operator()( FileEntry* f1, FileEntry* f2 ) const{
- return ( f1->compareTo(f2) < 0 );
- }
- size_t operator()( FileEntry* t ) const{
- return t->hashCode();
- }
- };
- class Equals:LUCENE_BASE, public CL_NS(util)::Compare::_base //<Term*>
- {
- public:
- bool operator()( FileEntry* f1, FileEntry* f2 ) const{
- return ( f1->compareTo(f2) == 0 );
- }
- };
- };
-
- FieldCacheImpl();
- ~FieldCacheImpl();
-private:
-
- ///the type that is stored in the field cache. can't use a typedef because
- ///the decorated name would become too long
- class fieldcacheCacheReaderType: public CL_NS(util)::CLHashMap<FileEntry*,
- FieldCacheAuto*,
- FileEntry::Compare,
- FileEntry::Equals,
- CL_NS(util)::Deletor::Object<FileEntry>,
- CL_NS(util)::Deletor::Object<FieldCacheAuto> >{
- public:
- fieldcacheCacheReaderType();
- ~fieldcacheCacheReaderType();
- };
-
- //note: typename gets too long if using cacheReaderType as a typename
- typedef CL_NS(util)::CLHashMap<CL_NS(index)::IndexReader*,
- fieldcacheCacheReaderType*,
- CL_NS(util)::Compare::Void<CL_NS(index)::IndexReader>,
- CL_NS(util)::Equals::Void<CL_NS(index)::IndexReader>,
- CL_NS(util)::Deletor::Object<CL_NS(index)::IndexReader>,
- CL_NS(util)::Deletor::Object<fieldcacheCacheReaderType> > fieldcacheCacheType;
-
- /** The internal cache. Maps FileEntry to array of interpreted term values. **/
- //todo: make indexreader remove itself from here when the reader is shut
- fieldcacheCacheType cache;
-
- /** See if an object is in the cache. */
- FieldCacheAuto* lookup (CL_NS(index)::IndexReader* reader, const TCHAR* field, int32_t type) ;
-
- /** See if a custom object is in the cache. */
- FieldCacheAuto* lookup (CL_NS(index)::IndexReader* reader, const TCHAR* field, SortComparatorSource* comparer);
-
- /** Put an object into the cache. */
- void store (CL_NS(index)::IndexReader* reader, const TCHAR* field, int32_t type, FieldCacheAuto* value);
-
- /** Put a custom object into the cache. */
- void store (CL_NS(index)::IndexReader* reader, const TCHAR* field, SortComparatorSource* comparer, FieldCacheAuto* value);
-
-public:
-
- // inherit javadocs
- FieldCacheAuto* getInts (CL_NS(index)::IndexReader* reader, const TCHAR* field);
-
- // inherit javadocs
- FieldCacheAuto* getFloats (CL_NS(index)::IndexReader* reader, const TCHAR* field);
-
- // inherit javadocs
- FieldCacheAuto* getStrings (CL_NS(index)::IndexReader* reader, const TCHAR* field);
-
- // inherit javadocs
- FieldCacheAuto* getStringIndex (CL_NS(index)::IndexReader* reader, const TCHAR* field);
-
- // inherit javadocs
- FieldCacheAuto* getAuto (CL_NS(index)::IndexReader* reader, const TCHAR* field);
-
- // inherit javadocs
- FieldCacheAuto* getCustom (CL_NS(index)::IndexReader* reader, const TCHAR* field, SortComparator* comparator);
-
-
- /**
- * Callback for when IndexReader closes. This causes
- * any cache to be removed for the specified reader.
- */
- static void closeCallback(CL_NS(index)::IndexReader* reader, void* fieldCacheImpl);
-};
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDoc.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDoc.h
deleted file mode 100644
index 6ce915acf..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDoc.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FieldDoc_
-#define _lucene_search_FieldDoc_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "ScoreDoc.h"
-
-CL_NS_DEF(search)
-
-/**
- * Expert: A ScoreDoc which also contains information about
- * how to sort the referenced document. In addition to the
- * document number and score, this object contains an array
- * of values for the document from the field(s) used to sort.
- * For example, if the sort criteria was to sort by fields
- * "a", "b" then "c", the <code>fields</code> object array
- * will have three elements, corresponding respectively to
- * the term values for the document in fields "a", "b" and "c".
- * The class of each element in the array will be either
- * Integer, Float or String depending on the type of values
- * in the terms of each field.
- *
- * @see ScoreDoc
- * @see TopFieldDocs
- */
-class FieldDoc: public ScoreDoc {
-public:
-
- /** Expert: The values which are used to sort the referenced document.
- * The order of these will match the original sort criteria given by a
- * Sort object. Each Object will be either an Integer, Float or String,
- * depending on the type of values in the terms of the original field.
- * @see Sort
- * @see Searchable#search(Query,Filter,int32_t,Sort)
- */
- CL_NS(util)::Comparable** fields;
-
- /** Expert: Creates one of these objects with empty sort information. */
- FieldDoc (int32_t doc, qreal score):
- ScoreDoc(doc,score) {
- fields=NULL;
- }
-
- /** Expert: Creates one of these objects with the given sort information. */
- FieldDoc (int32_t doc, qreal score, CL_NS(util)::Comparable** fields):
- ScoreDoc(doc,score)
- {
- this->fields = fields;
- }
-
- ~FieldDoc(){
- if ( fields != NULL ){
- for ( int i=0;fields[i]!=NULL;i++ )
- _CLDELETE(fields[i]);
- _CLDELETE_ARRAY(fields);
- }
- }
-};
-
-CL_NS_END
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.cpp
deleted file mode 100644
index 0a5210903..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "FieldDocSortedHitQueue.h"
-
-
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
-
-FieldDoc::FieldDoc (int32_t doc, qreal score)
-{
- this->scoreDoc.doc = doc;
- this->scoreDoc.score = score;
- fields=NULL;
-}
-
-FieldDoc::FieldDoc (int32_t doc, qreal score, CL_NS(util)::Comparable** fields)
-{
- this->scoreDoc.doc = doc;
- this->scoreDoc.score = score;
- this->fields = fields;
-}
-
-FieldDoc::~FieldDoc(){
- if ( fields != NULL ){
- for ( int i=0;fields[i]!=NULL;i++ )
- _CLDELETE(fields[i]);
- _CLDELETE_ARRAY(fields);
- }
-}
-
-
-
-FieldDocSortedHitQueue::FieldDocSortedHitQueue (SortField** fields, int32_t size) {
- this->fields = fields;
- _countsize();
- //this->collators = hasCollators (fields);
- initialize (size,true);
-}
-
-bool FieldDocSortedHitQueue::lessThan (FieldDoc* docA, FieldDoc* docB) {
- int32_t n = fieldsLen;
- int32_t c = 0;
- qreal f1,f2,r1,r2;
- int32_t i1,i2;
- const TCHAR *s1, *s2;
-
- for (int32_t i=0; i<n && c==0; ++i) {
- int32_t type = fields[i]->getType();
- if (fields[i]->getReverse()) {
- switch (type) {
- case SortField::DOCSCORE:
- r1 = __REINTERPRET_CAST(Compare::Float*, docA->fields[i])->getValue();
- r2 = __REINTERPRET_CAST(Compare::Float*, docB->fields[i])->getValue();
- if (r1 < r2) c = -1;
- if (r1 > r2) c = 1;
- break;
- case SortField::DOC:
- case SortField::INT:
- i1 = __REINTERPRET_CAST(Compare::Int32*, docA->fields[i])->getValue();
- i2 = __REINTERPRET_CAST(Compare::Int32*, docB->fields[i])->getValue();
- if (i1 > i2) c = -1;
- if (i1 < i2) c = 1;
- break;
- case SortField::STRING:
- s1 = __REINTERPRET_CAST(Compare::TChar*, docA->fields[i])->getValue();
- s2 = __REINTERPRET_CAST(Compare::TChar*, docB->fields[i])->getValue();
- if (s2 == NULL) c = -1; // could be NULL if there are
- else if (s1 == NULL) c = 1; // no terms in the given field
- else c = _tcscmp(s2,s1); //else if (fields[i].getLocale() == NULL) {
-
- /*todo: collators not impl
- } else {
- c = collators[i].compare (s2, s1);
- }*/
- break;
- case SortField::FLOAT:
- f1 = __REINTERPRET_CAST(Compare::Float*, docA->fields[i])->getValue();
- f2 = __REINTERPRET_CAST(Compare::Float*, docB->fields[i])->getValue();
- if (f1 > f2) c = -1;
- if (f1 < f2) c = 1;
- break;
- case SortField::CUSTOM:
- c = docB->fields[i]->compareTo (docA->fields[i]);
- break;
- case SortField::AUTO:
- // we cannot handle this - even if we determine the type of object (qreal or
- // Integer), we don't necessarily know how to compare them (both SCORE and
- // qreal both contain floats, but are sorted opposite of each other). Before
- // we get here, each AUTO should have been replaced with its actual value.
- _CLTHROWA (CL_ERR_Runtime,"FieldDocSortedHitQueue cannot use an AUTO SortField");
- default:
- _CLTHROWA (CL_ERR_Runtime, "invalid SortField type"); //todo: rich error... : "+type);
- }
- } else {
- switch (type) {
- case SortField::DOCSCORE:
- r1 = __REINTERPRET_CAST(Compare::Float*, docA->fields[i])->getValue();
- r2 = __REINTERPRET_CAST(Compare::Float*, docB->fields[i])->getValue();
- if (r1 > r2) c = -1;
- if (r1 < r2) c = 1;
- break;
- case SortField::DOC:
- case SortField::INT:
- i1 = __REINTERPRET_CAST(Compare::Int32*, docA->fields[i])->getValue();
- i2 = __REINTERPRET_CAST(Compare::Int32*, docB->fields[i])->getValue();
- if (i1 < i2) c = -1;
- if (i1 > i2) c = 1;
- break;
- case SortField::STRING:
- s1 = __REINTERPRET_CAST(Compare::TChar*, docA->fields[i])->getValue();
- s2 = __REINTERPRET_CAST(Compare::TChar*, docB->fields[i])->getValue();
- // NULL values need to be sorted first, because of how FieldCache.getStringIndex()
- // works - in that routine, any documents without a value in the given field are
- // put first.
- if (s1 == NULL) c = -1; // could be NULL if there are
- else if (s2 == NULL) c = 1; // no terms in the given field
- else c = _tcscmp(s1,s2); //else if (fields[i].getLocale() == NULL) {
-
- /* todo: collators not implemented } else {
- c = collators[i].compare (s1, s2);
- }*/
- break;
- case SortField::FLOAT:
- f1 = __REINTERPRET_CAST(Compare::Float*, docA->fields[i])->getValue();
- f2 = __REINTERPRET_CAST(Compare::Float*, docB->fields[i])->getValue();
- if (f1 < f2) c = -1;
- if (f1 > f2) c = 1;
- break;
- case SortField::CUSTOM:
- c = docA->fields[i]->compareTo (docB->fields[i]);
- break;
- case SortField::AUTO:
- // we cannot handle this - even if we determine the type of object (qreal or
- // Integer), we don't necessarily know how to compare them (both SCORE and
- // qreal both contain floats, but are sorted opposite of each other). Before
- // we get here, each AUTO should have been replaced with its actual value.
- _CLTHROWA (CL_ERR_Runtime,"FieldDocSortedHitQueue cannot use an AUTO SortField");
- default:
- _CLTHROWA (CL_ERR_Runtime,"invalid SortField type"); //todo: rich error... : "+type);
- }
- }
- }
- return c > 0;
-}
-
-void FieldDocSortedHitQueue::setFields (SortField** fields) {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if (this->fields == NULL) {
- this->fields = fields;
- _countsize();
- //this->collators = hasCollators (fields);
- }else if ( fields == NULL )
- this->fields = NULL;
-}
-
-FieldDocSortedHitQueue::~FieldDocSortedHitQueue(){
- if ( fields != NULL ){
- for ( int i=0;fields[i]!=NULL;i++ )
- _CLDELETE(fields[i]);
- _CLDELETE_ARRAY(fields);
- }
-}
-
-CL_NS_END
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.h
deleted file mode 100644
index 5a46b3b65..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldDocSortedHitQueue.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FieldDocSortedHitQueue_
-#define _lucene_search_FieldDocSortedHitQueue_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Sort.h"
-#include "CLucene/util/PriorityQueue.h"
-
-CL_NS_DEF(search)
-
-/**
- * Expert: A ScoreDoc which also contains information about
- * how to sort the referenced document. In addition to the
- * document number and score, this object contains an array
- * of values for the document from the field(s) used to sort.
- * For example, if the sort criteria was to sort by fields
- * "a", "b" then "c", the <code>fields</code> object array
- * will have three elements, corresponding respectively to
- * the term values for the document in fields "a", "b" and "c".
- * The class of each element in the array will be either
- * Integer, Float or String depending on the type of values
- * in the terms of each field.
- *
- * @see ScoreDoc
- * @see TopFieldDocs
- */
-class FieldDoc: LUCENE_BASE {
-public:
- //FieldDoc did inherit from ScoreDoc, but now we make the scoredoc a member
- struct ScoreDoc scoreDoc;
-
- /** Expert: The values which are used to sort the referenced document.
- * The order of these will match the original sort criteria given by a
- * Sort object. Each Object will be either an Integer, Float or String,
- * depending on the type of values in the terms of the original field.
- * @see Sort
- * @see Searchable#search(Query,Filter,int32_t,Sort)
- */
- CL_NS(util)::Comparable** fields;
-
- /** Expert: Creates one of these objects with empty sort information. */
- FieldDoc (int32_t doc, qreal score);
- /** Expert: Creates one of these objects with the given sort information. */
- FieldDoc (int32_t doc, qreal score, CL_NS(util)::Comparable** fields);
- ~FieldDoc();
-};
-
-/**
- * Expert: Collects sorted results from Searchable's and collates them.
- * The elements put into this queue must be of type FieldDoc.
- */
-class FieldDocSortedHitQueue:
- public CL_NS(util)::PriorityQueue<FieldDoc*,CL_NS(util)::Deletor::Object<FieldDoc> >
-{
-private:
- DEFINE_MUTEX(THIS_LOCK)
-
- // this cannot contain AUTO fields - any AUTO fields should
- // have been resolved by the time this class is used.
- SortField** fields;
- int32_t fieldsLen;
-
- void _countsize(){
- fieldsLen=0;
- while(fields[fieldsLen]!=NULL)
- fieldsLen++;
- }
-
- // used in the case where the fields are sorted by locale
- // based strings
- //todo: not implemented in clucene because locales has not been implemented
- //Collator[] collators; //volatile
-
-public:
- /**
- * Creates a hit queue sorted by the given list of fields.
- * @param fields Field names, in priority order (highest priority first).
- * @param size The number of hits to retain. Must be greater than zero.
- */
- FieldDocSortedHitQueue (SortField** fields, int32_t size);
- ~FieldDocSortedHitQueue();
-
-
- /**
- * Allows redefinition of sort fields if they are <code>NULL</code>.
- * This is to handle the case using ParallelMultiSearcher where the
- * original list contains AUTO and we don't know the actual sort
- * type until the values come back. The fields can only be set once.
- * This method is thread safe.
- * @param fields
- */
- void setFields (SortField** fields);
-
- /** Returns the fields being used to sort. */
- SortField** getFields() {
- return fields;
- }
-
- /** Returns an array of collators, possibly <code>NULL</code>. The collators
- * correspond to any SortFields which were given a specific locale.
- * @param fields Array of sort fields.
- * @return Array, possibly <code>NULL</code>.
-
- private Collator[] hasCollators (SortField[] fields) {
- if (fields == NULL) return NULL;
- Collator[] ret = new Collator[fields.length];
- for (int32_t i=0; i<fields.length; ++i) {
- Locale locale = fields[i].getLocale();
- if (locale != NULL)
- ret[i] = Collator.getInstance (locale);
- }
- return ret;
- }*/
-
-protected:
- /**
- * Returns whether <code>a</code> is less relevant than <code>b</code>.
- * @param a FieldDoc
- * @param b FieldDoc
- * @return <code>true</code> if document <code>a</code> should be sorted after document <code>b</code>.
- */
- bool lessThan (FieldDoc* docA, FieldDoc* docB);
-};
-
-
-/**
-* Expert: Returned by low-level sorted search implementations.
-*
-* @see Searchable#search(Query,Filter,int32_t,Sort)
-*/
-class TopFieldDocs: public TopDocs {
-public:
- /// The fields which were used to sort results by.
- SortField** fields;
-
- FieldDoc** fieldDocs;
-
- /** Creates one of these objects.
- * @param totalHits Total number of hits for the query.
- * @param fieldDocs The top hits for the query.
- * @param scoreDocs The top hits for the query.
- * @param scoreDocsLen Length of fieldDocs and scoreDocs
- * @param fields The sort criteria used to find the top hits.
- */
- TopFieldDocs (int32_t totalHits, FieldDoc** fieldDocs, int32_t scoreDocsLen, SortField** fields);
- ~TopFieldDocs();
-};
-
-CL_NS_END
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.cpp
deleted file mode 100644
index 04f45e931..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "FieldSortedHitQueue.h"
-#include "FieldDocSortedHitQueue.h"
-#include "Compare.h"
-
-CL_NS_USE(util)
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
-FieldSortedHitQueue::hitqueueCacheType FieldSortedHitQueue::Comparators(false,true);
-
-FieldSortedHitQueue::FieldSortedHitQueue (IndexReader* reader, SortField** _fields, int32_t size):
- fieldsLen(0),
- maxscore(1.0f)
-{
- while ( _fields[fieldsLen] != 0 )
- fieldsLen++;
-
- comparators = _CL_NEWARRAY(ScoreDocComparator*,fieldsLen+1);
- SortField** tmp = _CL_NEWARRAY(SortField*,fieldsLen+1);
- for (int32_t i=0; i<fieldsLen; ++i) {
- const TCHAR* fieldname = _fields[i]->getField();
- //todo: fields[i].getLocale(), not implemented
- comparators[i] = getCachedComparator (reader, fieldname, _fields[i]->getType(), _fields[i]->getFactory());
- tmp[i] = _CLNEW SortField (fieldname, comparators[i]->sortType(), _fields[i]->getReverse());
- }
- comparatorsLen = fieldsLen;
- comparators[fieldsLen]=NULL;
- tmp[fieldsLen] = NULL;
- this->fields = tmp;
-
- initialize(size,true);
-}
-
-
-bool FieldSortedHitQueue::lessThan (FieldDoc* docA, FieldDoc* docB) {
- // keep track of maximum score
- if (docA->scoreDoc.score > maxscore) maxscore = docA->scoreDoc.score;
- if (docB->scoreDoc.score > maxscore) maxscore = docB->scoreDoc.score;
-
- // run comparators
- int32_t c = 0;
- for ( int32_t i=0; c==0 && i<comparatorsLen; ++i ) {
- c = (fields[i]->getReverse()) ? comparators[i]->compare (&docB->scoreDoc, &docA->scoreDoc) :
- comparators[i]->compare (&docA->scoreDoc, &docB->scoreDoc);
- }
- // avoid random sort order that could lead to duplicates (bug #31241):
- if (c == 0)
- return docA->scoreDoc.doc > docB->scoreDoc.doc;
- return c > 0;
-}
-
-
-//static
-ScoreDocComparator* FieldSortedHitQueue::comparatorString (IndexReader* reader, const TCHAR* field) {
- //const TCHAR* field = CLStringIntern::intern(fieldname CL_FILELINE);
- FieldCacheAuto* fa = FieldCache::DEFAULT->getStringIndex (reader, field);
- //CLStringIntern::unintern(field);
-
- CND_PRECONDITION(fa->contentType==FieldCacheAuto::STRING_INDEX,"Content type is incorrect");
- fa->ownContents = false;
- return _CLNEW ScoreDocComparators::String(fa->stringIndex, fa->contentLen);
-}
-
-//static
-ScoreDocComparator* FieldSortedHitQueue::comparatorInt (IndexReader* reader, const TCHAR* field){
- //const TCHAR* field = CLStringIntern::intern(fieldname CL_FILELINE);
- FieldCacheAuto* fa = FieldCache::DEFAULT->getInts (reader, field);
- //CLStringIntern::unintern(field);
-
- CND_PRECONDITION(fa->contentType==FieldCacheAuto::INT_ARRAY,"Content type is incorrect");
- return _CLNEW ScoreDocComparators::Int32(fa->intArray, fa->contentLen);
- }
-
-//static
- ScoreDocComparator* FieldSortedHitQueue::comparatorFloat (IndexReader* reader, const TCHAR* field) {
- //const TCHAR* field = CLStringIntern::intern(fieldname CL_FILELINE);
- FieldCacheAuto* fa = FieldCache::DEFAULT->getFloats (reader, field);
- //CLStringIntern::unintern(field);
-
- CND_PRECONDITION(fa->contentType==FieldCacheAuto::FLOAT_ARRAY,"Content type is incorrect");
- return _CLNEW ScoreDocComparators::Float (fa->floatArray, fa->contentLen);
- }
-//static
- ScoreDocComparator* FieldSortedHitQueue::comparatorAuto (IndexReader* reader, const TCHAR* field){
- //const TCHAR* field = CLStringIntern::intern(fieldname CL_FILELINE);
- FieldCacheAuto* fa = FieldCache::DEFAULT->getAuto (reader, field);
- //CLStringIntern::unintern(field);
-
- if (fa->contentType == FieldCacheAuto::STRING_INDEX ) {
- return comparatorString (reader, field);
- } else if (fa->contentType == FieldCacheAuto::INT_ARRAY) {
- return comparatorInt (reader, field);
- } else if (fa->contentType == FieldCacheAuto::FLOAT_ARRAY) {
- return comparatorFloat (reader, field);
- } else if (fa->contentType == FieldCacheAuto::STRING_ARRAY) {
- return comparatorString (reader, field);
- } else {
- _CLTHROWA(CL_ERR_Runtime, "unknown data type in field"); //todo: rich error information: '"+field+"'");
- }
- }
-
-
- //todo: Locale locale, not implemented yet
- ScoreDocComparator* FieldSortedHitQueue::getCachedComparator (IndexReader* reader, const TCHAR* fieldname, int32_t type, SortComparatorSource* factory){
- if (type == SortField::DOC)
- return ScoreDocComparator::INDEXORDER;
- if (type == SortField::DOCSCORE)
- return ScoreDocComparator::RELEVANCE;
- ScoreDocComparator* comparator = lookup (reader, fieldname, type, factory);
- if (comparator == NULL) {
- switch (type) {
- case SortField::AUTO:
- comparator = comparatorAuto (reader, fieldname);
- break;
- case SortField::INT:
- comparator = comparatorInt (reader, fieldname);
- break;
- case SortField::FLOAT:
- comparator = comparatorFloat (reader, fieldname);
- break;
- case SortField::STRING:
- //if (locale != NULL)
- // comparator = comparatorStringLocale (reader, fieldname, locale);
- //else
- comparator = comparatorString (reader, fieldname);
- break;
- case SortField::CUSTOM:
- comparator = factory->newComparator (reader, fieldname);
- break;
- default:
- _CLTHROWA(CL_ERR_Runtime,"unknown field type");
- //todo: extend error
- //throw _CLNEW RuntimeException ("unknown field type: "+type);
- }
- store (reader, fieldname, type, factory, comparator);
- }
- return comparator;
- }
-
-
- FieldDoc* FieldSortedHitQueue::fillFields (FieldDoc* doc) const{
- int32_t n = comparatorsLen;
- Comparable** fields = _CL_NEWARRAY(Comparable*,n+1);
- for (int32_t i=0; i<n; ++i)
- fields[i] = comparators[i]->sortValue(&doc->scoreDoc);
- fields[n]=NULL;
- doc->fields = fields;
- if (maxscore > 1.0f)
- doc->scoreDoc.score /= maxscore; // normalize scores
- return doc;
- }
-
- ScoreDocComparator* FieldSortedHitQueue::lookup (IndexReader* reader, const TCHAR* field, int32_t type, SortComparatorSource* factory) {
- ScoreDocComparator* sdc = NULL;
- FieldCacheImpl::FileEntry* entry = (factory != NULL)
- ? _CLNEW FieldCacheImpl::FileEntry (field, factory)
- : _CLNEW FieldCacheImpl::FileEntry (field, type);
-
- {
- SCOPED_LOCK_MUTEX(Comparators.THIS_LOCK)
- hitqueueCacheReaderType* readerCache = Comparators.get(reader);
- if (readerCache == NULL){
- _CLDELETE(entry);
- return NULL;
- }
-
- sdc = readerCache->get (entry);
- _CLDELETE(entry);
- }
- return sdc;
- }
-
- void FieldSortedHitQueue::closeCallback(CL_NS(index)::IndexReader* reader, void*){
- SCOPED_LOCK_MUTEX(Comparators.THIS_LOCK)
- Comparators.remove(reader);
- }
-
- //static
- void FieldSortedHitQueue::store (IndexReader* reader, const TCHAR* field, int32_t type, SortComparatorSource* factory, ScoreDocComparator* value) {
- FieldCacheImpl::FileEntry* entry = (factory != NULL)
- ? _CLNEW FieldCacheImpl::FileEntry (field, factory)
- : _CLNEW FieldCacheImpl::FileEntry (field, type);
-
- {
- SCOPED_LOCK_MUTEX(Comparators.THIS_LOCK)
- hitqueueCacheReaderType* readerCache = Comparators.get(reader);
- if (readerCache == NULL) {
- readerCache = _CLNEW hitqueueCacheReaderType(true);
- Comparators.put(reader,readerCache);
- reader->addCloseCallback(FieldSortedHitQueue::closeCallback,NULL);
- }
- readerCache->put (entry, value);
- //return NULL; //supposed to return previous value...
- }
- }
-
-FieldSortedHitQueue::~FieldSortedHitQueue(){
- _CLDELETE_ARRAY(comparators);
- if ( fields != NULL ){
- for ( int i=0;fields[i]!=NULL;i++ )
- _CLDELETE(fields[i]);
- _CLDELETE_ARRAY(fields);
- }
-}
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.h
deleted file mode 100644
index d7b16ce9e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FieldSortedHitQueue.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FieldSortedHitQueue_
-#define _lucene_search_FieldSortedHitQueue_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "FieldCache.h"
-#include "Sort.h"
-#include "FieldDocSortedHitQueue.h"
-#include "SearchHeader.h"
-#include "FieldCacheImpl.h"
-#include "CLucene/util/PriorityQueue.h"
-
-CL_NS_DEF(search)
-
-
-/**
- * Expert: A hit queue for sorting by hits by terms in more than one field.
- * Uses <code>FieldCache.DEFAULT</code> for maintaining internal term lookup tables.
- *
- * @see Searchable#search(Query,Filter,int32_t,Sort)
- * @see FieldCache
- */
-class FieldSortedHitQueue: public CL_NS(util)::PriorityQueue<FieldDoc*,
- CL_NS(util)::Deletor::Object<FieldDoc> > {
-
- ///the type that is stored in the field cache. can't use a typedef because
- ///the decorated name would become too long
- class hitqueueCacheReaderType: public CL_NS(util)::CLHashMap<FieldCacheImpl::FileEntry*,
- ScoreDocComparator*,
- FieldCacheImpl::FileEntry::Compare,
- FieldCacheImpl::FileEntry::Equals,
- CL_NS(util)::Deletor::Object<FieldCacheImpl::FileEntry>,
- CL_NS(util)::Deletor::Object<ScoreDocComparator> >{
-
- public:
- hitqueueCacheReaderType(bool deleteValue){
- setDeleteKey(true);
- setDeleteValue(deleteValue);
- }
- ~hitqueueCacheReaderType(){
- clear();
- }
-
- };
-
-public: //todo: remove this and below after close callback is implemented
- //note: typename gets too long if using cacheReaderType as a typename
- typedef CL_NS(util)::CLHashMap<CL_NS(index)::IndexReader*,
- hitqueueCacheReaderType*,
- CL_NS(util)::Compare::Void<CL_NS(index)::IndexReader>,
- CL_NS(util)::Equals::Void<CL_NS(index)::IndexReader>,
- CL_NS(util)::Deletor::Object<CL_NS(index)::IndexReader>,
- CL_NS(util)::Deletor::Object<hitqueueCacheReaderType> > hitqueueCacheType;
-
- /** Internal cache of comparators. Similar to FieldCache, only
- * caches comparators instead of term values.
- */
- static hitqueueCacheType Comparators;
-private:
-
- /** Returns a comparator if it is in the cache.*/
- static ScoreDocComparator* lookup (CL_NS(index)::IndexReader* reader, const TCHAR* field, int32_t type, SortComparatorSource* factory);
-
- /** Stores a comparator into the cache.
- returns the valid ScoreDocComparator.
- */
- static void store (CL_NS(index)::IndexReader* reader, const TCHAR* field, int32_t type, SortComparatorSource* factory, ScoreDocComparator* value);
-
-
- //todo: Locale locale, not implemented yet
- static ScoreDocComparator* getCachedComparator (CL_NS(index)::IndexReader* reader,
- const TCHAR* fieldname, int32_t type, SortComparatorSource* factory);
-
-
- /**
- * Returns a comparator for sorting hits according to a field containing integers.
- * @param reader Index to use.
- * @param fieldname Field containg integer values.
- * @return Comparator for sorting hits.
- * @throws IOException If an error occurs reading the index.
- */
- static ScoreDocComparator* comparatorInt (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname);
-
- /**
- * Returns a comparator for sorting hits according to a field containing floats.
- * @param reader Index to use.
- * @param fieldname Field containg float values.
- * @return Comparator for sorting hits.
- * @throws IOException If an error occurs reading the index.
- */
- static ScoreDocComparator* comparatorFloat (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname);
-
- /**
- * Returns a comparator for sorting hits according to a field containing strings.
- * @param reader Index to use.
- * @param fieldname Field containg string values.
- * @return Comparator for sorting hits.
- * @throws IOException If an error occurs reading the index.
- */
- static ScoreDocComparator* comparatorString (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname);
-
-
- //todo:
- /**
- * Returns a comparator for sorting hits according to a field containing strings.
- * @param reader Index to use.
- * @param fieldname Field containg string values.
- * @return Comparator for sorting hits.
- * @throws IOException If an error occurs reading the index.
-
- static ScoreDocComparator* comparatorStringLocale (IndexReader* reader, TCHAR* fieldname, Locale locale){
- Collator collator = Collator.getInstance (locale);
- TCHAR* field = fieldname.intern();
- TCHAR** index = FieldCache.DEFAULT.getStrings (reader, field);
- return _CLNEW ScoreDocComparator() {
-
- public int32_t compare (ScoreDoc i, ScoreDoc j) {
- return collator.compare (index[i.doc], index[j.doc]);
- }
-
- public Comparable sortValue (ScoreDoc i) {
- return index[i.doc];
- }
-
- public int32_t sortType() {
- return SortField.STRING;
- }
- };
- }*/
-
- /**
- * Returns a comparator for sorting hits according to values in the given field.
- * The terms in the field are looked at to determine whether they contain integers,
- * floats or strings. Once the type is determined, one of the other static methods
- * in this class is called to get the comparator.
- * @param reader Index to use.
- * @param fieldname Field containg values.
- * @return Comparator for sorting hits.
- * @throws IOException If an error occurs reading the index.
- */
- static ScoreDocComparator* comparatorAuto (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname);
-
-
-protected:
- /** Stores a comparator corresponding to each field being sorted by */
- ScoreDocComparator** comparators;
- int32_t comparatorsLen;
-
- /** Stores the sort criteria being used. */
- SortField** fields;
- int32_t fieldsLen;
-
- /** Stores the maximum score value encountered, for normalizing.
- * we only care about scores greater than 1.0 - if all the scores
- * are less than 1.0, we don't have to normalize. */
- qreal maxscore;
-
- /**
- * Returns whether <code>a</code> is less relevant than <code>b</code>.
- * @param a ScoreDoc
- * @param b ScoreDoc
- * @return <code>true</code> if document <code>a</code> should be sorted after document <code>b</code>.
- */
- bool lessThan (FieldDoc* docA, FieldDoc* docB);
-public:
-
- /**
- * Creates a hit queue sorted by the given list of fields.
- * @param reader Index to use.
- * @param fields Field names, in priority order (highest priority first). Cannot be <code>null</code> or empty.
- * @param size The number of hits to retain. Must be greater than zero.
- * @throws IOException
- */
- FieldSortedHitQueue (CL_NS(index)::IndexReader* reader, SortField** fields, int32_t size);
-
- ~FieldSortedHitQueue();
-
- /**
- * Callback for when IndexReader closes. This causes
- * any Comparators to be removed for the specified reader.
- */
- static void closeCallback(CL_NS(index)::IndexReader* reader, void* param);
-
- /**
- * Given a FieldDoc object, stores the values used
- * to sort the given document. These values are not the raw
- * values out of the index, but the internal representation
- * of them. This is so the given search hit can be collated
- * by a MultiSearcher with other search hits.
- * @param doc The FieldDoc to store sort values into.
- * @return The same FieldDoc passed in.
- * @see Searchable#search(Query,Filter,int32_t,Sort)
- */
- FieldDoc* fillFields (FieldDoc* doc) const;
-
- void setFields (SortField** fields){
- this->fields = fields;
- }
-
- /** Returns the SortFields being used by this hit queue. */
- SortField** getFields() {
- return fields;
- }
-};
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Filter.h b/src/assistant/3rdparty/clucene/src/CLucene/search/Filter.h
deleted file mode 100644
index 309c5a9d6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Filter.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_Filter_
-#define _lucene_search_Filter_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/BitSet.h"
-
-CL_NS_DEF(search)
- // Abstract base class providing a mechanism to restrict searches to a subset
- // of an index.
- class Filter: LUCENE_BASE {
- public:
- virtual ~Filter(){
- }
-
- virtual Filter* clone() const = 0;
-
- /**
- * Returns a BitSet with true for documents which should be permitted in
- * search results, and false for those that should not.
- * MEMORY: read shouldDeleteBitSet
- */
- virtual CL_NS(util)::BitSet* bits(CL_NS(index)::IndexReader* reader)=0;
-
- /**
- * Because of the problem of cached bitsets with the CachingWrapperFilter,
- * CLucene has no way of knowing whether to delete the bitset returned from bits().
- * To properly clean memory from bits(), pass the bitset to this function. The
- * Filter should be deleted if this function returns true.
- */
- virtual bool shouldDeleteBitSet(const CL_NS(util)::BitSet* bs) const{ return true; }
-
- //Creates a user-readable version of this query and returns it as as string
- virtual TCHAR* toString()=0;
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.cpp
deleted file mode 100644
index f90ceeaaf..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-#include "FilteredTermEnum.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
-
- FilteredTermEnum::FilteredTermEnum(){
- //Func - Constructor
- //Pre - true
- //Post - Instance has been created
-
- currentTerm = NULL;
- actualEnum = NULL;
- }
-
- FilteredTermEnum::~FilteredTermEnum() {
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- close();
- }
-
- int32_t FilteredTermEnum::docFreq() const {
- //Func - Returns the docFreq of the current Term in the enumeration.
- //Pre - next() must have been called at least once
- //Post - if actualEnum is NULL result is -1 otherwise the frequencey is returned
-
- if (actualEnum == NULL){
- return -1;
- }
- return actualEnum->docFreq();
- }
-
- bool FilteredTermEnum::next() {
- //Func - Increments the enumeration to the next element.
- //Pre - true
- //Post - Returns True if the enumeration has been moved to the next element otherwise false
-
- //The actual enumerator is not initialized!
- if (actualEnum == NULL){
- return false;
- }
-
- //Finalize the currentTerm and reset it to NULL
- _CLDECDELETE( currentTerm );
-
- //Iterate through the enumeration
- while (currentTerm == NULL) {
- if (endEnum())
- return false;
- if (actualEnum->next()) {
- //Order term not to return reference ownership here. */
- Term* term = actualEnum->term(false);
- //Compare the retrieved term
- if (termCompare(term)){
- //Matched so finalize the current
- _CLDECDELETE(currentTerm);
- //Get a reference to the matched term
- currentTerm = _CL_POINTER(term);
- return true;
- }
- }else
- return false;
- }
- _CLDECDELETE(currentTerm);
- currentTerm = NULL;
-
- return false;
- }
-
- Term* FilteredTermEnum::term() {
- //Func - Returns the current Term in the enumeration.
- //Pre - next() must have been called at least once
- // pointer is true or false
- //Post - if pre(pointer) is true the reference counter of currentTerm is increased
- // and current Term is returned otherwise currentTerm is only returned
-
- return _CL_POINTER(currentTerm);
- }
- Term* FilteredTermEnum::term(bool pointer) {
- if ( pointer )
- return _CL_POINTER(currentTerm);
- else
- return currentTerm;
- }
-
- void FilteredTermEnum::close(){
- //Func - Closes the enumeration to further activity, freeing resources.
- //Pre - true
- //Post - The Enumeration has been closed
-
- //Check if actualEnum is valid
- if (actualEnum){
- //Close the enumeration
- actualEnum->close();
- }
-
- //Destroy the enumeration
- _CLDELETE(actualEnum);
-
- //Destroy currentTerm
- _CLDECDELETE(currentTerm);
- }
-
- void FilteredTermEnum::setEnum(TermEnum* actualEnum) {
- //Func - Sets the actual Enumeration
- //Pre - actualEnum != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(actualEnum != NULL,"actualEnum is NULL");
-
- _CLDELETE(this->actualEnum);
-
- this->actualEnum = actualEnum;
-
- // Find the first term that matches
- //Ordered term not to return reference ownership here.
- Term* term = actualEnum->term(false);
- if (term != NULL && termCompare(term)){
- _CLDECDELETE(currentTerm);
- currentTerm = _CL_POINTER(term);
- }else{
- next();
- }
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.h
deleted file mode 100644
index 035ae384e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FilteredTermEnum.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FilteredTermEnum_
-#define _lucene_search_FilteredTermEnum_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-
-CL_NS_DEF(search)
- //FilteredTermEnum is an abstract class for enumerating a subset of all terms.
- //
- //Term enumerations are always ordered by term->compareTo(). Each term in
- //the enumeration is greater than all that precede it.
-
- class FilteredTermEnum: public CL_NS(index)::TermEnum {
- public:
- //Constructor
- FilteredTermEnum();
- //Destructor
- virtual ~FilteredTermEnum();
-
- //Equality measure on the term
- virtual qreal difference() = 0;
-
- //Returns the docFreq of the current Term in the enumeration.
- int32_t docFreq() const ;
-
- //Increments the enumeration to the next element
- bool next() ;
-
- //Returns a pointer to the current Term in the enumeration.
- CL_NS(index)::Term* term();
- CL_NS(index)::Term* term(bool pointer);
-
- //Closes the enumeration to further activity, freeing resources.
- void close();
-
- protected:
- //Equality compare on the term */
- virtual bool termCompare(CL_NS(index)::Term* term) = 0;
-
- //Indiciates the end of the enumeration has been reached
- virtual bool endEnum() = 0;
-
- void setEnum(CL_NS(index)::TermEnum* actualEnum) ;
-
- private:
- CL_NS(index)::Term* currentTerm;
- CL_NS(index)::TermEnum* actualEnum;
-
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.cpp
deleted file mode 100644
index e95d48da3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.cpp
+++ /dev/null
@@ -1,357 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "FuzzyQuery.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
- /**
- * Constructor for enumeration of all terms from specified <code>reader</code> which share a prefix of
- * length <code>prefixLength</code> with <code>term</code> and which have a fuzzy similarity &gt;
- * <code>minSimilarity</code>.
- *
- * @param reader Delivers terms.
- * @param term Pattern term.
- * @param minSimilarity Minimum required similarity for terms from the reader. Default value is 0.5f.
- * @param prefixLength Length of required common prefix. Default value is 0.
- * @throws IOException
- */
- FuzzyTermEnum::FuzzyTermEnum(const IndexReader* reader, Term* term, qreal minSimilarity, size_t prefixLength):
- distance(0),
- _endEnum(false),
- prefix(LUCENE_BLANK_STRING),
- prefixLength(0),
- minimumSimilarity(minSimilarity)
- {
- //Func - Constructor
- //Pre - reader contains a valid reference to an IndexReader
- // term != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(term != NULL,"term is NULL");
-
- scale_factor = 1.0f / (1.0f - minimumSimilarity);
- searchTerm = _CL_POINTER(term);
-
- text = STRDUP_TtoT(term->text());
- textLen = term->textLength();
-
-
- //Initialize e to NULL
- e = NULL;
- eWidth = 0;
- eHeight = 0;
-
- if(prefixLength > 0 && prefixLength < textLen){
- this->prefixLength = prefixLength;
-
- prefix = _CL_NEWARRAY(TCHAR,prefixLength+1);
- _tcsncpy(prefix,text,prefixLength);
- prefix[prefixLength]='\0';
-
- textLen = prefixLength;
- text[textLen]='\0';
- }
-
-
- //Set the enumeration
- Term* trm = _CLNEW Term(term, prefix);
- setEnum(reader->terms(trm));
- _CLDECDELETE(trm);
- }
-
- FuzzyTermEnum::~FuzzyTermEnum(){
- //Func - Destructor
- //Pre - true
- //Post - FuzzyTermEnum has been destroyed
-
- //Close the enumeration
- close();
- }
-
- bool FuzzyTermEnum::endEnum() {
- //Func - Returns the fact if the current term in the enumeration has reached the end
- //Pre - true
- //Post - The boolean value of endEnum has been returned
-
- return _endEnum;
- }
-
- void FuzzyTermEnum::close(){
- //Func - Close the enumeration
- //Pre - true
- //Post - The enumeration has been closed
-
- FilteredTermEnum::close();
-
- //Finalize the searchTerm
- _CLDECDELETE(searchTerm);
- //Destroy e
- _CLDELETE_ARRAY(e);
-
- _CLDELETE_CARRAY(text);
-
- if ( prefix != LUCENE_BLANK_STRING )
- _CLDELETE_CARRAY(prefix);
- }
-
- bool FuzzyTermEnum::termCompare(Term* term) {
- //Func - Compares term with the searchTerm using the Levenshtein distance.
- //Pre - term is NULL or term points to a Term
- //Post - if pre(term) is NULL then false is returned otherwise
- // if the distance of the current term in the enumeration is bigger than the FUZZY_THRESHOLD
- // then true is returned
-
- if (term == NULL){
- return false; //Note that endEnum is not set to true!
- }
-
- const TCHAR* termText = term->text();
- size_t termTextLen = term->textLength();
-
- //Check if the field name of searchTerm of term match
- //(we can use == because fields are interned)
- if ( searchTerm->field() == term->field() &&
- (prefixLength==0 || _tcsncmp(termText,prefix,prefixLength)==0 )) {
-
- const TCHAR* target = termText+prefixLength;
- size_t targetLen = termTextLen-prefixLength;
-
- //Calculate the Levenshtein distance
- int32_t dist = editDistance(text, target, textLen, targetLen);
- distance = 1 - ((qreal)dist / (qreal)min(textLen, targetLen));
- return (distance > minimumSimilarity);
- }
- _endEnum = true;
- return false;
- }
-
- qreal FuzzyTermEnum::difference() {
- //Func - Returns the difference between the distance and the fuzzy threshold
- // multiplied by the scale factor
- //Pre - true
- //Post - The difference is returned
-
- return (qreal)((distance - minimumSimilarity) * scale_factor );
- }
-
-
- /** Finds and returns the smallest of three integers
- precondition: Must define int32_t __t for temporary storage and result
- */
- #define min3(a, b, c) __t = (a < b) ? a : b; __t = (__t < c) ? __t : c;
-
- int32_t FuzzyTermEnum::editDistance(const TCHAR* s, const TCHAR* t, const int32_t n, const int32_t m) {
- //Func - Calculates the Levenshtein distance also known as edit distance is a measure of similiarity
- // between two strings where the distance is measured as the number of character
- // deletions, insertions or substitutions required to transform one string to
- // the other string.
- //Pre - s != NULL and contains the source string
- // t != NULL and contains the target string
- // n >= 0 and contains the length of the source string
- // m >= 0 and containts the length of th target string
- //Post - The distance has been returned
-
- CND_PRECONDITION(s != NULL, "s is NULL");
- CND_PRECONDITION(t != NULL, "t is NULL");
- CND_PRECONDITION(n >= 0," n is a negative number");
- CND_PRECONDITION(n >= 0," n is a negative number");
-
- int32_t i; // iterates through s
- int32_t j; // iterates through t
- TCHAR s_i; // ith character of s
-
- if (n == 0)
- return m;
- if (m == 0)
- return n;
-
- //Check if the array must be reallocated because it is too small or does not exist
- if (e == NULL || eWidth <= n || eHeight <= m) {
- //Delete e if possible
- _CLDELETE_ARRAY(e);
- //resize e
- eWidth = max(eWidth, n+1);
- eHeight = max(eHeight, m+1);
- e = _CL_NEWARRAY(int32_t,eWidth*eHeight);
- }
-
- CND_CONDITION(e != NULL,"e is NULL");
-
- // init matrix e
- for (i = 0; i <= n; i++){
- e[i + (0*eWidth)] = i;
- }
- for (j = 0; j <= m; j++){
- e[0 + (j*eWidth)] = j;
- }
-
- int32_t __t; //temporary variable for min3
-
- // start computing edit distance
- for (i = 1; i <= n; i++) {
- s_i = s[i - 1];
- for (j = 1; j <= m; j++) {
- if (s_i != t[j-1]){
- min3(e[i + (j*eWidth) - 1], e[i + ((j-1)*eWidth)], e[i + ((j-1)*eWidth)-1]);
- e[i + (j*eWidth)] = __t+1;
- }else{
- min3(e[i + (j*eWidth) -1]+1, e[i + ((j-1)*eWidth)]+1, e[i + ((j-1)*eWidth)-1]);
- e[i + (j*eWidth)] = __t;
- }
- }
- }
-
- // we got the result!
- return e[n + ((m)*eWidth)];
- }
-
-
- /**
- * Create a new FuzzyQuery that will match terms with a similarity
- * of at least <code>minimumSimilarity</code> to <code>term</code>.
- * If a <code>prefixLength</code> &gt; 0 is specified, a common prefix
- * of that length is also required.
- *
- * @param term the term to search for
- * @param minimumSimilarity a value between 0 and 1 to set the required similarity
- * between the query term and the matching terms. For example, for a
- * <code>minimumSimilarity</code> of <code>0.5</code> a term of the same length
- * as the query term is considered similar to the query term if the edit distance
- * between both terms is less than <code>length(term)*0.5</code>
- * @param prefixLength length of common (non-fuzzy) prefix
- * @throws IllegalArgumentException if minimumSimilarity is &gt; 1 or &lt; 0
- * or if prefixLength &lt; 0 or &gt; <code>term.text().length()</code>.
- */
- FuzzyQuery::FuzzyQuery(Term* term, qreal minimumSimilarity, size_t prefixLength):
- MultiTermQuery(term)
- {
- //Func - Constructor
- //Pre - term != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(term != NULL,"term is NULL");
-
- if (minimumSimilarity > 1.0f)
- _CLTHROWA(CL_ERR_IllegalArgument,"minimumSimilarity > 1");
- else if (minimumSimilarity < 0.0f)
- _CLTHROWA(CL_ERR_IllegalArgument,"minimumSimilarity < 0");
-
- this->minimumSimilarity = minimumSimilarity;
-
- if(prefixLength >= term->textLength())
- _CLTHROWA(CL_ERR_IllegalArgument,"prefixLength >= term.textLength()");
- this->prefixLength = prefixLength;
-
- }
-
-
- qreal FuzzyQuery::defaultMinSimilarity = 0.5f;
-
- FuzzyQuery::~FuzzyQuery(){
- //Func - Destructor
- //Pre - true
- //Post - Instance has been destroyed
- }
-
- TCHAR* FuzzyQuery::toString(const TCHAR* field) const{
- //Func - Returns the query string
- //Pre - field != NULL
- //Post - The query string has been returned
-
- CND_PRECONDITION(field != NULL,"field is NULL");
-
- StringBuffer buffer;
- const TCHAR* b = MultiTermQuery::toString(field);
-
- buffer.append ( b );
- _CLDELETE_CARRAY(b);
- buffer.append( _T("~") );
-
- buffer.appendFloat(minimumSimilarity,1);
-
- return buffer.toString();
- }
-
- const TCHAR* FuzzyQuery::getQueryName() const{
- //Func - Returns the name of the query
- //Pre - true
- //post - The string FuzzyQuery has been returned
-
- return getClassName();
- }
- const TCHAR* FuzzyQuery::getClassName(){
- //Func - Returns the name of the query
- //Pre - true
- //post - The string FuzzyQuery has been returned
-
- return _T("FuzzyQuery");
- }
-
-
- /**
- * Returns the minimum similarity that is required for this query to match.
- * @return float value between 0.0 and 1.0
- */
- qreal FuzzyQuery::getMinSimilarity() const {
- return minimumSimilarity;
- }
-
- FuzzyQuery::FuzzyQuery(const FuzzyQuery& clone):
- MultiTermQuery(clone)
- {
- this->minimumSimilarity = clone.getMinSimilarity();
- this->prefixLength = clone.getPrefixLength();
-
- //if(prefixLength < 0)
- // _CLTHROWA(CL_ERR_IllegalArgument,"prefixLength < 0");
- //else
- if(prefixLength >= clone.getTerm()->textLength())
- _CLTHROWA(CL_ERR_IllegalArgument,"prefixLength >= term.textLength()");
-
- }
-
- Query* FuzzyQuery::clone() const{
- return _CLNEW FuzzyQuery(*this);
- }
- size_t FuzzyQuery::hashCode() const{
- //todo: we should give the query a seeding value... but
- //need to do it for all hascode functions
- size_t val = Similarity::floatToByte(getBoost()) ^ getTerm()->hashCode();
- val ^= Similarity::floatToByte(this->getMinSimilarity());
- val ^= this->getPrefixLength();
- return val;
- }
- bool FuzzyQuery::equals(Query* other) const{
- if (!(other->instanceOf(FuzzyQuery::getClassName())))
- return false;
-
- FuzzyQuery* fq = (FuzzyQuery*)other;
- return (this->getBoost() == fq->getBoost())
- && this->getMinSimilarity() == fq->getMinSimilarity()
- && this->getPrefixLength() == fq->getPrefixLength()
- && getTerm()->equals(fq->getTerm());
- }
-
- /**
- * Returns the prefix length, i.e. the number of characters at the start
- * of a term that must be identical (not fuzzy) to the query term if the query
- * is to match that term.
- */
- size_t FuzzyQuery::getPrefixLength() const {
- return prefixLength;
- }
-
- FilteredTermEnum* FuzzyQuery::getEnum(IndexReader* reader){
- Term* term = getTerm(false);
- FuzzyTermEnum* ret = _CLNEW FuzzyTermEnum(reader, term, minimumSimilarity, prefixLength);
- return ret;
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.h
deleted file mode 100644
index e58637bb9..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/FuzzyQuery.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_FuzzyQuery_
-#define _lucene_search_FuzzyQuery_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "MultiTermQuery.h"
-
-
-CL_NS_DEF(search)
-
- // class FuzzyQuery implements the fuzzy search query
- class FuzzyQuery: public MultiTermQuery {
- private:
- qreal minimumSimilarity;
- size_t prefixLength;
- protected:
- FuzzyQuery(const FuzzyQuery& clone);
- public:
- static qreal defaultMinSimilarity;
-
- /**
- * Create a new FuzzyQuery that will match terms with a similarity
- * of at least <code>minimumSimilarity</code> to <code>term</code>.
- * If a <code>prefixLength</code> &gt; 0 is specified, a common prefix
- * of that length is also required.
- *
- * @param term the term to search for
- * @param minimumSimilarity a value between 0 and 1 to set the required similarity
- * between the query term and the matching terms. For example, for a
- * <code>minimumSimilarity</code> of <code>0.5</code> a term of the same length
- * as the query term is considered similar to the query term if the edit distance
- * between both terms is less than <code>length(term)*0.5</code>
- * @param prefixLength length of common (non-fuzzy) prefix
- * @throws IllegalArgumentException if minimumSimilarity is &gt; 1 or &lt; 0
- * or if prefixLength &lt; 0 or &gt; <code>term.text().length()</code>.
- */
- FuzzyQuery(CL_NS(index)::Term* term, qreal minimumSimilarity=defaultMinSimilarity, size_t prefixLength=0);
- //Destructor
- ~FuzzyQuery();
-
- TCHAR* toString(const TCHAR* field) const;
-
- //Returns the name "FuzzyQuery"
- static const TCHAR* getClassName();
- const TCHAR* getQueryName() const;
-
- Query* clone() const;
- bool equals(Query * other) const;
- size_t hashCode() const;
-
- /**
- * Returns the minimum similarity that is required for this query to match.
- * @return float value between 0.0 and 1.0
- */
- qreal getMinSimilarity() const;
-
- /**
- * Returns the prefix length, i.e. the number of characters at the start
- * of a term that must be identical (not fuzzy) to the query term if the query
- * is to match that term.
- */
- size_t getPrefixLength() const;
-
- protected:
- FilteredTermEnum* getEnum(CL_NS(index)::IndexReader* reader);
- };
-
- /** FuzzyTermEnum is a subclass of FilteredTermEnum for enumerating all
- * terms that are similiar to the specified filter term.
- *
- * Term enumerations are always ordered by Term.compareTo(). Each term in
- * the enumeration is greater than all that precede it.
- */
- class FuzzyTermEnum: public FilteredTermEnum {
- private:
- qreal distance;
- bool _endEnum;
-
- CL_NS(index)::Term* searchTerm;
- TCHAR* text;
- size_t textLen;
- TCHAR* prefix;
- size_t prefixLength;
- qreal minimumSimilarity;
- double scale_factor;
-
-
- /**
- * This static array saves us from the time required to create a new array
- * everytime editDistance is called.
- */
- int32_t* e;
- int32_t eWidth;
- int32_t eHeight;
-
- /******************************
- * Compute Levenshtein distance
- ******************************/
-
- /**
- Levenshtein distance also known as edit distance is a measure of similiarity
- between two strings where the distance is measured as the number of character
- deletions, insertions or substitutions required to transform one string to
- the other string.
- <p>This method takes in four parameters; two strings and their respective
- lengths to compute the Levenshtein distance between the two strings.
- The result is returned as an integer.
- */
- int32_t editDistance(const TCHAR* s, const TCHAR* t, const int32_t n, const int32_t m) ;
-
- protected:
- /**
- The termCompare method in FuzzyTermEnum uses Levenshtein distance to
- calculate the distance between the given term and the comparing term.
- */
- bool termCompare(CL_NS(index)::Term* term) ;
-
- ///Returns the fact if the current term in the enumeration has reached the end
- bool endEnum();
- public:
-
- /**
- * Empty prefix and minSimilarity of 0.5f are used.
- *
- * @param reader
- * @param term
- * @throws IOException
- * @see #FuzzyTermEnum(IndexReader, Term, qreal, int32_t)
- */
- FuzzyTermEnum(const CL_NS(index)::IndexReader* reader, CL_NS(index)::Term* term, qreal minSimilarity=FuzzyQuery::defaultMinSimilarity, size_t prefixLength=0);
- /** Destructor */
- ~FuzzyTermEnum();
- /** Close the enumeration */
- void close();
-
- /** Returns the difference between the distance and the fuzzy threshold
- * multiplied by the scale factor
- */
- qreal difference();
-
-
- const char* getObjectName(){ return FuzzyTermEnum::getClassName(); }
- static const char* getClassName(){ return "FuzzyTermEnum"; }
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.cpp
deleted file mode 100644
index c9aecc6b4..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "HitQueue.h"
-
-CL_NS_DEF(search)
-
-void HitQueue::upHeap(){
- size_t i = _size;
- ScoreDoc node = heap[i]; // save bottom node (WAS object)
- int32_t j = ((uint32_t)i) >> 1;
- while (j > 0 && lessThan(node,heap[j])) {
- heap[i] = heap[j]; // shift parents down
- i = j;
- j = ((uint32_t)j) >> 1;
- }
- heap[i] = node; // install saved node
-}
-void HitQueue::downHeap(){
- size_t i = 1;
- ScoreDoc node = heap[i]; // save top node
- size_t j = i << 1; // find smaller child
- size_t k = j + 1;
- if (k <= _size && lessThan(heap[k], heap[j])) {
- j = k;
- }
- while (j <= _size && lessThan(heap[j],node)) {
- heap[i] = heap[j]; // shift up child
- i = j;
- j = i << 1;
- k = j + 1;
- if (k <= _size && lessThan(heap[k], heap[j])) {
- j = k;
- }
- }
- heap[i] = node; // install saved node
-}
-
-void HitQueue::adjustTop(){
- downHeap();
-}
-size_t HitQueue::size(){
- return _size;
-}
-
-struct ScoreDoc& HitQueue::top(){
- if ( _size == 0 )
- _CLTHROWA(CL_ERR_IndexOutOfBounds, "Attempted to access empty hitqueue::top");
- return heap[1];
-}
-
-void HitQueue::put(struct ScoreDoc& element){
- if ( _size>=maxSize )
- _CLTHROWA(CL_ERR_IndexOutOfBounds,"add is out of bounds");
-
- _size++;
- heap[_size] = element;
- upHeap();
-}
-
-ScoreDoc HitQueue::pop(){
- if (_size > 0) {
- ScoreDoc result = heap[1]; // save first value
- heap[1] = heap[_size]; // move last to first
-
- _size--;
- downHeap(); // adjust heap
- return result;
- } else
- _CLTHROWA(CL_ERR_IndexOutOfBounds, "Attempted to access empty hitqueue::top");
-}
-
-bool HitQueue::insert(struct ScoreDoc& element){
- if(_size < maxSize){
- put(element);
- return true;
- }else if(_size > 0 && !lessThan(element, heap[1])){
- heap[1] = element;
- adjustTop();
- return true;
- }else
- return false;
-}
-
-HitQueue::HitQueue(const int32_t maxSize){
- _size = 0;
- this->maxSize = maxSize;
- int32_t heapSize = maxSize + 1;
- heap = _CL_NEWARRAY(ScoreDoc,heapSize);
-}
-HitQueue::~HitQueue(){
- _CLDELETE_ARRAY(heap);
-}
-
-bool HitQueue::lessThan(struct ScoreDoc& hitA, struct ScoreDoc& hitB){
- if (hitA.score == hitB.score)
- return hitA.doc > hitB.doc;
- else
- return hitA.score < hitB.score;
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.h b/src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.h
deleted file mode 100644
index 0bd196a7f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/HitQueue.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_HitQueue_
-#define _lucene_search_HitQueue_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SearchHeader.h"
-
-CL_NS_DEF(search)
-
-/**
-* An optimised PriorityQueue which takes ScoreDoc structs. Some by-ref passing
-* and memory related optimisations have been done.
-*/
-class HitQueue: LUCENE_BASE {
-private:
- ScoreDoc* heap;
- size_t _size;
- size_t maxSize;
-
- void upHeap();
- void downHeap();
-
-protected:
- bool lessThan(struct ScoreDoc& hitA, struct ScoreDoc& hitB);
-
-public:
- void adjustTop();
- struct ScoreDoc& top();
- void put(struct ScoreDoc& element);
- ScoreDoc pop();
- /**
- * Adds element to the PriorityQueue in log(size) time if either
- * the PriorityQueue is not full, or not lessThan(element, top()).
- * @param element
- * @return true if element is added, false otherwise.
- */
- bool insert(struct ScoreDoc& element);
- /**
- * Returns the number of elements currently stored in the PriorityQueue.
- */
- size_t size();
- HitQueue(const int32_t maxSize);
- ~HitQueue();
-
-};
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Hits.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/Hits.cpp
deleted file mode 100644
index 38c489f44..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Hits.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-#include "SearchHeader.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/index/IndexReader.h"
-#include "Filter.h"
-#include "CLucene/search/SearchHeader.h"
-
-CL_NS_USE(document)
-CL_NS_USE(util)
-CL_NS_USE(index)
-
-CL_NS_DEF(search)
-
- HitDoc::HitDoc(const qreal s, const int32_t i)
- {
- //Func - Constructor
- //Pre - true
- //Post - The instance has been created
-
- next = NULL;
- prev = NULL;
- doc = NULL;
- score = s;
- id = i;
- }
-
- HitDoc::~HitDoc(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- _CLDELETE(doc);
- }
-
-
- Hits::Hits(Searcher* s, Query* q, Filter* f, const Sort* _sort):
- query(q), searcher(s), filter(f), sort(_sort)
- {
- //Func - Constructor
- //Pre - s contains a valid reference to a searcher s
- // q contains a valid reference to a Query
- // f is NULL or contains a pointer to a filter
- //Post - The instance has been created
-
- _length = 0;
- first = NULL;
- last = NULL;
- numDocs = 0;
- maxDocs = 200;
-
- //retrieve 100 initially
- getMoreDocs(50);
- }
-
- Hits::~Hits(){
-
- }
- int32_t Hits::length() const {
- return _length;
- }
-
- Document& Hits::doc(const int32_t n){
- HitDoc* hitDoc = getHitDoc(n);
-
- // Update LRU cache of documents
- remove(hitDoc); // remove from list, if there
- addToFront(hitDoc); // add to front of list
- if (numDocs > maxDocs) { // if cache is full
- HitDoc* oldLast = last;
- remove(last); // flush last
-
- _CLDELETE( oldLast->doc );
- oldLast->doc = NULL;
- }
-
- if (hitDoc->doc == NULL){
- hitDoc->doc = _CLNEW Document;
- searcher->doc(hitDoc->id, hitDoc->doc); // cache miss: read document
- }
-
- return *hitDoc->doc;
- }
-
- int32_t Hits::id (const int32_t n){
- return getHitDoc(n)->id;
- }
-
- qreal Hits::score(const int32_t n){
- return getHitDoc(n)->score;
- }
-
- void Hits::getMoreDocs(const size_t m){
- size_t _min = m;
- {
- size_t nHits = hitDocs.size();
- if ( nHits > _min)
- _min = nHits;
- }
-
- size_t n = _min * 2; // double # retrieved
- TopDocs* topDocs = NULL;
- if ( sort==NULL )
- topDocs = (TopDocs*)((Searchable*)searcher)->_search(query, filter, n);
- else
- topDocs = (TopDocs*)((Searchable*)searcher)->_search(query, filter, n, sort);
- _length = topDocs->totalHits;
- ScoreDoc* scoreDocs = topDocs->scoreDocs;
- int32_t scoreDocsLength = topDocs->scoreDocsLength;
-
- qreal scoreNorm = 1.0f;
- //Check that scoreDocs is a valid pointer before using it
- if (scoreDocs != NULL){
- if (_length > 0 && scoreDocs[0].score > 1.0f){
- scoreNorm = 1.0f / scoreDocs[0].score;
- }
-
- int32_t end = scoreDocsLength < _length ? scoreDocsLength : _length;
- for (int32_t i = hitDocs.size(); i < end; i++) {
- hitDocs.push_back(_CLNEW HitDoc(scoreDocs[i].score*scoreNorm, scoreDocs[i].doc));
- }
- }
-
- _CLDELETE(topDocs);
- }
-
- HitDoc* Hits::getHitDoc(const size_t n){
- if (n >= _length){
- TCHAR buf[100];
- _sntprintf(buf, 100,_T("Not a valid hit number: %d"),n);
- _CLTHROWT(CL_ERR_IndexOutOfBounds, buf );
- }
- if (n >= hitDocs.size())
- getMoreDocs(n);
-
- return hitDocs[n];
- }
-
- void Hits::addToFront(HitDoc* hitDoc) { // insert at front of cache
- if (first == NULL)
- last = hitDoc;
- else
- first->prev = hitDoc;
-
- hitDoc->next = first;
- first = hitDoc;
- hitDoc->prev = NULL;
-
- numDocs++;
- }
-
- void Hits::remove(const HitDoc* hitDoc) { // remove from cache
- if (hitDoc->doc == NULL) // it's not in the list
- return; // abort
-
- if (hitDoc->next == NULL)
- last = hitDoc->prev;
- else
- hitDoc->next->prev = hitDoc->prev;
-
- if (hitDoc->prev == NULL)
- first = hitDoc->next;
- else
- hitDoc->prev->next = hitDoc->next;
-
- numDocs--;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.cpp
deleted file mode 100644
index c76bc9f8f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.cpp
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "IndexSearcher.h"
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "FieldDocSortedHitQueue.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/util/BitSet.h"
-#include "FieldSortedHitQueue.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_USE(document)
-
-CL_NS_DEF(search)
-
-class SimpleTopDocsCollector : public HitCollector
-{
-private:
- qreal minScore;
- const CL_NS(util)::BitSet* bits;
- HitQueue* hq;
- size_t nDocs;
- int32_t* totalHits;
-
-public:
- SimpleTopDocsCollector(const CL_NS(util)::BitSet* bs, HitQueue* hitQueue,
- int32_t* totalhits, size_t ndocs, const qreal ms=-1.0f)
- : minScore(ms),
- bits(bs),
- hq(hitQueue),
- nDocs(ndocs),
- totalHits(totalhits) {}
- ~SimpleTopDocsCollector() {}
-
- void collect(const int32_t doc, const qreal score)
- {
- if (score > 0.0f // ignore zeroed buckets
- && (bits == NULL || bits->get(doc))) { // skip docs not in bits
- ++totalHits[0];
- if (hq->size() < nDocs || (minScore==-1.0f || score >= minScore)) {
- ScoreDoc sd = {doc, score};
- hq->insert(sd); // update hit queue
- if ( minScore != -1.0f )
- minScore = hq->top().score; // maintain minScore
- }
- }
- }
-};
-
-class SortedTopDocsCollector : public HitCollector
-{
-private:
- const CL_NS(util)::BitSet* bits;
- FieldSortedHitQueue* hq;
- size_t nDocs;
- int32_t* totalHits;
-public:
- SortedTopDocsCollector(const CL_NS(util)::BitSet* bs,
- FieldSortedHitQueue* hitQueue, int32_t* totalhits, size_t _nDocs)
- : bits(bs),
- hq(hitQueue),
- nDocs(_nDocs),
- totalHits(totalhits)
- {
- }
- ~SortedTopDocsCollector() {}
-
- void collect(const int32_t doc, const qreal score)
- {
- if (score > 0.0f && // ignore zeroed buckets
- (bits==NULL || bits->get(doc))) { // skip docs not in bits
- ++totalHits[0];
- // TODO: see jlucene way... with fields def???
- FieldDoc* fd = _CLNEW FieldDoc(doc, score);
- if ( !hq->insert(fd) ) // update hit queue
- _CLDELETE(fd);
- }
- }
-};
-
-class SimpleFilteredCollector : public HitCollector
-{
-private:
- CL_NS(util)::BitSet* bits;
- HitCollector* results;
-public:
- SimpleFilteredCollector(CL_NS(util)::BitSet* bs, HitCollector* collector)
- : bits(bs),
- results(collector) {}
- ~SimpleFilteredCollector() {}
-
-protected:
- void collect(const int32_t doc, const qreal score)
- {
- // skip docs not in bits
- if (bits->get(doc))
- results->collect(doc, score);
- }
-};
-
-
-IndexSearcher::IndexSearcher(const QString& path)
-{
- //Func - Constructor
- // Creates a searcher searching the index in the named directory.
- //Pre - path != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(!path.isEmpty(), "path is NULL");
-
- reader = IndexReader::open(path);
- readerOwner = true;
-}
-
-IndexSearcher::IndexSearcher(CL_NS(store)::Directory* directory)
-{
- //Func - Constructor
- // Creates a searcher searching the index in the specified directory.
- //Pre - path != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(directory != NULL, "directory is NULL");
-
- reader = IndexReader::open(directory);
- readerOwner = true;
-}
-
-IndexSearcher::IndexSearcher(IndexReader* r)
-{
- //Func - Constructor
- // Creates a searcher searching the index with the provide IndexReader
- //Pre - path != NULL
- //Post - The instance has been created
-
- reader = r;
- readerOwner = false;
-}
-
-IndexSearcher::~IndexSearcher()
-{
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- close();
-}
-
-void IndexSearcher::close()
-{
- //Func - Frees resources associated with this Searcher.
- //Pre - true
- //Post - The resources associated have been freed
- if (readerOwner && reader){
- reader->close();
- _CLDELETE(reader);
- }
-}
-
-// inherit javadoc
-int32_t IndexSearcher::docFreq(const Term* term) const
-{
- //Func -
- //Pre - reader != NULL
- //Post -
-
- CND_PRECONDITION(reader != NULL, "reader is NULL");
- return reader->docFreq(term);
-}
-
-// inherit javadoc
-bool IndexSearcher::doc(int32_t i, CL_NS(document)::Document* d)
-{
- //Func - Retrieves i-th document found
- // For use by HitCollector implementations.
- //Pre - reader != NULL
- //Post - The i-th document has been returned
-
- CND_PRECONDITION(reader != NULL, "reader is NULL");
- return reader->document(i,d);
-}
-
-// inherit javadoc
-int32_t IndexSearcher::maxDoc() const
-{
- //Func - Return total number of documents including the ones marked deleted
- //Pre - reader != NULL
- //Post - The total number of documents including the ones marked deleted
- // has been returned
-
- CND_PRECONDITION(reader != NULL, "reader is NULL");
- return reader->maxDoc();
-}
-
-TopDocs* IndexSearcher::_search(Query* query, Filter* filter, const int32_t nDocs)
-{
- //Func -
- //Pre - reader != NULL
- //Post -
-
- CND_PRECONDITION(reader != NULL, "reader is NULL");
- CND_PRECONDITION(query != NULL, "query is NULL");
-
- Weight* weight = query->weight(this);
- Scorer* scorer = weight->scorer(reader);
- if (scorer == NULL){
- return _CLNEW TopDocs(0, NULL, 0);
- }
-
- BitSet* bits = filter != NULL ? filter->bits(reader) : NULL;
- HitQueue* hq = _CLNEW HitQueue(nDocs);
-
- //Check hq has been allocated properly
- CND_CONDITION(hq != NULL, "Could not allocate memory for HitQueue hq");
-
- int32_t* totalHits = _CL_NEWARRAY(int32_t,1);
- totalHits[0] = 0;
-
- SimpleTopDocsCollector hitCol(bits,hq,totalHits,nDocs,0.0f);
- scorer->score( &hitCol );
- _CLDELETE(scorer);
-
- int32_t scoreDocsLength = hq->size();
-
- ScoreDoc* scoreDocs = _CL_NEWARRAY(ScoreDoc,scoreDocsLength);
-
- for (int32_t i = scoreDocsLength-1; i >= 0; --i) // put docs in array
- scoreDocs[i] = hq->pop();
-
- int32_t totalHitsInt = totalHits[0];
-
- _CLDELETE(hq);
- if ( bits != NULL && filter->shouldDeleteBitSet(bits) )
- _CLDELETE(bits);
- _CLDELETE_ARRAY(totalHits);
- Query* wq = weight->getQuery();
- if ( query != wq ) //query was re-written
- _CLLDELETE(wq);
- _CLDELETE(weight);
-
- return _CLNEW TopDocs(totalHitsInt, scoreDocs, scoreDocsLength);
-}
-
-// inherit javadoc
-TopFieldDocs* IndexSearcher::_search(Query* query, Filter* filter,
- const int32_t nDocs, const Sort* sort)
-{
- CND_PRECONDITION(reader != NULL, "reader is NULL");
- CND_PRECONDITION(query != NULL, "query is NULL");
-
- Weight* weight = query->weight(this);
- Scorer* scorer = weight->scorer(reader);
- if (scorer == NULL) {
- return _CLNEW TopFieldDocs(0, NULL, 0, NULL );
- }
-
- BitSet* bits = filter != NULL ? filter->bits(reader) : NULL;
- FieldSortedHitQueue hq(reader, sort->getSort(), nDocs);
- int32_t* totalHits = _CL_NEWARRAY(int32_t,1);
- totalHits[0]=0;
-
- SortedTopDocsCollector hitCol(bits,&hq,totalHits,nDocs);
- scorer->score(&hitCol);
- _CLDELETE(scorer);
-
- int32_t hqLen = hq.size();
- FieldDoc** fieldDocs = _CL_NEWARRAY(FieldDoc*,hqLen);
- for (int32_t i = hqLen-1; i >= 0; --i){ // put docs in array
- fieldDocs[i] = hq.fillFields (hq.pop());
- }
-
- Query* wq = weight->getQuery();
- if ( query != wq ) //query was re-written
- _CLLDELETE(wq);
- _CLDELETE(weight);
-
- SortField** hqFields = hq.getFields();
- hq.setFields(NULL); //move ownership of memory over to TopFieldDocs
- int32_t totalHits0 = totalHits[0];
- if ( bits != NULL && filter->shouldDeleteBitSet(bits) )
- _CLDELETE(bits);
- _CLDELETE_ARRAY(totalHits);
- return _CLNEW TopFieldDocs(totalHits0, fieldDocs, hqLen, hqFields );
-}
-
-void IndexSearcher::_search(Query* query, Filter* filter, HitCollector* results)
-{
- //Func - _search an index and fetch the results
- // Applications should only use this if they need all of the
- // matching documents. The high-level search API (search(Query))
- // is usually more efficient, as it skips non-high-scoring hits.
- //Pre - query is a valid reference to a query filter may or may not be NULL
- // results is a valid reference to a HitCollector and used to store the results
- //Post - filter if non-NULL, a bitset used to eliminate some documents
-
- CND_PRECONDITION(reader != NULL, "reader is NULL");
- CND_PRECONDITION(query != NULL, "query is NULL");
-
- BitSet* bits = NULL;
- SimpleFilteredCollector* fc = NULL;
-
- if (filter != NULL){
- bits = filter->bits(reader);
- fc = _CLNEW SimpleFilteredCollector(bits, results);
- }
-
- Weight* weight = query->weight(this);
- Scorer* scorer = weight->scorer(reader);
- if (scorer != NULL) {
- if (fc == NULL){
- scorer->score(results);
- }else{
- scorer->score((HitCollector*)fc);
- }
- _CLDELETE(scorer);
- }
-
- _CLDELETE(fc);
- _CLDELETE(weight);
- if ( bits != NULL && filter->shouldDeleteBitSet(bits) )
- _CLDELETE(bits);
-}
-
-Query* IndexSearcher::rewrite(Query* original)
-{
- Query* query = original;
- Query* last = original;
- for (Query* rewrittenQuery = query->rewrite(reader);
- rewrittenQuery != query;
- rewrittenQuery = query->rewrite(reader)) {
- query = rewrittenQuery;
- if ( query != last && last != original) {
- _CLDELETE(last);
- }
- last = query;
- }
- return query;
-}
-
-void IndexSearcher::explain(Query* query, int32_t doc, Explanation* ret)
-{
- Weight* weight = query->weight(this);
- weight->explain(reader, doc, ret);
-
- Query* wq = weight->getQuery();
- if ( query != wq ) //query was re-written
- _CLLDELETE(wq);
- _CLDELETE(weight);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.h b/src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.h
deleted file mode 100644
index ce1deac8b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/IndexSearcher.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_search_IndexSearcher_
-#define _lucene_search_IndexSearcher_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "SearchHeader.h"
-#include "CLucene/store/Directory.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/util/BitSet.h"
-#include "HitQueue.h"
-#include "FieldSortedHitQueue.h"
-
-CL_NS_DEF(search)
-/** Implements search over a single IndexReader.
-*
-* <p>Applications usually need only call the inherited {@link search(Query*)}
-* or {@link search(Query*,Filter*)} methods.
-*/
-class IndexSearcher:public Searcher{
- CL_NS(index)::IndexReader* reader;
- bool readerOwner;
-
-public:
- /// Creates a searcher searching the index in the named directory.
- IndexSearcher(const QString& path);
-
- /// Creates a searcher searching the index in the specified directory.
- IndexSearcher(CL_NS(store)::Directory* directory);
-
- /// Creates a searcher searching the provided index.
- IndexSearcher(CL_NS(index)::IndexReader* r);
-
- ~IndexSearcher();
-
- /// Frees resources associated with this Searcher.
- void close();
-
- int32_t docFreq(const CL_NS(index)::Term* term) const;
-
- bool doc(int32_t i, CL_NS(document)::Document* document);
-
- int32_t maxDoc() const;
-
- TopDocs* _search(Query* query, Filter* filter, const int32_t nDocs);
- TopFieldDocs* _search(Query* query, Filter* filter, const int32_t nDocs,
- const Sort* sort);
-
- void _search(Query* query, Filter* filter, HitCollector* results);
-
- CL_NS(index)::IndexReader* getReader() {
- return reader; }
-
- Query* rewrite(Query* original);
- void explain(Query* query, int32_t doc, Explanation* ret);
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.cpp
deleted file mode 100644
index bed7f0d61..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "MultiSearcher.h"
-
-#include "SearchHeader.h"
-#include "HitQueue.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/index/Term.h"
-#include "FieldDocSortedHitQueue.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_USE(document)
-
-CL_NS_DEF(search)
-
- /** Creates a searcher which searches <i>searchers</i>. */
- MultiSearcher::MultiSearcher(Searchable** _searchables):
- _maxDoc(0) {
- searchablesLen = 0;
- while ( _searchables[searchablesLen] != NULL )
- ++searchablesLen;
-
- searchables=_CL_NEWARRAY(Searchable*,searchablesLen+1);
- starts = _CL_NEWARRAY(int32_t,searchablesLen + 1); // build starts array
- for (int32_t i = 0; i < searchablesLen; ++i) {
- searchables[i]=_searchables[i];
- starts[i] = _maxDoc;
- _maxDoc += searchables[i]->maxDoc(); // compute maxDocs
- }
- starts[searchablesLen] = _maxDoc;
- }
-
- MultiSearcher::~MultiSearcher() {
- _CLDELETE_ARRAY(searchables);
- _CLDELETE_ARRAY(starts);
- }
-
-
- // inherit javadoc
- void MultiSearcher::close() {
- for (int32_t i = 0; i < searchablesLen; ++i){
- searchables[i]->close();
- searchables[i]=NULL;
- }
- }
-
- int32_t MultiSearcher::docFreq(const Term* term) const {
- int32_t docFreq = 0;
- for (int32_t i = 0; i < searchablesLen; ++i)
- docFreq += searchables[i]->docFreq(term);
- return docFreq;
- }
-
- /** For use by {@link HitCollector} implementations. */
- bool MultiSearcher::doc(int32_t n, Document* d) {
- int32_t i = subSearcher(n); // find searcher index
- return searchables[i]->doc(n - starts[i], d); // dispatch to searcher
- }
-
- int32_t MultiSearcher::searcherIndex(int32_t n) const{
- return subSearcher(n);
- }
-
- /** Returns index of the searcher for document <code>n</code> in the array
- * used to construct this searcher. */
- int32_t MultiSearcher::subSearcher(int32_t n) const{
- // replace w/ call to Arrays.binarySearch in Java 1.2
- int32_t lo = 0; // search starts array
- int32_t hi = searchablesLen - 1; // for first element less
- // than n, return its index
- int32_t mid,midValue;
- while (hi >= lo) {
- mid = (lo + hi) >> 1;
- midValue = starts[mid];
- if (n < midValue)
- hi = mid - 1;
- else if (n > midValue)
- lo = mid + 1;
- else{ // found a match
- while (mid+1 < searchablesLen && starts[mid+1] == midValue) {
- ++mid; // scan to last match
- }
- return mid;
- }
- }
- return hi;
- }
-
- /** Returns the document number of document <code>n</code> within its
- * sub-index. */
- int32_t MultiSearcher::subDoc(int32_t n) const{
- return n - starts[subSearcher(n)];
- }
-
- int32_t MultiSearcher::maxDoc() const{
- return _maxDoc;
- }
-
- TopDocs* MultiSearcher::_search(Query* query, Filter* filter, const int32_t nDocs) {
- HitQueue* hq = _CLNEW HitQueue(nDocs);
- int32_t totalHits = 0;
- TopDocs* docs;
- int32_t j;
- ScoreDoc* scoreDocs;
- for (int32_t i = 0; i < searchablesLen; i++) { // search each searcher
- docs = searchables[i]->_search(query, filter, nDocs);
- totalHits += docs->totalHits; // update totalHits
- scoreDocs = docs->scoreDocs;
- for ( j = 0; j <docs->scoreDocsLength; ++j) { // merge scoreDocs int_to hq
- scoreDocs[j].doc += starts[i]; // convert doc
- if ( !hq->insert(scoreDocs[j]))
- break; // no more scores > minScore
- }
-
- _CLDELETE(docs);
- }
-
- int32_t scoreDocsLen = hq->size();
- scoreDocs = _CL_NEWARRAY(ScoreDoc, scoreDocsLen);
- {//MSVC 6 scope fix
- for (int32_t i = scoreDocsLen-1; i >= 0; --i) // put docs in array
- scoreDocs[i] = hq->pop();
- }
-
- //cleanup
- _CLDELETE(hq);
-
- return _CLNEW TopDocs(totalHits, scoreDocs, scoreDocsLen);
- }
-
- /** Lower-level search API.
- *
- * <p>{@link HitCollector#collect(int32_t,qreal)} is called for every non-zero
- * scoring document.
- *
- * <p>Applications should only use this if they need <i>all</i> of the
- * matching documents. The high-level search API ({@link
- * Searcher#search(Query)}) is usually more efficient, as it skips
- * non-high-scoring hits.
- *
- * @param query to match documents
- * @param filter if non-null, a bitset used to eliminate some documents
- * @param results to receive hits
- */
- void MultiSearcher::_search(Query* query, Filter* filter, HitCollector* results){
- for (int32_t i = 0; i < searchablesLen; ++i) {
- /* DSR:CL_BUG: Old implementation leaked and was misconceived. We need
- ** to have the original HitCollector ($results) collect *all* hits;
- ** the MultiHitCollector instantiated below serves only to adjust
- ** (forward by starts[i]) the docNo passed to $results.
- ** Old implementation instead created a sort of linked list of
- ** MultiHitCollectors that applied the adjustments in $starts
- ** cumulatively (and was never deleted). */
- HitCollector *docNoAdjuster = _CLNEW MultiHitCollector(results, starts[i]);
- searchables[i]->_search(query, filter, docNoAdjuster);
- _CLDELETE(docNoAdjuster);
- }
- }
-
- TopFieldDocs* MultiSearcher::_search (Query* query, Filter* filter, const int32_t n, const Sort* sort){
- FieldDocSortedHitQueue* hq = NULL;
- int32_t totalHits = 0;
- TopFieldDocs* docs;
- int32_t j;
- FieldDoc** fieldDocs;
-
- for (int32_t i = 0; i < searchablesLen; ++i) { // search each searcher
- docs = searchables[i]->_search (query, filter, n, sort);
- if (hq == NULL){
- hq = _CLNEW FieldDocSortedHitQueue (docs->fields, n);
- docs->fields = NULL; //hit queue takes fields memory
- }
-
- totalHits += docs->totalHits; // update totalHits
- fieldDocs = docs->fieldDocs;
- for(j = 0;j<docs->scoreDocsLength;++j){ // merge scoreDocs into hq
- fieldDocs[j]->scoreDoc.doc += starts[i]; // convert doc
- if (!hq->insert (fieldDocs[j]) )
- break; // no more scores > minScore
- }
- for ( int32_t x=0;x<j;++x )
- fieldDocs[x]=NULL; //move ownership of FieldDoc to the hitqueue
-
- _CLDELETE(docs);
- }
-
- int32_t hqlen = hq->size();
- fieldDocs = _CL_NEWARRAY(FieldDoc*,hqlen);
- for (j = hqlen - 1; j >= 0; j--) // put docs in array
- fieldDocs[j] = hq->pop();
-
- SortField** hqFields = hq->getFields();
- hq->setFields(NULL); //move ownership of memory over to TopFieldDocs
- _CLDELETE(hq);
-
- return _CLNEW TopFieldDocs (totalHits, fieldDocs, hqlen, hqFields);
- }
-
- Query* MultiSearcher::rewrite(Query* original) {
- Query** queries = _CL_NEWARRAY(Query*,searchablesLen+1);
- for (int32_t i = 0; i < searchablesLen; ++i)
- queries[i] = searchables[i]->rewrite(original);
- queries[searchablesLen]=NULL;
- return original->combine(queries);
- }
-
- void MultiSearcher::explain(Query* query, int32_t doc, Explanation* ret) {
- int32_t i = subSearcher(doc); // find searcher index
- searchables[i]->explain(query,doc-starts[i], ret); // dispatch to searcher
- }
-
- MultiHitCollector::MultiHitCollector(HitCollector* _results, int32_t _start):
- results(_results),
- start(_start) {
- }
-
- void MultiHitCollector::collect(const int32_t doc, const qreal score) {
- results->collect(doc + start, score);
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.h b/src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.h
deleted file mode 100644
index 1021fbbec..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiSearcher.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_multisearcher
-#define _lucene_search_multisearcher
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SearchHeader.h"
-#include "CLucene/document/Document.h"
-#include "CLucene/index/Term.h"
-
-CL_NS_DEF(search)
-
- class MultiHitCollector: public HitCollector{
- private:
- HitCollector* results;
- int32_t start;
- public:
- MultiHitCollector(HitCollector* _results, int32_t _start);
- void collect(const int32_t doc, const qreal score) ;
- };
-
-
- /** Implements search over a set of <code>Searchables</code>.
- *
- * <p>Applications usually need only call the inherited {@link #search(Query)}
- * or {@link #search(Query,Filter)} methods.
- */
- class MultiSearcher: public Searcher {
- private:
- Searchable** searchables;
- int32_t searchablesLen;
- int32_t* starts;
- int32_t _maxDoc;
- protected:
- int32_t* getStarts() {
- return starts;
- }
-
- public:
- /** Creates a searcher which searches <i>Searchables</i>. */
- MultiSearcher(Searchable** searchables);
-
- ~MultiSearcher();
-
- /** Frees resources associated with this <code>Searcher</code>. */
- void close() ;
-
- int32_t docFreq(const CL_NS(index)::Term* term) const ;
-
- /** For use by {@link HitCollector} implementations. */
- bool doc(int32_t n, CL_NS(document)::Document* document);
-
- /** For use by {@link HitCollector} implementations to identify the
- * index of the sub-searcher that a particular hit came from. */
- int32_t searcherIndex(int32_t n) const;
-
- int32_t subSearcher(int32_t n) const;
-
- int32_t subDoc(int32_t n) const;
-
- int32_t maxDoc() const;
-
- TopDocs* _search(Query* query, Filter* filter, const int32_t nDocs) ;
-
- TopFieldDocs* _search (Query* query, Filter* filter, const int32_t n, const Sort* sort);
-
- /** Lower-level search API.
- *
- * <p>{@link HitCollector#collect(int32_t,qreal)} is called for every non-zero
- * scoring document.
- *
- * <p>Applications should only use this if they need <i>all</i> of the
- * matching documents. The high-level search API ({@link
- * Searcher#search(Query)}) is usually more efficient, as it skips
- * non-high-scoring hits.
- *
- * @param query to match documents
- * @param filter if non-null, a bitset used to eliminate some documents
- * @param results to receive hits
- */
- void _search(Query* query, Filter* filter, HitCollector* results);
-
- Query* rewrite(Query* original);
- void explain(Query* query, int32_t doc, Explanation* ret);
- };
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.cpp
deleted file mode 100644
index 3bf8d7a26..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "MultiTermQuery.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
-/** Constructs a query for terms matching <code>term</code>. */
-
- MultiTermQuery::MultiTermQuery(Term* t){
- //Func - Constructor
- //Pre - t != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(t != NULL, "t is NULL");
-
- term = _CL_POINTER(t);
-
- }
- MultiTermQuery::MultiTermQuery(const MultiTermQuery& clone):
- Query(clone)
- {
- term = _CLNEW Term(clone.getTerm(false),clone.getTerm(false)->text());
- }
-
- MultiTermQuery::~MultiTermQuery(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- _CLDECDELETE(term);
- }
-
- Term* MultiTermQuery::getTerm(bool pointer) const{
- if ( pointer )
- return _CL_POINTER(term);
- else
- return term;
- }
-
- Query* MultiTermQuery::rewrite(IndexReader* reader) {
- FilteredTermEnum* enumerator = getEnum(reader);
- BooleanQuery* query = _CLNEW BooleanQuery();
- try {
- do {
- Term* t = enumerator->term(false);
- if (t != NULL) {
- TermQuery* tq = _CLNEW TermQuery(t); // found a match
- tq->setBoost(getBoost() * enumerator->difference()); // set the boost
- query->add(tq,true, false, false); // add to q
- }
- } while (enumerator->next());
- } _CLFINALLY ( enumerator->close(); _CLDELETE(enumerator) );
-
- //if we only added one clause and the clause is not prohibited then
- //we can just return the query
- if (query->getClauseCount() == 1) { // optimize 1-clause queries
- BooleanClause* c=0;
- query->getClauses(&c);
-
- if (!c->prohibited) { // just return clause
- c->deleteQuery=false;
- Query* ret = c->query;
-
- _CLDELETE(query);
- return ret;
- }
- }
- return query;
- }
-
- Query* MultiTermQuery::combine(Query** queries) {
- return Query::mergeBooleanQueries(queries);
- }
-
- /** Prints a user-readable version of this query. */
- TCHAR* MultiTermQuery::toString(const TCHAR* field) const{
- StringBuffer buffer;
-
- if ( field==NULL || _tcscmp(term->field(),field)!=0 ) {
- buffer.append(term->field());
- buffer.append( _T(":"));
- }
- buffer.append(term->text());
- if (getBoost() != 1.0f) {
- buffer.appendChar ( '^' );
- buffer.appendFloat( getBoost(),1);
- }
- return buffer.toString();
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.h
deleted file mode 100644
index d37645359..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/MultiTermQuery.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_MultiTermQuery_
-#define _lucene_search_MultiTermQuery_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "FilteredTermEnum.h"
-#include "SearchHeader.h"
-#include "BooleanQuery.h"
-#include "TermQuery.h"
-
-CL_NS_DEF(search)
- /**
- * A {@link Query} that matches documents containing a subset of terms provided
- * by a {@link FilteredTermEnum} enumeration.
- * <P>
- * <code>MultiTermQuery</code> is not designed to be used by itself.
- * <BR>
- * The reason being that it is not intialized with a {@link FilteredTermEnum}
- * enumeration. A {@link FilteredTermEnum} enumeration needs to be provided.
- * <P>
- * For example, {@link WildcardQuery} and {@link FuzzyQuery} extend
- * <code>MultiTermQuery</code> to provide {@link WildcardTermEnum} and
- * {@link FuzzyTermEnum}, respectively.
- */
- class MultiTermQuery: public Query {
- private:
- CL_NS(index)::Term* term;
- protected:
- MultiTermQuery(const MultiTermQuery& clone);
-
- /** Construct the enumeration to be used, expanding the pattern term. */
- virtual FilteredTermEnum* getEnum(CL_NS(index)::IndexReader* reader) = 0;
- public:
- /** Constructs a query for terms matching <code>term</code>. */
- MultiTermQuery(CL_NS(index)::Term* t);
-
- virtual ~MultiTermQuery();
-
- /** Returns the pattern term. */
- CL_NS(index)::Term* getTerm(bool pointer=true) const;
-
- Query* combine(Query** queries);
-
- /** Prints a user-readable version of this query. */
- TCHAR* toString(const TCHAR* field) const;
-
- Query* rewrite(CL_NS(index)::IndexReader* reader);
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.cpp
deleted file mode 100644
index 7611056e7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "PhrasePositions.h"
-
-#include "CLucene/index/Terms.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
- PhrasePositions::PhrasePositions(TermPositions* Tp, const int32_t OffSet){
- //Func - Constructor
- //Pre - t != NULL
- // OffSet != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(Tp != NULL,"Tp is NULL");
- CND_PRECONDITION(OffSet >= 0 ,"OffSet is a negative number");
-
- tp = Tp;
- offset = OffSet;
- position = 0;
- count = 0;
- doc = 0;
-
- _next = NULL;
- }
-
- PhrasePositions::~PhrasePositions(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been deleted
-
- //delete next Phrase position and by doing that
- //all PhrasePositions in the list
- _CLDELETE(_next);
-
- //Check if tp is valid
- if ( tp != NULL ){
- //Close TermPositions tp
- tp->close();
- _CLDELETE(tp);
- }
- }
-
- bool PhrasePositions::next(){
- //Func - Increments to next doc
- //Pre - tp != NULL
- //Post - if there was no next then doc = INT_MAX otherwise
- // doc contains the current document number
-
- CND_PRECONDITION(tp != NULL,"tp is NULL");
-
- //Move to the next in TermPositions tp
- if (!tp->next()) {
- //There is no next so close the stream
- tp->close();
- //delete tp and reset tp to NULL
- _CLVDELETE(tp); //todo: not a clucene object... should be
- //Assign Doc sentinel value
- doc = INT_MAX;
- return false;
- }else{
- doc = tp->doc();
- position = 0;
- return true;
- }
- }
- bool PhrasePositions::skipTo(int32_t target){
- if (!tp->skipTo(target)) {
- tp->close(); // close stream
- doc = LUCENE_INT32_MAX_SHOULDBE; // sentinel value
- return false;
- }
- doc = tp->doc();
- position = 0;
- return true;
- }
- void PhrasePositions::firstPosition(){
- //Func - Read the first TermPosition
- //Pre - tp != NULL
- //Post -
-
- CND_PRECONDITION(tp != NULL,"tp is NULL");
-
- //read first pos
- count = tp->freq();
- //Move to the next TermPosition
- nextPosition();
- }
-
- bool PhrasePositions::nextPosition(){
- //Func - Move to the next position
- //Pre - tp != NULL
- //Post -
-
- CND_PRECONDITION(tp != NULL,"tp is NULL");
-
- if (count-- > 0) {
- //read subsequent pos's
- position = tp->nextPosition() - offset;
-
- //Check position always bigger than or equal to 0
- //bvk: todo, bug??? position < 0 occurs, cant figure out why,
- //old version does it too and will fail the "SearchTest" test
- //CND_CONDITION(position >= 0, "position has become a negative number");
- return true;
- }else{
- return false;
- }
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.h b/src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.h
deleted file mode 100644
index b6c8437b9..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhrasePositions.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_PhrasePositions_
-#define _lucene_search_PhrasePositions_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/Terms.h"
-
-CL_NS_DEF(search)
-
- class PhrasePositions:LUCENE_BASE {
- public:
- int32_t doc; // current doc
- int32_t position; // position in doc
- int32_t count; // remaining pos in this doc
- int32_t offset; // position in phrase
- CL_NS(index)::TermPositions* tp; // stream of positions
- PhrasePositions* _next; // used to make lists
-
-
- //Constructor
- PhrasePositions(CL_NS(index)::TermPositions* Tp, const int32_t o);
- //Destructor
- ~PhrasePositions();
-
- bool next();
- bool skipTo(int32_t target);
-
- void firstPosition();
-
- bool nextPosition();
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.cpp
deleted file mode 100644
index 899cb3cfe..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.cpp
+++ /dev/null
@@ -1,463 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "PhraseQuery.h"
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "BooleanQuery.h"
-#include "TermQuery.h"
-
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/index/IndexReader.h"
-
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/util/VoidList.h"
-#include "CLucene/util/Arrays.h"
-
-#include "ExactPhraseScorer.h"
-#include "SloppyPhraseScorer.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
- PhraseQuery::PhraseQuery():
- terms(false)
- {
- //Func - Constructor
- //Pre - true
- //Post - An empty PhraseQuery has been created
-
- slop = 0;
-
- field = NULL;
- }
- PhraseQuery::PhraseQuery(const PhraseQuery& clone):
- Query(clone), terms(false)
- {
- slop = clone.slop;
- field = clone.field;
- int32_t size=clone.positions.size();
- { //msvc6 scope fix
- for ( int32_t i=0;i<size;i++ ){
- int32_t n = clone.positions[i];
- this->positions.push_back( n );
- }
- }
- size=clone.terms.size();
- { //msvc6 scope fix
- for ( int32_t i=0;i<size;i++ ){
- this->terms.push_back( _CL_POINTER(clone.terms[i]));
- }
- }
- }
- Query* PhraseQuery::clone() const{
- return _CLNEW PhraseQuery(*this);
- }
- bool PhraseQuery::equals(CL_NS(search)::Query *other) const{
- if (!(other->instanceOf(PhraseQuery::getClassName())))
- return false;
-
- PhraseQuery* pq = (PhraseQuery*)other;
- bool ret = (this->getBoost() == pq->getBoost())
- && (this->slop == pq->slop);
-
- if ( ret ){
- CLListEquals<CL_NS(index)::Term,Term::Equals,
- const CL_NS(util)::CLVector<CL_NS(index)::Term*>,
- const CL_NS(util)::CLVector<CL_NS(index)::Term*> > comp;
- ret = comp.equals(&this->terms,&pq->terms);
- }
-
- if ( ret ){
- CLListEquals<int32_t,Equals::Int32,
- const CL_NS(util)::CLVector<int32_t,CL_NS(util)::Deletor::DummyInt32>,
- const CL_NS(util)::CLVector<int32_t,CL_NS(util)::Deletor::DummyInt32> > comp;
- ret = comp.equals(&this->positions,&pq->positions);
- }
- return ret;
- }
-
-
- PhraseQuery::~PhraseQuery(){
- //Func - Destructor
- //Pre - true
- //Post 0 The instance has been destroyed
-
- //Iterate through all the terms
- for (uint32_t i = 0; i < terms.size(); i++){
- _CLLDECDELETE(terms[i]);
- }
- positions.clear();
- }
-
- size_t PhraseQuery::hashCode() const {
- //todo: do cachedHashCode, and invalidate on add/remove clause
- size_t ret = Similarity::floatToByte(getBoost()) ^ Similarity::floatToByte(slop);
-
- { //msvc6 scope fix
- for ( int32_t i=0;terms.size();i++ )
- ret = 31 * ret + terms[i]->hashCode();
- }
- { //msvc6 scope fix
- for ( int32_t i=0;positions.size();i++ )
- ret = 31 * ret + positions[i];
- }
- return ret;
- }
-
- const TCHAR* PhraseQuery::getClassName(){
- return _T("PhraseQuery");
- }
- const TCHAR* PhraseQuery::getQueryName() const{
- //Func - Returns the string "PhraseQuery"
- //Pre - true
- //Post - The string "PhraseQuery" has been returned
- return getClassName();
- }
-
-
- /**
- * Adds a term to the end of the query phrase.
- * The relative position of the term is the one immediately after the last term added.
- */
- void PhraseQuery::add(Term* term) {
- CND_PRECONDITION(term != NULL,"term is NULL");
-
- int32_t position = 0;
-
- if(positions.size() > 0)
- position = (positions[positions.size()-1]) + 1;
-
- add(term, position);
- }
-
- void PhraseQuery::add(Term* term, int32_t position) {
- //Func - Adds a term to the end of the query phrase.
- //Pre - term != NULL
- //Post - The term has been added if its field matches the field of the PhraseQuery
- // and true is returned otherwise false is returned
- CND_PRECONDITION(term != NULL,"term is NULL");
-
- if (terms.size() == 0)
- field = term->field();
- else{
- //Check if the field of the _CLNEW term matches the field of the PhraseQuery
- //can use != because fields are interned
- if ( term->field() != field){
- //return false;
- TCHAR buf[200];
- _sntprintf(buf,200,_T("All phrase terms must be in the same field: %s"),term->field());
- _CLTHROWT(CL_ERR_IllegalArgument,buf);
- }
- }
- //Store the _CLNEW term
- terms.push_back(_CL_POINTER(term));
-
- positions.push_back(position);
- }
-
- void PhraseQuery::getPositions(Array<int32_t>& result) const{
- result.length = positions.size();
- result.values = _CL_NEWARRAY(int32_t,result.length);
- for(int32_t i = 0; i < result.length; i++){
- result.values[i] = positions[i];
- }
- }
- int32_t* PhraseQuery::getPositions() const{
- CND_WARNING(false,"getPositions() is deprecated")
-
- Array<int32_t> arr;
- getPositions(arr);
- return arr.values;
- }
-
- Weight* PhraseQuery::_createWeight(Searcher* searcher) {
- if (terms.size() == 1) { // optimize one-term case
- Term* term = terms[0];
- Query* termQuery = _CLNEW TermQuery(term);
- termQuery->setBoost(getBoost());
- Weight* ret = termQuery->_createWeight(searcher);
- _CLDELETE(termQuery);
- return ret;
- }
- return _CLNEW PhraseWeight(searcher,this);
- }
-
-
- Term** PhraseQuery::getTerms() const{
- //Func - added by search highlighter
- //Pre -
- //Post -
-
- //Let size contain the number of terms
- int32_t size = terms.size();
- Term** ret = _CL_NEWARRAY(Term*,size+1);
-
- CND_CONDITION(ret != NULL,"Could not allocated memory for ret");
-
- //Iterate through terms and copy each pointer to ret
- for ( int32_t i=0;i<size;i++ ){
- ret[i] = terms[i];
- }
- ret[size] = NULL;
- return ret;
- }
-
- TCHAR* PhraseQuery::toString(const TCHAR* f) const{
- //Func - Prints a user-readable version of this query.
- //Pre - f != NULL
- //Post - The query string has been returned
-
- if ( terms.size()== 0 )
- return NULL;
-
- StringBuffer buffer;
- if ( f==NULL || _tcscmp(field,f)!=0) {
- buffer.append(field);
- buffer.append( _T(":"));
- }
-
- buffer.append( _T("\"") );
-
- Term *T = NULL;
-
- //iterate through all terms
- for (uint32_t i = 0; i < terms.size(); i++) {
- //Get the i-th term
- T = terms[i];
-
- //Ensure T is a valid Term
- CND_CONDITION(T !=NULL,"T is NULL");
-
- buffer.append( T->text() );
- //Check if i is at the end of terms
- if (i != terms.size()-1){
- buffer.append(_T(" "));
- }
- }
-
- buffer.append( _T("\"") );
-
- if (slop != 0) {
- buffer.append(_T("~"));
- buffer.appendFloat(slop,0);
- }
-
- //Check if there is an other boost factor than 1.0
- if (getBoost() != 1.0f) {
- buffer.append(_T("^"));
- buffer.appendFloat( getBoost(),1 );
- }
-
- //return the query string
- return buffer.toString();
- }
-
-
-
-
-
-
-
-
- PhraseQuery::PhraseWeight::PhraseWeight(Searcher* searcher, PhraseQuery* _this) {
- this->_this=_this;
- this->value = 0;
- this->idf = 0;
- this->queryNorm = 0;
- this->queryWeight = 0;
- this->searcher = searcher;
- }
-
- TCHAR* PhraseQuery::PhraseWeight::toString() {
- return STRDUP_TtoT(_T("weight(PhraseQuery)"));
- }
- PhraseQuery::PhraseWeight::~PhraseWeight(){
- }
-
-
- Query* PhraseQuery::PhraseWeight::getQuery() { return _this; }
- qreal PhraseQuery::PhraseWeight::getValue() { return value; }
-
- qreal PhraseQuery::PhraseWeight::sumOfSquaredWeights(){
- idf = _this->getSimilarity(searcher)->idf(&_this->terms, searcher);
- queryWeight = idf * _this->getBoost(); // compute query weight
- return queryWeight * queryWeight; // square it
- }
-
- void PhraseQuery::PhraseWeight::normalize(qreal queryNorm) {
- this->queryNorm = queryNorm;
- queryWeight *= queryNorm; // normalize query weight
- value = queryWeight * idf; // idf for document
- }
-
- Scorer* PhraseQuery::PhraseWeight::scorer(IndexReader* reader) {
- //Func -
- //Pre -
- //Post -
-
- //Get the length of terms
- int32_t tpsLength = _this->terms.size();
-
- //optimize zero-term case
- if (tpsLength == 0)
- return NULL;
-
- TermPositions** tps = _CL_NEWARRAY(TermPositions*,tpsLength+1);
-
- //Check if tps has been allocated properly
- CND_CONDITION(tps != NULL,"Could not allocate memory for tps");
-
- TermPositions* p = NULL;
-
- //Iterate through all terms
- int32_t size = _this->terms.size();
- for (int32_t i = 0; i < size; i++) {
- //Get the termPostitions for the i-th term
- p = reader->termPositions(_this->terms[i]);
-
- //Check if p is valid
- if (p == NULL) {
- //Delete previous retrieved termPositions
- while (--i >= 0){
- _CLVDELETE(tps[i]); //todo: not a clucene object... should be
- }
- _CLDELETE_ARRAY(tps);
- return NULL;
- }
-
- //Store p at i in tps
- tps[i] = p;
- }
- tps[tpsLength] = NULL;
-
- Scorer* ret = NULL;
-
- Array<int32_t> positions;
- _this->getPositions(positions);
- int32_t slop = _this->getSlop();
- if ( slop != 0)
- // optimize exact case
- //todo: need to pass these: this, tps,
- ret = _CLNEW SloppyPhraseScorer(this,tps,positions.values,
- _this->getSimilarity(searcher),
- slop, reader->norms(_this->field));
- else
- ret = _CLNEW ExactPhraseScorer(this, tps, positions.values,
- _this->getSimilarity(searcher),
- reader->norms(_this->field));
- positions.deleteArray();
-
- CND_CONDITION(ret != NULL,"Could not allocate memory for ret");
-
- //tps can be deleted safely. SloppyPhraseScorer or ExactPhraseScorer will take care
- //of its values
-
- _CLDELETE_ARRAY(tps);
- return ret;
- }
-
- void PhraseQuery::PhraseWeight::explain(IndexReader* reader, int32_t doc, Explanation* result){
- TCHAR descbuf[LUCENE_SEARCH_EXPLANATION_DESC_LEN+1];
- TCHAR* tmp;
-
- tmp = getQuery()->toString();
- _sntprintf(descbuf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,_T("weight(%s in %d), product of:"),
- tmp,doc);
- _CLDELETE_CARRAY(tmp);
- result->setDescription(descbuf);
-
- StringBuffer docFreqs;
- StringBuffer query;
- query.appendChar('\"');
- for (uint32_t i = 0; i < _this->terms.size(); i++) {
- if (i != 0) {
- docFreqs.appendChar(' ');
- query.appendChar(' ');
- }
-
- Term* term = _this->terms[i];
-
- docFreqs.append(term->text());
- docFreqs.appendChar('=');
- docFreqs.appendInt(searcher->docFreq(term));
-
- query.append(term->text());
- }
- query.appendChar('\"');
-
- _sntprintf(descbuf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("idf(%s: %s)"),_this->field,docFreqs.getBuffer());
- Explanation* idfExpl = _CLNEW Explanation(idf, descbuf);
-
- // explain query weight
- Explanation* queryExpl = _CLNEW Explanation;
- tmp = getQuery()->toString();
- _sntprintf(descbuf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("queryWeight(%s), product of:"),tmp);
- _CLDELETE_CARRAY(tmp);
- queryExpl->setDescription(descbuf);
-
- Explanation* boostExpl = _CLNEW Explanation(_this->getBoost(), _T("boost"));
- if (_this->getBoost() != 1.0f)
- queryExpl->addDetail(boostExpl);
- queryExpl->addDetail(idfExpl);
-
- Explanation* queryNormExpl = _CLNEW Explanation(queryNorm,_T("queryNorm"));
- queryExpl->addDetail(queryNormExpl);
-
- queryExpl->setValue(boostExpl->getValue() *
- idfExpl->getValue() *
- queryNormExpl->getValue());
-
- result->addDetail(queryExpl);
-
- // explain field weight
- Explanation* fieldExpl = _CLNEW Explanation;
- _sntprintf(descbuf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("fieldWeight(%s:%s in %d), product of:"),
- _this->field,query.getBuffer(),doc);
- fieldExpl->setDescription(descbuf);
-
-
- Explanation* tfExpl = _CLNEW Explanation;
- scorer(reader)->explain(doc, tfExpl);
- fieldExpl->addDetail(tfExpl);
- fieldExpl->addDetail(idfExpl);
-
- Explanation* fieldNormExpl = _CLNEW Explanation();
- uint8_t* fieldNorms = reader->norms(_this->field);
- qreal fieldNorm =
- fieldNorms!=NULL ? Similarity::decodeNorm(fieldNorms[doc]) : 0.0f;
- fieldNormExpl->setValue(fieldNorm);
-
-
- _sntprintf(descbuf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("fieldNorm(field=%s, doc=%d)"),_this->field,doc);
- fieldNormExpl->setDescription(descbuf);
- fieldExpl->addDetail(fieldNormExpl);
-
- fieldExpl->setValue(tfExpl->getValue() *
- idfExpl->getValue() *
- fieldNormExpl->getValue());
-
- result->addDetail(fieldExpl);
-
- // combine them
- result->setValue(queryExpl->getValue() * fieldExpl->getValue());
-
- if (queryExpl->getValue() == 1.0f){
- result->set(*fieldExpl);
- _CLDELETE(fieldExpl);
- }
- }
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.h
deleted file mode 100644
index 6b3255822..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQuery.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_PhraseQuery_
-#define _lucene_search_PhraseQuery_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "BooleanQuery.h"
-#include "TermQuery.h"
-
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/index/IndexReader.h"
-
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/util/VoidList.h"
-
-#include "ExactPhraseScorer.h"
-#include "SloppyPhraseScorer.h"
-
-CL_NS_DEF(search)
- // A Query that matches documents containing a particular sequence of terms.
- // This may be combined with other terms with a {@link BooleanQuery}.
- class PhraseQuery: public Query {
- private:
- CL_NS(util)::CLVector<int32_t,CL_NS(util)::Deletor::DummyInt32> positions;
- int32_t slop;
-
- const TCHAR* field;
- CL_NS(util)::CLVector<CL_NS(index)::Term*> terms;
-
-
- class PhraseWeight: public Weight {
- private:
- Searcher* searcher;
- qreal value;
- qreal idf;
- qreal queryNorm;
- qreal queryWeight;
- PhraseQuery* _this;
- public:
- PhraseWeight(Searcher* searcher, PhraseQuery* _this);
- ~PhraseWeight();
- TCHAR* toString();
-
- Query* getQuery();
- qreal getValue();
-
- qreal sumOfSquaredWeights();
- void normalize(qreal queryNorm);
- Scorer* scorer(CL_NS(index)::IndexReader* reader);
- void explain(CL_NS(index)::IndexReader* reader, int32_t doc, Explanation* ret);
- TCHAR* toString(TCHAR* f);
- bool equals(PhraseWeight* o);
- };
- friend class PhraseWeight;
- protected:
- Weight* _createWeight(Searcher* searcher);
- PhraseQuery(const PhraseQuery& clone);
- public:
- //Constructor
- PhraseQuery();
-
- //Destructor
- ~PhraseQuery();
-
- //Returns the string "PhraseQuery"
- const TCHAR* getQueryName() const;
- static const TCHAR* getClassName();
-
- //Sets the number of other words permitted between words in query phrase.
- //If zero, then this is an exact phrase search. For larger values this works
- //like a WITHIN or NEAR operator.
- //
- //The slop is in fact an edit-distance, where the units correspond to
- //moves of terms in the query phrase out of position. For example, to switch
- //the order of two words requires two moves (the first move places the words
- //atop one another), so to permit re-orderings of phrases, the slop must be
- //at least two.
- //
- //More exact matches are scored higher than sloppier matches, thus search
- //results are sorted by exactness.
- //
- //The slop is zero by default, requiring exact matches.
- void setSlop(const int32_t s) { slop = s; }
-
- //Returns the slop. See setSlop().
- int32_t getSlop() const { return slop; }
-
- //Adds a term to the end of the query phrase.
- void add(CL_NS(index)::Term* term);
- void add(CL_NS(index)::Term* term, int32_t position);
-
-
-
- //Returns the sum of squared weights
- qreal sumOfSquaredWeights(Searcher* searcher);
-
- //Normalizes the Weight
- void normalize(const qreal norm);
-
- Scorer* scorer(CL_NS(index)::IndexReader* reader);
-
- //added by search highlighter
- CL_NS(index)::Term** getTerms() const;
- _CL_DEPRECATED( deleteDocuments ) int32_t* getPositions() const; ///@deprecated. use getPositions(Array<int32_t>& result)
- void getPositions(Array<int32_t>& result) const;
- const TCHAR* getFieldName() const{ return field; }
-
- //Prints a user-readable version of this query.
- TCHAR* toString(const TCHAR* f) const;
-
- Query* clone() const;
- bool equals(CL_NS(search)::Query *) const;
-
- size_t hashCode() const;
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQueue.h b/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQueue.h
deleted file mode 100644
index c0682fcaf..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseQueue.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_PriorityQueue_
-#define _lucene_search_PriorityQueue_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/PriorityQueue.h"
-#include "PhrasePositions.h"
-
-CL_NS_DEF(search)
- class PhraseQueue: public CL_NS(util)::PriorityQueue<PhrasePositions*,
- CL_NS(util)::Deletor::Object<PhrasePositions> > {
- public:
- PhraseQueue(const int32_t size) {
- initialize(size,false);
- }
- ~PhraseQueue(){
- }
-
- protected:
- bool lessThan(PhrasePositions* pp1, PhrasePositions* pp2) {
- if (pp1->doc == pp2->doc)
- return pp1->position < pp2->position;
- else
- return pp1->doc < pp2->doc;
- }
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.cpp
deleted file mode 100644
index b2da2316a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "PhraseScorer.h"
-
-#include "PhraseQueue.h"
-#include "PhrasePositions.h"
-#include "Scorer.h"
-#include "Similarity.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
-
- PhraseScorer::PhraseScorer(Weight* weight, TermPositions** tps,
- int32_t* positions, Similarity* similarity, uint8_t* norms):
- Scorer(similarity)
- {
- //Func - Constructor
- //Pre - tps != NULL and is an array of TermPositions
- // tpsLength >= 0
- // n != NULL
- //Post - The instance has been created
-
- CND_PRECONDITION(tps != NULL,"tps is NULL");
-
- //norms are only used if phraseFreq returns more than 0.0
- //phraseFreq should only return more than 0.0 if norms != NULL
- //CND_PRECONDITION(n != NULL,"n is NULL");
-
- firstTime = true;
- more = true;
- this->norms = norms;
- this->weight = weight;
- this->value = weight->getValue();
-
- //reset internal pointers
- first = NULL;
- last = NULL;
-
- //use pq to build a sorted list of PhrasePositions
- int32_t i = 0;
- while(tps[i] != NULL){
- PhrasePositions *pp = _CLNEW PhrasePositions(tps[i], positions[i]);
- CND_CONDITION(pp != NULL,"Could not allocate memory for pp");
-
- //Store PhrasePos into the PhrasePos pq
- if (last != NULL) { // add next to end of list
- last->_next = pp;
- } else
- first = pp;
- last = pp;
-
- i++;
- }
-
- pq = _CLNEW PhraseQueue(i); //i==tps.length
- CND_CONDITION(pq != NULL,"Could not allocate memory for pq");
- }
-
- PhraseScorer::~PhraseScorer() {
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- //The PhraseQueue pq (which is a PriorityQueue) pq is actually empty at present, the elements
- //having been transferred by pqToList() to the linked list starting with
- //first. The nodes of that linked list are deleted by the destructor of
- //first, rather than the destructor of pq.
- _CLDELETE(first);
- _CLDELETE(pq);
- }
-
- bool PhraseScorer::next(){
- if (firstTime) {
- init();
- firstTime = false;
- } else if (more) {
- more = last->next(); // trigger further scanning
- }
- return doNext();
- }
-
- // next without initial increment
- bool PhraseScorer::doNext() {
- while (more) {
- while (more && first->doc < last->doc) { // find doc w/ all the terms
- more = first->skipTo(last->doc); // skip first upto last
- firstToLast(); // and move it to the end
- }
-
- if (more) {
- // found a doc with all of the terms
- freq = phraseFreq(); // check for phrase
- if (freq == 0.0f) // no match
- more = last->next(); // trigger further scanning
- else
- return true; // found a match
- }
- }
- return false; // no more matches
- }
-
- qreal PhraseScorer::score(){
- //System.out.println("scoring " + first.doc);
- qreal raw = getSimilarity()->tf(freq) * value; // raw score
- return raw * Similarity::decodeNorm(norms[first->doc]); // normalize
- }
-
- bool PhraseScorer::skipTo(int32_t target) {
- for (PhrasePositions* pp = first; more && pp != NULL; pp = pp->_next) {
- more = pp->skipTo(target);
- }
- if (more)
- sort(); // re-sort
- return doNext();
- }
-
- void PhraseScorer::init() {
- for (PhrasePositions* pp = first; more && pp != NULL; pp = pp->_next)
- more = pp->next();
- if(more)
- sort();
- }
-
- void PhraseScorer::sort() {
- pq->clear();
- for (PhrasePositions* pp = first; pp != NULL; pp = pp->_next)
- pq->put(pp);
- pqToList();
- }
-
-
-
- void PhraseScorer::pqToList(){
- //Func - Transfers the PhrasePositions from the PhraseQueue pq to
- // the PhrasePositions list with first as its first element
- //Pre - pq != NULL
- // first = NULL
- // last = NULL
- //Post - All PhrasePositions have been transfered to the list
- // of PhrasePositions of which the first element is pointed to by first
- // and the last element is pointed to by last
-
- CND_PRECONDITION(pq != NULL,"pq is NULL");
-
- last = first = NULL;
-
- PhrasePositions* PhrasePos = NULL;
-
- //As long pq is not empty
- while (pq->top() != NULL){
- //Pop a PhrasePositions instance
- PhrasePos = pq->pop();
-
- // add next to end of list
- if (last != NULL) {
- last->_next = PhrasePos;
- } else {
- first = PhrasePos;
- }
-
- //Let last point to the new last PhrasePositions instance just added
- last = PhrasePos;
- //Reset the next of last to NULL
- last->_next = NULL;
- }
-
- //Check to see that pq is empty now
- CND_CONDITION(pq->size()==0, "pq is not empty while it should be");
- }
-
- void PhraseScorer::firstToLast(){
- //Func - Moves first to the end of the list
- //Pre - first is NULL or points to an PhrasePositions Instance
- // last is NULL or points to an PhrasePositions Instance
- // first and last both are NULL or both are not NULL
- //Post - The first element has become the last element in the list
-
- CND_PRECONDITION(((first==NULL && last==NULL) ||(first !=NULL && last != NULL)),
- "Either first or last is NULL but not both");
-
- //Check if first and last are valid pointers
- if(first && last){
- last->_next = first;
- last = first;
- first = first->_next;
- last->_next = NULL;
- }
- }
-
-
- void PhraseScorer::explain(int32_t _doc, Explanation* tfExplanation) {
- while (next() && doc() < _doc){
- }
-
- qreal phraseFreq = (doc() == _doc) ? freq : 0.0f;
- tfExplanation->setValue(getSimilarity()->tf(phraseFreq));
-
- StringBuffer buf;
- buf.append(_T("tf(phraseFreq="));
- buf.appendFloat(phraseFreq,2);
- buf.append(_T(")"));
- tfExplanation->setDescription(buf.getBuffer());
- }
-
- TCHAR* PhraseScorer::toString() {
- StringBuffer buf;
- buf.append(_T("scorer("));
-
- TCHAR* tmp = weight->toString();
- buf.append(tmp);
- _CLDELETE_CARRAY(tmp);
-
- buf.append(_T(")"));
-
- return buf.toString();
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.h
deleted file mode 100644
index 89f7a1fbb..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PhraseScorer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_PhraseScorer_
-#define _lucene_search_PhraseScorer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "PhraseQueue.h"
-#include "PhrasePositions.h"
-#include "Scorer.h"
-#include "Similarity.h"
-
-CL_NS_DEF(search)
-
- class PhraseScorer: public Scorer {
- private:
- Weight* weight;
- qreal freq;
- bool firstTime;
- bool more;
-
- protected:
- uint8_t* norms;
- qreal value;
-
- PhraseQueue* pq; //is used to order the list point to by first and last
- PhrasePositions* first; //Points to the first in the list of PhrasePositions
- PhrasePositions* last; //Points to the last in the list of PhrasePositions
-
- public:
- //Constructor
- PhraseScorer(Weight* weight, CL_NS(index)::TermPositions** tps,
- int32_t* positions, Similarity* similarity, uint8_t* norms);
- virtual ~PhraseScorer();
-
- int32_t doc() const { return first->doc; }
- bool next();
- qreal score();
- bool skipTo(int32_t target);
-
-
- void explain(int32_t doc, Explanation* ret);
- TCHAR* toString();
- protected:
- virtual qreal phraseFreq() =0;
-
- //Transfers the PhrasePositions from the PhraseQueue pq to
- //the PhrasePositions list with first as its first element
- void pqToList();
-
- //Moves first to the end of the list
- void firstToLast();
- private:
- bool doNext();
- void init();
- void sort();
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.cpp
deleted file mode 100644
index 6bb27d1ca..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "PrefixQuery.h"
-#include "CLucene/util/BitSet.h"
-
-CL_NS_USE(util)
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
- PrefixQuery::PrefixQuery(Term* Prefix){
- //Func - Constructor.
- // Constructs a query for terms starting with prefix
- //Pre - Prefix != NULL
- //Post - The instance has been created
-
- //Get a pointer to Prefix
- prefix = _CL_POINTER(Prefix);
- }
-
- PrefixQuery::PrefixQuery(const PrefixQuery& clone):Query(clone){
- prefix = _CL_POINTER(clone.prefix);
- }
- Query* PrefixQuery::clone() const{
- return _CLNEW PrefixQuery(*this);
- }
-
- Term* PrefixQuery::getPrefix(bool pointer){
- if ( pointer )
- return _CL_POINTER(prefix);
- else
- return prefix;
- }
-
- PrefixQuery::~PrefixQuery(){
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed.
-
- //Delete prefix by finalizing it
- _CLDECDELETE(prefix);
- }
-
-
- /** Returns a hash code value for this object.*/
- size_t PrefixQuery::hashCode() const {
- return Similarity::floatToByte(getBoost()) ^ prefix->hashCode();
- }
-
- const TCHAR* PrefixQuery::getQueryName()const{
- //Func - Returns the name "PrefixQuery"
- //Pre - true
- //Post - The string "PrefixQuery" has been returned
-
- return getClassName();
- }
- const TCHAR* PrefixQuery::getClassName(){
- //Func - Returns the name "PrefixQuery"
- //Pre - true
- //Post - The string "PrefixQuery" has been returned
-
- return _T("PrefixQuery");
- }
-
- bool PrefixQuery::equals(Query * other) const{
- if (!(other->instanceOf(PrefixQuery::getClassName())))
- return false;
-
- PrefixQuery* rq = (PrefixQuery*)other;
- bool ret = (this->getBoost() == rq->getBoost())
- && (this->prefix->equals(rq->prefix));
-
- return ret;
- }
-
- Query* PrefixQuery::rewrite(IndexReader* reader){
- BooleanQuery* query = _CLNEW BooleanQuery();
- TermEnum* enumerator = reader->terms(prefix);
- Term* lastTerm = NULL;
- try {
- const TCHAR* prefixText = prefix->text();
- const TCHAR* prefixField = prefix->field();
- const TCHAR* tmp;
- size_t i;
- int32_t prefixLen = prefix->textLength();
- do {
- lastTerm = enumerator->term();
- if (lastTerm != NULL && lastTerm->field() == prefixField ){
-
- //now see if term->text() starts with prefixText
- int32_t termLen = lastTerm->textLength();
- if ( prefixLen>termLen )
- break; //the prefix is longer than the term, can't be matched
-
- tmp = lastTerm->text();
-
- //check for prefix match in reverse, since most change will be at the end
- for ( i=prefixLen-1;i!=-1;--i ){
- if ( tmp[i] != prefixText[i] ){
- tmp=NULL;//signals inequality
- break;
- }
- }
- if ( tmp == NULL )
- break;
-
- TermQuery* tq = _CLNEW TermQuery(lastTerm); // found a match
- tq->setBoost(getBoost()); // set the boost
- query->add(tq,true,false, false); // add to query
- } else
- break;
- _CLDECDELETE(lastTerm);
- } while (enumerator->next());
- }_CLFINALLY(
- enumerator->close();
- _CLDELETE(enumerator);
- _CLDECDELETE(lastTerm);
- );
- _CLDECDELETE(lastTerm);
-
-
- //if we only added one clause and the clause is not prohibited then
- //we can just return the query
- if (query->getClauseCount() == 1) { // optimize 1-clause queries
- BooleanClause* c=0;
- query->getClauses(&c);
-
- if (!c->prohibited) { // just return clause
- c->deleteQuery=false;
- Query* ret = c->query;
-
- _CLDELETE(query);
- return ret;
- }
- }
-
- return query;
- }
-
- Query* PrefixQuery::combine(Query** queries) {
- return Query::mergeBooleanQueries(queries);
- }
-
- TCHAR* PrefixQuery::toString(const TCHAR* field) const{
- //Func - Creates a user-readable version of this query and returns it as as string
- //Pre - field != NULL
- //Post - a user-readable version of this query has been returned as as string
-
- //Instantiate a stringbuffer buffer to store the readable version temporarily
- CL_NS(util)::StringBuffer buffer;
- //check if field equal to the field of prefix
- if( field==NULL || _tcscmp(prefix->field(),field) != 0 ) {
- //Append the field of prefix to the buffer
- buffer.append(prefix->field());
- //Append a colon
- buffer.append(_T(":") );
- }
- //Append the text of the prefix
- buffer.append(prefix->text());
- //Append a wildchar character
- buffer.append(_T("*"));
- //if the boost factor is not eaqual to 1
- if (getBoost() != 1.0f) {
- //Append ^
- buffer.append(_T("^"));
- //Append the boost factor
- buffer.appendFloat( getBoost(),1);
- }
- //Convert StringBuffer buffer to TCHAR block and return it
- return buffer.toString();
- }
-
-
-
-
-
-
-
-
-PrefixFilter::PrefixFilter( Term* prefix )
-{
- this->prefix = _CL_POINTER(prefix);
-}
-
-PrefixFilter::~PrefixFilter()
-{
- _CLDECDELETE(prefix);
-}
-
-PrefixFilter::PrefixFilter( const PrefixFilter& copy ) :
- prefix( _CL_POINTER(copy.prefix) )
-{
-}
-
-Filter* PrefixFilter::clone() const {
- return _CLNEW PrefixFilter(*this );
-}
-
-TCHAR* PrefixFilter::toString()
-{
- //Instantiate a stringbuffer buffer to store the readable version temporarily
- CL_NS(util)::StringBuffer buffer;
- //check if field equal to the field of prefix
- if( prefix->field() != NULL ) {
- //Append the field of prefix to the buffer
- buffer.append(prefix->field());
- //Append a colon
- buffer.append(_T(":") );
- }
- //Append the text of the prefix
- buffer.append(prefix->text());
- buffer.append(_T("*"));
-
- //Convert StringBuffer buffer to TCHAR block and return it
- return buffer.toString();
-}
-
-/** Returns a BitSet with true for documents which should be permitted in
-search results, and false for those that should not. */
-BitSet* PrefixFilter::bits( IndexReader* reader )
-{
- BitSet* bts = _CLNEW BitSet( reader->maxDoc() );
- TermEnum* enumerator = reader->terms(prefix);
- TermDocs* docs = reader->termDocs();
- const TCHAR* prefixText = prefix->text();
- const TCHAR* prefixField = prefix->field();
- const TCHAR* tmp;
- size_t i;
- int32_t prefixLen = prefix->textLength();
- Term* lastTerm = NULL;
-
- try{
- do{
- lastTerm = enumerator->term(false);
- if (lastTerm != NULL && lastTerm->field() == prefixField ){
- //now see if term->text() starts with prefixText
- int32_t termLen = lastTerm->textLength();
- if ( prefixLen>termLen )
- break; //the prefix is longer than the term, can't be matched
-
- tmp = lastTerm->text();
-
- //check for prefix match in reverse, since most change will be at the end
- for ( i=prefixLen-1;i!=-1;--i ){
- if ( tmp[i] != prefixText[i] ){
- tmp=NULL;//signals inequality
- break;
- }
- }
- if ( tmp == NULL )
- break;
-
- docs->seek(enumerator);
- while (docs->next()) {
- bts->set(docs->doc());
- }
- }
- }while(enumerator->next());
- } _CLFINALLY(
- docs->close();
- _CLDELETE(docs);
- enumerator->close();
- _CLDELETE(enumerator);
- )
-
- return bts;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.h
deleted file mode 100644
index 8e3f41352..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/PrefixQuery.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_PrefixQuery
-#define _lucene_search_PrefixQuery
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/index/IndexReader.h"
-#include "SearchHeader.h"
-#include "BooleanQuery.h"
-#include "TermQuery.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_DEF(search)
- //PrefixQuery is a Query that matches documents containing terms with a specified prefix.
-
- class PrefixQuery: public Query {
- private:
- CL_NS(index)::Term* prefix;
- protected:
- PrefixQuery(const PrefixQuery& clone);
- public:
-
- //Constructor. Constructs a query for terms starting with prefix
- PrefixQuery(CL_NS(index)::Term* Prefix);
-
- //Destructor
- ~PrefixQuery();
-
- //Returns the name "PrefixQuery"
- const TCHAR* getQueryName() const;
- static const TCHAR* getClassName();
-
- /** Returns the prefix of this query. */
- CL_NS(index)::Term* getPrefix(bool pointer=true);
-
- Query* combine(Query** queries);
- Query* rewrite(CL_NS(index)::IndexReader* reader);
- Query* clone() const;
- bool equals(Query * other) const;
-
- //Creates a user-readable version of this query and returns it as as string
- TCHAR* toString(const TCHAR* field) const;
-
- size_t hashCode() const;
- };
-
-
- class PrefixFilter: public Filter
- {
- private:
- CL_NS(index)::Term* prefix;
- protected:
- PrefixFilter( const PrefixFilter& copy );
-
- public:
- PrefixFilter(CL_NS(index)::Term* prefix);
- ~PrefixFilter();
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader );
-
- Filter* clone() const;
- TCHAR* toString();
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.cpp
deleted file mode 100644
index 2dbe2d7cd..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "QueryFilter.h"
-#include "IndexSearcher.h"
-
-CL_NS_DEF(search)
-CL_NS_USE(util)
-CL_NS_USE(index)
-
-
-QueryFilter::QueryFilter( const Query* query )
-{
- this->query = query->clone();
-}
-
-
-QueryFilter::~QueryFilter()
-{
- _CLDELETE( query );
-}
-
-
-QueryFilter::QueryFilter( const QueryFilter& copy )
-{
- this->query = copy.query->clone();
-}
-
-
-Filter* QueryFilter::clone() const {
- return _CLNEW QueryFilter(*this );
-}
-
-
-TCHAR* QueryFilter::toString()
-{
- TCHAR* qt = query->toString();
- size_t len = _tcslen(qt) + 14;
- TCHAR* ret = _CL_NEWARRAY( TCHAR, len );
- ret[0] = 0;
- _sntprintf( ret, len, _T("QueryFilter(%s)"), qt );
- _CLDELETE_CARRAY(qt);
- return ret;
-}
-
-
-/** Returns a BitSet with true for documents which should be permitted in
-search results, and false for those that should not. */
-BitSet* QueryFilter::bits( IndexReader* reader )
-{
- BitSet* bits = _CLNEW BitSet(reader->maxDoc());
-
- IndexSearcher s(reader);
- QFHitCollector hc(bits);
- s._search(query, NULL, &hc);
- return bits;
-}
-
-
-QueryFilter::QFHitCollector::QFHitCollector(CL_NS(util)::BitSet* bits){
- this->bits = bits;
-}
-
-void QueryFilter::QFHitCollector::collect(const int32_t doc, const qreal score) {
- bits->set(doc); // set bit for hit
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.h b/src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.h
deleted file mode 100644
index 8d423b2f7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/QueryFilter.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_QueryFilter_
-#define _lucene_search_QueryFilter_
-
-#include "CLucene/util/BitSet.h"
-#include "CLucene/index/IndexReader.h"
-#include "SearchHeader.h"
-#include "CachingWrapperFilter.h"
-
-CL_NS_DEF(search)
-
-class QueryFilter: public Filter
-{
-private:
- Query* query;
-
- class QFHitCollector: public HitCollector{
- CL_NS(util)::BitSet* bits;
- public:
- QFHitCollector(CL_NS(util)::BitSet* bits);
- void collect(const int32_t doc, const qreal score);
- };
-
-protected:
- QueryFilter( const QueryFilter& copy );
-public:
- QueryFilter( const Query* query );
-
- ~QueryFilter();
-
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader );
-
- Filter *clone() const;
-
- TCHAR *toString();
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.cpp
deleted file mode 100644
index 66ee5ce55..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "RangeFilter.h"
-
-CL_NS_DEF(search)
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_USE(document)
-
-
-RangeFilter::RangeFilter( const TCHAR* fieldName, const TCHAR* lowerTerm, const TCHAR* upperTerm, bool includeLower, bool includeUpper )
-{
- this->field = STRDUP_TtoT(fieldName);
- if ( lowerTerm != NULL )
- this->lowerValue = STRDUP_TtoT(lowerTerm);
- else
- this->lowerValue = NULL;
- if ( upperTerm != NULL )
- this->upperValue = STRDUP_TtoT(upperTerm);
- else
- this->upperValue = NULL;
- this->includeLower = includeLower;
- this->includeUpper = includeUpper;
-}
-
-
-/**
- * Constructs a filter for field <code>fieldName</code> matching
- * less than or equal to <code>upperTerm</code>.
- */
-RangeFilter* RangeFilter::Less( TCHAR* fieldName, TCHAR* upperTerm ) {
- return new RangeFilter( fieldName, NULL, upperTerm, false, true );
-}
-
-
-/**
-* Constructs a filter for field <code>fieldName</code> matching
-* more than or equal to <code>lowerTerm</code>.
-*/
-RangeFilter* RangeFilter::More( TCHAR* fieldName, TCHAR* lowerTerm ) {
- return new RangeFilter( fieldName, lowerTerm, NULL, true, false );
-}
-
-
-RangeFilter::~RangeFilter()
-{
- _CLDELETE_CARRAY( lowerValue );
- _CLDELETE_CARRAY( field );
- _CLDELETE_CARRAY( upperValue );
-}
-
-
-RangeFilter::RangeFilter( const RangeFilter& copy ) :
- field( STRDUP_TtoT(copy.field) ),
- lowerValue( STRDUP_TtoT(copy.lowerValue) ),
- upperValue( STRDUP_TtoT(copy.upperValue) ),
- includeLower( copy.includeLower ),
- includeUpper( copy.includeUpper )
-{
-}
-
-
-Filter* RangeFilter::clone() const {
- return _CLNEW RangeFilter(*this );
-}
-
-
-TCHAR* RangeFilter::toString()
-{
- size_t len = (field ? _tcslen(field) : 0) + (lowerValue ? _tcslen(lowerValue) : 0) + (upperValue ? _tcslen(upperValue) : 0) + 8;
- TCHAR* ret = _CL_NEWARRAY( TCHAR, len );
- ret[0] = 0;
- _sntprintf( ret, len, _T("%s: [%s-%s]"), field, (lowerValue?lowerValue:_T("")), (upperValue?upperValue:_T("")) );
-
- return ret;
-}
-
-
-/** Returns a BitSet with true for documents which should be permitted in
-search results, and false for those that should not. */
-BitSet* RangeFilter::bits( IndexReader* reader )
-{
- BitSet* bts = _CLNEW BitSet( reader->maxDoc() );
- Term* term = NULL;
-
- Term* t = _CLNEW Term( field, (lowerValue ? lowerValue : _T("")), false );
- TermEnum* enumerator = reader->terms( t ); // get enumeration of all terms after lowerValue
- _CLDECDELETE( t );
-
- if( enumerator->term(false) == NULL ) {
- _CLDELETE( enumerator );
- return bts;
- }
-
- bool checkLower = false;
- if( !includeLower ) // make adjustments to set to exclusive
- checkLower = true;
-
- TermDocs* termDocs = reader->termDocs();
-
- try
- {
- do
- {
- term = enumerator->term();
-
- if( term == NULL || _tcscmp(term->field(), field) )
- break;
-
- if( !checkLower || lowerValue == NULL || _tcscmp(term->text(), lowerValue) > 0 )
- {
- checkLower = false;
- if( upperValue != NULL )
- {
- int compare = _tcscmp( upperValue, term->text() );
-
- /* if beyond the upper term, or is exclusive and
- * this is equal to the upper term, break out */
- if( (compare < 0) || (!includeUpper && compare == 0) )
- break;
- }
-
- termDocs->seek( enumerator->term(false) );
- while( termDocs->next() ) {
- bts->set( termDocs->doc() );
- }
- }
-
- _CLDECDELETE( term );
- }
- while( enumerator->next() );
- }
- _CLFINALLY
- (
- _CLDECDELETE( term );
- termDocs->close();
- _CLVDELETE( termDocs );
- enumerator->close();
- _CLDELETE( enumerator );
- );
-
- return bts;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.h b/src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.h
deleted file mode 100644
index 0865e356f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeFilter.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-#ifndef _lucene_search_RangeFilter_
-#define _lucene_search_RangeFilter_
-
-#include "CLucene/document/DateField.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/BitSet.h"
-#include "CLucene/search/Filter.h"
-
-CL_NS_DEF(search)
-
-class RangeFilter: public Filter
-{
-private:
- const TCHAR* field;
- TCHAR* lowerValue;
- TCHAR* upperValue;
- bool includeLower;
- bool includeUpper;
-
-protected:
- RangeFilter( const RangeFilter& copy );
-
-public:
- RangeFilter( const TCHAR* fieldName, const TCHAR* lowerValue, const TCHAR* upperValue, bool includeLower, bool includeUpper );
-
- static RangeFilter* Less( TCHAR* fieldName, TCHAR* upperTerm );
-
- static RangeFilter* More( TCHAR* fieldName, TCHAR* lowerTerm );
-
- ~RangeFilter();
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader );
-
- Filter* clone() const;
-
- TCHAR* toString();
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.cpp
deleted file mode 100644
index 4fc242089..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "RangeQuery.h"
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "BooleanQuery.h"
-#include "TermQuery.h"
-
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/StringBuffer.h"
-
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
- RangeQuery::RangeQuery(Term* lowerTerm, Term* upperTerm, const bool Inclusive){
- //Func - Constructor
- //Pre - (LowerTerm != NULL OR UpperTerm != NULL) AND
- // if LowerTerm and UpperTerm are valid pointer then the fieldnames must be the same
- //Post - The instance has been created
-
- if (lowerTerm == NULL && upperTerm == NULL)
- {
- _CLTHROWA(CL_ERR_IllegalArgument,"At least one term must be non-null");
- }
- if (lowerTerm != NULL && upperTerm != NULL && lowerTerm->field() != upperTerm->field())
- {
- _CLTHROWA(CL_ERR_IllegalArgument,"Both terms must be for the same field");
- }
-
- // if we have a lowerTerm, start there. otherwise, start at beginning
- if (lowerTerm != NULL) {
- this->lowerTerm = _CL_POINTER(lowerTerm);
- }
- else {
- this->lowerTerm = _CLNEW Term(upperTerm, LUCENE_BLANK_STRING);
- }
- this->upperTerm = (upperTerm != NULL ? _CL_POINTER(upperTerm) : NULL);
- this->inclusive = Inclusive;
- }
- RangeQuery::RangeQuery(const RangeQuery& clone):
- Query(clone){
- this->inclusive = clone.inclusive;
- this->upperTerm = (clone.upperTerm != NULL ? _CL_POINTER(clone.upperTerm) : NULL );
- this->lowerTerm = (clone.lowerTerm != NULL ? _CL_POINTER(clone.lowerTerm) : NULL );
- }
- Query* RangeQuery::clone() const{
- return _CLNEW RangeQuery(*this);
- }
-
- RangeQuery::~RangeQuery() {
- //Func - Destructor
- //Pre - true
- //Post - The instance has been destroyed
-
- _CLDECDELETE(lowerTerm);
- _CLDECDELETE(upperTerm);
- }
-
- /** Returns a hash code value for this object.*/
- size_t RangeQuery::hashCode() const {
- return Similarity::floatToByte(getBoost()) ^
- (lowerTerm != NULL ? lowerTerm->hashCode() : 0) ^
- (upperTerm != NULL ? upperTerm->hashCode() : 0) ^
- (this->inclusive ? 1 : 0);
- }
-
- const TCHAR* RangeQuery::getQueryName() const{
- return getClassName();
- }
- const TCHAR* RangeQuery::getClassName(){
- return _T("RangeQuery");
- }
-
- Query* RangeQuery::combine(Query** queries) {
- return Query::mergeBooleanQueries(queries);
- }
-
- bool RangeQuery::equals(Query * other) const{
- if (!(other->instanceOf(RangeQuery::getClassName())))
- return false;
-
- RangeQuery* rq = (RangeQuery*)other;
- bool ret = (this->getBoost() == rq->getBoost())
- && (this->isInclusive() == rq->isInclusive())
- && (this->getLowerTerm()->equals(rq->getLowerTerm()))
- && (this->getUpperTerm()->equals(rq->getUpperTerm()));
-
- return ret;
- }
-
-
- /**
- * FIXME: Describe <code>rewrite</code> method here.
- *
- * @param reader an <code>IndexReader</code> value
- * @return a <code>Query</code> value
- * @exception IOException if an error occurs
- */
- Query* RangeQuery::rewrite(IndexReader* reader){
-
- BooleanQuery* query = _CLNEW BooleanQuery;
- TermEnum* enumerator = reader->terms(lowerTerm);
- Term* lastTerm = NULL;
- try {
- bool checkLower = false;
- if (!inclusive) // make adjustments to set to exclusive
- checkLower = true;
-
- const TCHAR* testField = getField();
- do {
- lastTerm = enumerator->term();
- if (lastTerm != NULL && lastTerm->field() == testField ) {
- if (!checkLower || _tcscmp(lastTerm->text(),lowerTerm->text()) > 0) {
- checkLower = false;
- if (upperTerm != NULL) {
- int compare = _tcscmp(upperTerm->text(),lastTerm->text());
- /* if beyond the upper term, or is exclusive and
- * this is equal to the upper term, break out */
- if ((compare < 0) || (!inclusive && compare == 0))
- break;
- }
- TermQuery* tq = _CLNEW TermQuery(lastTerm); // found a match
- tq->setBoost(getBoost()); // set the boost
- query->add(tq, true, false, false); // add to query
- }
- }else {
- break;
- }
- _CLDECDELETE(lastTerm);
- }
- while (enumerator->next());
- }catch(...){
- _CLDECDELETE(lastTerm); //always need to delete this
- _CLDELETE(query); //in case of error, delete the query
- enumerator->close();
- _CLDELETE(enumerator);
- throw; //rethrow
- }
- _CLDECDELETE(lastTerm); //always need to delete this
- enumerator->close();
- _CLDELETE(enumerator);
-
- return query;
- }
-
- /** Prints a user-readable version of this query. */
- TCHAR* RangeQuery::toString(const TCHAR* field) const
- {
- StringBuffer buffer;
- if ( field==NULL || _tcscmp(getField(),field)!=0 )
- {
- buffer.append( getField() );
- buffer.append( _T(":"));
- }
- buffer.append(inclusive ? _T("[") : _T("{"));
- buffer.append(lowerTerm != NULL ? lowerTerm->text() : _T("NULL"));
- buffer.append(_T(" TO "));
- buffer.append(upperTerm != NULL ? upperTerm->text() : _T("NULL"));
- buffer.append(inclusive ? _T("]") : _T("}"));
- if (getBoost() != 1.0f)
- {
- buffer.append( _T("^"));
- buffer.appendFloat( getBoost(),1 );
- }
- return buffer.toString();
- }
-
-
- const TCHAR* RangeQuery::getField() const
- {
- return (lowerTerm != NULL ? lowerTerm->field() : upperTerm->field());
- }
-
- /** Returns the lower term of this range query */
- Term* RangeQuery::getLowerTerm(bool pointer) const {
- if ( pointer )
- return _CL_POINTER(lowerTerm);
- else
- return lowerTerm;
- }
-
- /** Returns the upper term of this range query */
- Term* RangeQuery::getUpperTerm(bool pointer) const {
- if ( pointer )
- return _CL_POINTER(upperTerm);
- else
- return upperTerm;
- }
-
- /** Returns <code>true</code> if the range query is inclusive */
- bool RangeQuery::isInclusive() const { return inclusive; }
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.h
deleted file mode 100644
index 9a7733c33..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/RangeQuery.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_RangeQuery_
-#define _lucene_search_RangeQuery_
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "TermQuery.h"
-
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-
-#include "CLucene/util/StringBuffer.h"
-
-
-CL_NS_DEF(search)
- /** Constructs a query selecting all terms greater than
- * <code>lowerTerm</code> but less than <code>upperTerm</code>.
- * There must be at least one term and either term may be null,
- * in which case there is no bound on that side, but if there are
- * two terms, both terms <b>must</b> be for the same field.
- */
- class RangeQuery: public Query
- {
- private:
- CL_NS(index)::Term* lowerTerm;
- CL_NS(index)::Term* upperTerm;
- bool inclusive;
- protected:
- RangeQuery(const RangeQuery& clone);
-
- public:
- // Constructs a query selecting all terms greater than
- // <code>lowerTerm</code> but less than <code>upperTerm</code>.
- // There must be at least one term and either term may be NULL--
- // in which case there is no bound on that side, but if there are
- // two term, both terms <b>must</b> be for the same field.
- RangeQuery(CL_NS(index)::Term* LowerTerm, CL_NS(index)::Term* UpperTerm, const bool Inclusive);
- ~RangeQuery();
-
- const TCHAR* getQueryName() const;
- static const TCHAR* getClassName();
-
- Query* rewrite(CL_NS(index)::IndexReader* reader);
-
- Query* combine(Query** queries);
-
- // Prints a user-readable version of this query.
- TCHAR* toString(const TCHAR* field) const;
-
- Query* clone() const;
-
- bool equals(Query * other) const;
-
- CL_NS(index)::Term* getLowerTerm(bool pointer=true) const;
- CL_NS(index)::Term* getUpperTerm(bool pointer=true) const;
- bool isInclusive() const;
- const TCHAR* getField() const;
-
- size_t hashCode() const;
- };
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Scorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/Scorer.h
deleted file mode 100644
index 0d1d4355a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Scorer.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_Scorer_
-#define _lucene_search_Scorer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Similarity.h"
-#include "SearchHeader.h"
-#include "Explanation.h"
-
-CL_NS_DEF(search)
- /** Expert: Implements scoring for a class of queries. */
-class Scorer: LUCENE_BASE {
- private:
- Similarity* similarity;
- protected:
- /** Constructs a Scorer. */
- Scorer(Similarity* similarity) {
- this->similarity = similarity;
- }
- public:
- virtual ~Scorer(){
- }
-
- /** Returns the Similarity implementation used by this scorer. */
- Similarity* getSimilarity() const{
- return this->similarity;
- }
-
- /** Scores all documents and passes them to a collector. */
- void score(HitCollector* hc) {
- while (next()) {
- hc->collect(doc(), score());
- }
- }
-
- /** Advance to the next document matching the query. Returns true iff there
- * is another match. */
- virtual bool next() = 0;
-
- /** Returns the current document number. Initially invalid, until {@link
- * #next()} is called the first time. */
- virtual int32_t doc() const = 0;
-
- /** Returns the score of the current document. Initially invalid, until
- * {@link #next()} is called the first time. */
- virtual qreal score() = 0;
-
- /** Skips to the first match beyond the current whose document number is
- * greater than or equal to <i>target</i>. <p>Returns true iff there is such
- * a match. <p>Behaves as if written: <pre>
- * boolean skipTo(int32_t target) {
- * do {
- * if (!next())
- * return false;
- * } while (target > doc());
- * return true;
- * }
- * </pre>
- * Most implementations are considerably more efficient than that.
- */
- virtual bool skipTo(int32_t target) = 0;
-
- /** Returns an explanation of the score for <code>doc</code>. */
- virtual void explain(int32_t doc, Explanation* ret) = 0;
-
-
- /** Returns an string which explains the object */
- virtual TCHAR* toString() = 0;
-
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.cpp
deleted file mode 100644
index 56e4ad585..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SearchHeader.h"
-#include "BooleanQuery.h"
-#include "FieldDocSortedHitQueue.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
-CL_NS(document)::Document* Searchable::doc(const int32_t i){
- CL_NS(document)::Document* ret = _CLNEW CL_NS(document)::Document;
- if (!doc(i,ret) )
- _CLDELETE(ret);
- return ret;
-}
-
-//static
-Query* Query::mergeBooleanQueries(Query** queries) {
- CL_NS(util)::CLVector<BooleanClause*> allClauses;
- int32_t i = 0;
- while ( queries[i] != NULL ){
- BooleanQuery* bq = (BooleanQuery*)queries[i];
-
- int32_t size = bq->getClauseCount();
- BooleanClause** clauses = _CL_NEWARRAY(BooleanClause*, size);
- bq->getClauses(clauses);
-
- for (int32_t j = 0;j<size;++j ){
- allClauses.push_back(clauses[j]);
- j++;
- }
- _CLDELETE_ARRAY(clauses);
- i++;
- }
-
- BooleanQuery* result = _CLNEW BooleanQuery();
- CL_NS(util)::CLVector<BooleanClause*>::iterator itr = allClauses.begin();
- while (itr != allClauses.end() ) {
- result->add(*itr);
- }
- return result;
-}
-
-Query::Query(const Query& clone):boost(clone.boost){
- //constructor
-}
-Weight* Query::_createWeight(Searcher* searcher){
- _CLTHROWA(CL_ERR_UnsupportedOperation,"UnsupportedOperationException: Query::_createWeight");
-}
-
-Query::Query():
- boost(1.0f)
-{
- //constructor
-}
-Query::~Query(){
-}
-
-/** Expert: called to re-write queries into primitive queries. */
-Query* Query::rewrite(CL_NS(index)::IndexReader* reader){
- return this;
-}
-
-Query* Query::combine(Query** queries){
- _CLTHROWA(CL_ERR_UnsupportedOperation,"UnsupportedOperationException: Query::combine");
-}
-Similarity* Query::getSimilarity(Searcher* searcher) {
- return searcher->getSimilarity();
-}
-bool Query::instanceOf(const TCHAR* other) const{
- const TCHAR* t = getQueryName();
- if ( t==other || _tcscmp( t, other )==0 )
- return true;
- else
- return false;
-}
-TCHAR* Query::toString() const{
- return toString(LUCENE_BLANK_STRING);
-}
-
-void Query::setBoost(qreal b) { boost = b; }
-
-qreal Query::getBoost() const { return boost; }
-
-Weight* Query::weight(Searcher* searcher){
- Query* query = searcher->rewrite(this);
- Weight* weight = query->_createWeight(searcher);
- qreal sum = weight->sumOfSquaredWeights();
- qreal norm = getSimilarity(searcher)->queryNorm(sum);
- weight->normalize(norm);
- return weight;
-}
-
-TopFieldDocs::TopFieldDocs (int32_t totalHits, FieldDoc** fieldDocs, int32_t scoreDocsLen, SortField** fields):
- TopDocs (totalHits, NULL, scoreDocsLen)
-{
- this->fields = fields;
- this->fieldDocs = fieldDocs;
- this->scoreDocs = _CL_NEWARRAY(ScoreDoc,scoreDocsLen);
- for (int32_t i=0;i<scoreDocsLen;i++ )
- this->scoreDocs[i] = this->fieldDocs[i]->scoreDoc;
-}
-TopFieldDocs::~TopFieldDocs(){
- if ( fieldDocs ){
- for (int32_t i=0;i<scoreDocsLength;i++)
- _CLDELETE(fieldDocs[i]);
- _CLDELETE_ARRAY(fieldDocs);
- }
- if ( fields != NULL ){
- for ( int i=0;fields[i]!=NULL;i++ )
- _CLDELETE(fields[i]);
- _CLDELETE_ARRAY(fields);
- }
-}
-
-TopDocs::TopDocs(const int32_t th, ScoreDoc*sds, int32_t scoreDocsLen):
- totalHits(th),
- scoreDocsLength(scoreDocsLen),
- scoreDocs(sds)
-{
-//Func - Constructor
-//Pre - sds may or may not be NULL
-// sdLength >= 0
-//Post - The instance has been created
-
-}
-
-TopDocs::~TopDocs(){
-//Func - Destructor
-//Pre - true
-//Post - The instance has been destroyed
-
- _CLDELETE_ARRAY(scoreDocs);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.h b/src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.h
deleted file mode 100644
index 4a896a5c5..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/SearchHeader.h
+++ /dev/null
@@ -1,456 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_SearchHeader_
-#define _lucene_search_SearchHeader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "Filter.h"
-#include "CLucene/document/Document.h"
-#include "Sort.h"
-#include "CLucene/util/VoidList.h"
-#include "Explanation.h"
-#include "Similarity.h"
-
-CL_NS_DEF(search)
-
- //predefine classes
- class Scorer;
- class Query;
- class Hits;
- class Sort;
- class FieldDoc;
- class TopFieldDocs;
-
- /** Expert: Returned by low-level search implementations.
- * @see TopDocs */
- struct ScoreDoc {
- /** Expert: A hit document's number.
- * @see Searcher#doc(int32_t)
- */
- int32_t doc;
-
- /** Expert: The score of this document for the query. */
- qreal score;
- };
-
- /** Expert: Returned by low-level search implementations.
- * @see Searcher#search(Query,Filter,int32_t) */
- class TopDocs:LUCENE_BASE {
- public:
- /** Expert: The total number of hits for the query.
- * @see Hits#length()
- */
- int32_t totalHits;
-
- /** Expert: The top hits for the query. */
- ScoreDoc* scoreDocs;
- int32_t scoreDocsLength;
-
- /** Expert: Constructs a TopDocs. TopDocs takes ownership of the ScoreDoc array*/
- TopDocs(const int32_t th, ScoreDoc* sds, int32_t scoreDocsLength);
- ~TopDocs();
- };
-
- // Lower-level search API.
- // @see Searcher#search(Query,HitCollector)
- class HitCollector: LUCENE_BASE {
- public:
- /** Called once for every non-zero scoring document, with the document number
- * and its score.
- *
- * <P>If, for example, an application wished to collect all of the hits for a
- * query in a BitSet, then it might:<pre>
- * Searcher searcher = new IndexSearcher(indexReader);
- * final BitSet bits = new BitSet(indexReader.maxDoc());
- * searcher.search(query, new HitCollector() {
- * public void collect(int32_t doc, float score) {
- * bits.set(doc);
- * }
- * });
- * </pre>
- *
- * <p>Note: This is called in an inner search loop. For good search
- * performance, implementations of this method should not call
- * {@link Searcher#doc(int32_t)} or
- * {@link IndexReader#document(int32_t)} on every
- * document number encountered. Doing so can slow searches by an order
- * of magnitude or more.
- * <p>Note: The <code>score</code> passed to this method is a raw score.
- * In other words, the score will not necessarily be a float whose value is
- * between 0 and 1.
- */
- virtual void collect(const int32_t doc, const qreal score) = 0;
- virtual ~HitCollector(){}
- };
-
- /** Expert: Calculate query weights and build query scorers.
- *
- * <p>A Weight is constructed by a query, given a Searcher ({@link
- * Query#_createWeight(Searcher)}). The {@link #sumOfSquaredWeights()} method
- * is then called on the top-level query to compute the query normalization
- * factor (@link Similarity#queryNorm(qreal)}). This factor is then passed to
- * {@link #normalize(qreal)}. At this point the weighting is complete and a
- * scorer may be constructed by calling {@link #scorer(IndexReader)}.
- */
- class Weight: LUCENE_BASE {
- public:
- virtual ~Weight(){
- };
-
- /** The query that this concerns. */
- virtual Query* getQuery() = 0;
-
- /** The weight for this query. */
- virtual qreal getValue() = 0;
-
- /** The sum of squared weights of contained query clauses. */
- virtual qreal sumOfSquaredWeights() = 0;
-
- /** Assigns the query normalization factor to this. */
- virtual void normalize(qreal norm) = 0;
-
- /** Constructs a scorer for this. */
- virtual Scorer* scorer(CL_NS(index)::IndexReader* reader) = 0;
-
- /** An explanation of the score computation for the named document. */
- virtual void explain(CL_NS(index)::IndexReader* reader, int32_t doc, Explanation* ret) = 0;
-
- virtual TCHAR* toString(){
- return STRDUP_TtoT(_T("Weight"));
- }
- };
-
- class HitDoc:LUCENE_BASE {
- public:
- qreal score;
- int32_t id;
- CL_NS(document)::Document* doc;
-
- HitDoc* next; // in doubly-linked cache
- HitDoc* prev; // in doubly-linked cache
-
- HitDoc(const qreal s, const int32_t i);
- ~HitDoc();
- };
-
-
-
- // A ranked list of documents, used to hold search results.
- class Hits:LUCENE_BASE {
- private:
- Query* query;
- Searcher* searcher;
- Filter* filter;
- const Sort* sort;
-
- size_t _length; // the total number of hits
- CL_NS(util)::CLVector<HitDoc*, CL_NS(util)::Deletor::Object<HitDoc> > hitDocs; // cache of hits retrieved
-
- HitDoc* first; // head of LRU cache
- HitDoc* last; // tail of LRU cache
- int32_t numDocs; // number cached
- int32_t maxDocs; // max to cache
-
- public:
- Hits(Searcher* s, Query* q, Filter* f, const Sort* sort=NULL);
- ~Hits();
-
- /** Returns the total number of hits available in this set. */
- int32_t length() const;
-
- /** Returns the stored fields of the n<sup>th</sup> document in this set.
- <p>Documents are cached, so that repeated requests for the same element may
- return the same Document object.
- *
- * @memory Memory belongs to the hits object. Don't delete the return value.
- */
- CL_NS(document)::Document& doc(const int32_t n);
-
- /** Returns the id for the nth document in this set. */
- int32_t id (const int32_t n);
-
- /** Returns the score for the nth document in this set. */
- qreal score(const int32_t n);
-
- private:
- // Tries to add new documents to hitDocs.
- // Ensures that the hit numbered <code>_min</code> has been retrieved.
- void getMoreDocs(const size_t _min);
-
- HitDoc* getHitDoc(const size_t n);
-
- void addToFront(HitDoc* hitDoc);
-
- void remove(const HitDoc* hitDoc);
-
- };
-
- /** The interface for search implementations.
- *
- * <p>Implementations provide search over a single index, over multiple
- * indices, and over indices on remote servers.
- */
- class Searchable: LUCENE_BASE {
- public:
- virtual ~Searchable(){
- }
-
- /** Lower-level search API.
- *
- * <p>{@link HitCollector#collect(int32_t,qreal)} is called for every non-zero
- * scoring document.
- *
- * <p>Applications should only use this if they need <i>all</i> of the
- * matching documents. The high-level search API ({@link
- * Searcher#search(Query*)}) is usually more efficient, as it skips
- * non-high-scoring hits.
- *
- * @param query to match documents
- * @param filter if non-null, a bitset used to eliminate some documents
- * @param results to receive hits
- */
- virtual void _search(Query* query, Filter* filter, HitCollector* results) = 0;
-
- /** Frees resources associated with this Searcher.
- * Be careful not to call this method while you are still using objects
- * like {@link Hits}.
- */
- virtual void close() = 0;
-
- /** Expert: Returns the number of documents containing <code>term</code>.
- * Called by search code to compute term weights.
- * @see IndexReader#docFreq(Term).
- */
- virtual int32_t docFreq(const CL_NS(index)::Term* term) const = 0;
-
- /** Expert: Returns one greater than the largest possible document number.
- * Called by search code to compute term weights.
- * @see IndexReader#maxDoc().
- */
- virtual int32_t maxDoc() const = 0;
-
- /** Expert: Low-level search implementation. Finds the top <code>n</code>
- * hits for <code>query</code>, applying <code>filter</code> if non-null.
- *
- * <p>Called by {@link Hits}.
- *
- * <p>Applications should usually call {@link Searcher#search(Query*)} or
- * {@link Searcher#search(Query*,Filter*)} instead.
- */
- virtual TopDocs* _search(Query* query, Filter* filter, const int32_t n) = 0;
-
- /** Expert: Returns the stored fields of document <code>i</code>.
- * Called by {@link HitCollector} implementations.
- * @see IndexReader#document(int32_t).
- */
- virtual bool doc(int32_t i, CL_NS(document)::Document* d) = 0;
- _CL_DEPRECATED( doc(i, document) ) CL_NS(document)::Document* doc(const int32_t i);
-
- /** Expert: called to re-write queries into primitive queries. */
- virtual Query* rewrite(Query* query) = 0;
-
- /** Returns an Explanation that describes how <code>doc</code> scored against
- * <code>query</code>.
- *
- * <p>This is intended to be used in developing Similarity implementations,
- * and, for good performance, should not be displayed with every hit.
- * Computing an explanation is as expensive as executing the query over the
- * entire index.
- */
- virtual void explain(Query* query, int32_t doc, Explanation* ret) = 0;
-
- /** Expert: Low-level search implementation with arbitrary sorting. Finds
- * the top <code>n</code> hits for <code>query</code>, applying
- * <code>filter</code> if non-null, and sorting the hits by the criteria in
- * <code>sort</code>.
- *
- * <p>Applications should usually call {@link
- * Searcher#search(Query,Filter,Sort)} instead.
- */
- virtual TopFieldDocs* _search(Query* query, Filter* filter, const int32_t n, const Sort* sort) = 0;
- };
-
-
-
- /** An abstract base class for search implementations.
- * Implements some common utility methods.
- */
- class Searcher:public Searchable {
- private:
- /** The Similarity implementation used by this searcher. */
- Similarity* similarity;
-
- public:
- Searcher(){
- similarity = Similarity::getDefault();
- }
- virtual ~Searcher(){
- }
-
- // Returns the documents matching <code>query</code>.
- Hits* search(Query* query) {
- return search(query, (Filter*)NULL );
- }
-
- // Returns the documents matching <code>query</code> and
- // <code>filter</code>.
- Hits* search(Query* query, Filter* filter) {
- return _CLNEW Hits(this, query, filter);
- }
-
- /** Returns documents matching <code>query</code> sorted by
- * <code>sort</code>.
- */
- Hits* search(Query* query, const Sort* sort){
- return _CLNEW Hits(this, query, NULL, sort);
- }
-
- /** Returns documents matching <code>query</code> and <code>filter</code>,
- * sorted by <code>sort</code>.
- */
- Hits* search(Query* query, Filter* filter, const Sort* sort){
- return _CLNEW Hits(this, query, filter, sort);
- }
-
- /** Lower-level search API.
- *
- * <p>{@link HitCollector#collect(int32_t ,qreal)} is called for every non-zero
- * scoring document.
- *
- * <p>Applications should only use this if they need <i>all</i> of the
- * matching documents. The high-level search API ({@link
- * Searcher#search(Query*)}) is usually more efficient, as it skips
- * non-high-scoring hits.
- * <p>Note: The <code>score</code> passed to this method is a raw score.
- * In other words, the score will not necessarily be a float whose value is
- * between 0 and 1.
- */
- void _search(Query* query, HitCollector* results) {
- Searchable::_search(query, NULL, results);
- }
-
- /** Expert: Set the Similarity implementation used by this Searcher.
- *
- * @see Similarity#setDefault(Similarity)
- */
- void setSimilarity(Similarity* similarity) {
- this->similarity = similarity;
- }
-
- /** Expert: Return the Similarity implementation used by this Searcher.
- *
- * <p>This defaults to the current value of {@link Similarity#getDefault()}.
- */
- Similarity* getSimilarity(){
- return this->similarity;
- }
- };
-
- /** The abstract base class for queries.
- <p>Instantiable subclasses are:
- <ul>
- <li> {@link TermQuery}
- <li> {@link MultiTermQuery}
- <li> {@link BooleanQuery}
- <li> {@link WildcardQuery}
- <li> {@link PhraseQuery}
- <li> {@link PrefixQuery}
- <li> {@link PhrasePrefixQuery}
- <li> {@link FuzzyQuery}
- <li> {@link RangeQuery}
- <li> {@link spans.SpanQuery}
- </ul>
- <p>A parser for queries is contained in:
- <ul>
- <li>{@link queryParser.QueryParser QueryParser}
- </ul>
- */
- class Query :LUCENE_BASE {
- private:
- // query boost factor
- qreal boost;
- protected:
- Query(const Query& clone);
- public:
- Query();
- virtual ~Query();
-
- /** Sets the boost for this query clause to <code>b</code>. Documents
- * matching this clause will (in addition to the normal weightings) have
- * their score multiplied by <code>b</code>.
- */
- void setBoost(qreal b);
-
- /** Gets the boost for this clause. Documents matching
- * this clause will (in addition to the normal weightings) have their score
- * multiplied by <code>b</code>. The boost is 1.0 by default.
- */
- qreal getBoost() const;
-
- /** Expert: Constructs an initializes a Weight for a top-level query. */
- Weight* weight(Searcher* searcher);
-
- /** Expert: called to re-write queries into primitive queries. */
- virtual Query* rewrite(CL_NS(index)::IndexReader* reader);
-
- /** Expert: called when re-writing queries under MultiSearcher.
- *
- * <p>Only implemented by derived queries, with no
- * {@link #_createWeight(Searcher)} implementatation.
- */
- virtual Query* combine(Query** queries);
-
- /** Expert: merges the clauses of a set of BooleanQuery's into a single
- * BooleanQuery.
- *
- *<p>A utility for use by {@link #combine(Query[])} implementations.
- */
- static Query* mergeBooleanQueries(Query** queries);
-
- /** Expert: Returns the Similarity implementation to be used for this query.
- * Subclasses may override this method to specify their own Similarity
- * implementation, perhaps one that delegates through that of the Searcher.
- * By default the Searcher's Similarity implementation is returned.*/
- Similarity* getSimilarity(Searcher* searcher);
-
- /** Returns a clone of this query. */
- virtual Query* clone() const = 0;
- virtual const TCHAR* getQueryName() const = 0;
- bool instanceOf(const TCHAR* other) const;
-
- /** Prints a query to a string, with <code>field</code> as the default field
- * for terms. <p>The representation used is one that is readable by
- * {@link queryParser.QueryParser QueryParser}
- * (although, if the query was created by the parser, the printed
- * representation may not be exactly what was parsed).
- */
- virtual TCHAR* toString(const TCHAR* field) const = 0;
-
- virtual bool equals(Query* other) const = 0;
- virtual size_t hashCode() const = 0;
-
- /** Prints a query to a string. */
- TCHAR* toString() const;
-
-
- /** Expert: Constructs an appropriate Weight implementation for this query.
- *
- * <p>Only implemented by primitive queries, which re-write to themselves.
- * <i>This is an Internal function</i>
- */
- virtual Weight* _createWeight(Searcher* searcher);
-
- };
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.cpp
deleted file mode 100644
index d33a036e4..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Similarity.h"
-
-#include "CLucene/index/Term.h"
-#include "SearchHeader.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
-#ifdef _CL_HAVE_NO_FLOAT_BYTE
- #if defined(_LUCENE_PRAGMA_WARNINGS)
- #pragma message ("==================Using fallback float<->byte encodings!!!==================")
- #else
- #warning "==================Using fallback float<->byte encodings!!!=================="
- #endif
-
- //if the autoconf figured out that we can't do the conversions properly, then
- //we fall back on the old, inaccurate way of doing things.
- qreal NORM_TABLE[] = {
- 0.0,5.820766E-10,6.9849193E-10,8.1490725E-10,9.313226E-10,1.1641532E-9,1.3969839E-9,
- 1.6298145E-9,1.8626451E-9,2.3283064E-9,2.7939677E-9,3.259629E-9,3.7252903E-9,
- 4.656613E-9,5.5879354E-9,6.519258E-9,7.4505806E-9,9.313226E-9,1.1175871E-8,1.3038516E-8,
- 1.4901161E-8,1.8626451E-8,2.2351742E-8,2.6077032E-8,2.9802322E-8,3.7252903E-8,4.4703484E-8,
- 5.2154064E-8,5.9604645E-8,7.4505806E-8,8.940697E-8,1.0430813E-7,1.1920929E-7,1.4901161E-7,
- 1.7881393E-7,2.0861626E-7,2.3841858E-7,2.9802322E-7,3.5762787E-7,4.172325E-7,4.7683716E-7,
- 5.9604645E-7,7.1525574E-7,8.34465E-7,9.536743E-7,1.1920929E-6,1.4305115E-6,1.66893E-6,
- 1.9073486E-6,2.3841858E-6,2.861023E-6,3.33786E-6,3.8146973E-6,4.7683716E-6,5.722046E-6,
- 6.67572E-6,7.6293945E-6,9.536743E-6,1.1444092E-5,1.335144E-5,1.5258789E-5,1.9073486E-5,
- 2.2888184E-5,2.670288E-5,3.0517578E-5,3.8146973E-5,4.5776367E-5,5.340576E-5,6.1035156E-5,
- 7.6293945E-5,9.1552734E-5,1.0681152E-4,1.2207031E-4,1.5258789E-4,1.8310547E-4,2.1362305E-4,
- 2.4414062E-4,3.0517578E-4,3.6621094E-4,4.272461E-4,4.8828125E-4,6.1035156E-4,7.324219E-4,
- 8.544922E-4,9.765625E-4,0.0012207031,0.0014648438,0.0017089844,0.001953125,0.0024414062,
- 0.0029296875,0.0034179688,0.00390625,0.0048828125,0.005859375,0.0068359375,
- 0.0078125,0.009765625,0.01171875,0.013671875,0.015625,0.01953125,0.0234375,
- 0.02734375,0.03125,0.0390625,0.046875,0.0546875,0.0625,0.078125,0.09375,0.109375,
- 0.125,0.15625,0.1875,0.21875,0.25,0.3125,0.375,0.4375,0.5,0.625,0.75,
- 0.875,1.0,1.25,1.5,1.75,2,2.5,3,3.5,4.0,5.0,6.0,7.0,8.0,10.0,12.0,14.0,16.0,20.0,24.0,28.0,32.0,40.0,48.0,56.0,
- 64.0,80.0,96.0,112.0,128.0,160.0,192.0,224.0,256.0,320.0,384.0,448.0,512.0,640.0,768.0,896.0,1024.0,1280.0,1536.0,1792.0,
- 2048.0,2560.0,3072.0,3584.0,4096.0,5120.0,6144.0,7168.0,8192.0,10240.0,12288.0,14336.0,16384.0,20480.0,24576.0,
- 28672.0,32768.0,40960.0,49152.0,57344.0,65536.0,81920.0,98304.0,114688.0,131072.0,163840.0,196608.0,
- 229376.0,262144.0,327680.0,393216.0,458752.0,524288.0,655360.0,786432.0,917504.0,1048576.0,1310720.0,
- 1572864.0,1835008.0,2097152.0,2621440.0,3145728.0,3670016.0,4194304.0,5242880.0,6291456.0,7340032.0,
- 8388608.0,10485760.0,12582912.0,14680064.0,16777216.0,20971520.0,25165824.0,29360128.0,33554432.0,
- 41943040.0,50331648.0,58720256.0,67108864.0,83886080.0,100663296.0,117440512.0,134217728.0,
- 167772160.0,201326592.0,234881024.0,268435456.0,335544320.0,402653184.0,469762048.0,536870912.0,
- 671088640.0,805306368.0,939524096.0,1073741824.0,1342177280.0,1610612736.0,1879048192.0,
- 2147483648.0,2684354560.0,3221225472.0,3758096384.0,4294967296.0,5368709120.0,6442450944.0,7516192768.0
- };
-
- qreal Similarity::byteToFloat(uint8_t b) {
- return NORM_TABLE[b];
- }
-
- uint8_t Similarity::floatToByte(qreal f) {
- return Similarity::encodeNorm(f);
- }
-
-#else
-
- /** Cache of decoded bytes. */
- qreal NORM_TABLE[256];
- bool NORM_TABLE_initd=false;
-
- //float to bits conversion utilities...
- union clvalue {
- int32_t i;
- float f; //must use a float type, else types dont match up
- };
-
- int32_t floatToIntBits(qreal value)
- {
- clvalue u;
- int32_t e, f;
- u.f = (float)value;
- e = u.i & 0x7f800000;
- f = u.i & 0x007fffff;
-
- if (e == 0x7f800000 && f != 0)
- u.i = 0x7fc00000;
-
- return u.i;
- }
-
- qreal intBitsToFloat(int32_t bits)
- {
- clvalue u;
- u.i = bits;
- return u.f;
- }
-
-
- qreal Similarity::byteToFloat(uint8_t b) {
- if (b == 0) // zero is a special case
- return 0.0f;
- int32_t mantissa = b & 7;
- int32_t exponent = (b >> 3) & 31;
- int32_t bits = ((exponent+(63-15)) << 24) | (mantissa << 21);
- return intBitsToFloat(bits);
- }
-
- uint8_t Similarity::floatToByte(qreal f) {
- if (f < 0.0f) // round negatives up to zero
- f = 0.0f;
-
- if (f == 0.0f) // zero is a special case
- return 0;
-
- int32_t bits = floatToIntBits(f); // parse qreal into parts
- int32_t mantissa = (bits & 0xffffff) >> 21;
- int32_t exponent = (((bits >> 24) & 0x7f) - 63) + 15;
-
- if (exponent > 31) { // overflow: use max value
- exponent = 31;
- mantissa = 7;
- }
-
- if (exponent < 0) { // underflow: use min value
- exponent = 0;
- mantissa = 1;
- }
-
- return (uint8_t)((exponent << 3) | mantissa); // pack into a uint8_t
- }
-#endif
-
- /** The Similarity implementation used by default. */
- Similarity* _defaultImpl=NULL;
-
- void Similarity::setDefault(Similarity* similarity) {
- _defaultImpl = similarity;
- }
-
- Similarity* Similarity::getDefault() {
- if ( _defaultImpl == NULL ){
- _defaultImpl = _CLNEW DefaultSimilarity();
- }
- return _defaultImpl;
- }
-
- qreal Similarity::decodeNorm(uint8_t b) {
-#ifndef _CL_HAVE_NO_FLOAT_BYTE
- if ( !NORM_TABLE_initd ){
- for (int i = 0; i < 256; i++)
- NORM_TABLE[i] = byteToFloat(i);
- NORM_TABLE_initd=true;
- }
-#endif
- return NORM_TABLE[b];
- }
-
- uint8_t Similarity::encodeNorm(qreal f) {
-#ifdef _CL_HAVE_NO_FLOAT_BYTE
- int32_t i=0;
- if ( f <= 0 )
- return 0;
-
- while ( i<256 && f > NORM_TABLE[i] ){
- i++;
- }
- if ( i == 0 )
- return 0;
- else if ( i == 255 && f>NORM_TABLE[255] )
- return 255;
- else
- return i;
-#else
- return floatToByte(f);
-#endif
- }
-
-
- qreal Similarity::idf(Term* term, Searcher* searcher) {
- return idf(searcher->docFreq(term), searcher->maxDoc());
- }
-
-
- qreal Similarity::idf(CL_NS(util)::CLVector<Term*>* terms, Searcher* searcher) {
- qreal _idf = 0.0f;
- for (CL_NS(util)::CLVector<Term*>::iterator i = terms->begin(); i != terms->end(); i++ ) {
- _idf += idf((Term*)*i, searcher);
- }
- return _idf;
- }
-
- Similarity::~Similarity(){
- }
-
-
-
-
- DefaultSimilarity::DefaultSimilarity(){
- }
- DefaultSimilarity::~DefaultSimilarity(){
- }
-
- qreal DefaultSimilarity::lengthNorm(const TCHAR* fieldName, int32_t numTerms) {
- if ( numTerms == 0 ) //prevent div by zero
- return 0;
- qreal ret = (qreal)(1.0 / sqrt((qreal)numTerms));
- return ret;
- }
-
- qreal DefaultSimilarity::queryNorm(qreal sumOfSquaredWeights) {
- if ( sumOfSquaredWeights == 0 ) //prevent div by zero
- return 0.0f;
- qreal ret = (qreal)(1.0 / sqrt(sumOfSquaredWeights));
- return ret;
- }
-
- qreal DefaultSimilarity::tf(qreal freq) {
- return sqrt(freq);
- }
-
- qreal DefaultSimilarity::sloppyFreq(int32_t distance) {
- return 1.0f / (distance + 1);
- }
-
- qreal DefaultSimilarity::idf(int32_t docFreq, int32_t numDocs) {
- return (qreal)(log(numDocs/(qreal)(docFreq+1)) + 1.0);
- }
-
- qreal DefaultSimilarity::coord(int32_t overlap, int32_t maxOverlap) {
- if ( maxOverlap == 0 )
- return 0.0f;
- return overlap / (qreal)maxOverlap;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.h b/src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.h
deleted file mode 100644
index 426af6952..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Similarity.h
+++ /dev/null
@@ -1,268 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_Similarity_
-#define _lucene_search_Similarity_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/Term.h"
-
-CL_NS_DEF(search)
-
-class Searcher;//save including the searchheader.h
-class DefaultSimilarity;
-
-/** Expert: Scoring API.
-* <p>Subclasses implement search scoring.
-*
-* <p>The score of query <code>q</code> for document <code>d</code> is defined
-* in terms of these methods as follows:
-*
-* <table cellpadding="0" cellspacing="0" border="0">
-* <tr>
-* <td valign="middle" align="right" rowspan="2">score(q,d) =<br></td>
-* <td valign="middle" align="center">
-* <big><big><big><big><big>&Sigma;</big></big></big></big></big></td>
-* <td valign="middle"><small>
-* {@link #tf(int32_t) tf}(t in d) *
-* {@link #idf(Term,Searcher) idf}(t) *
-* {@link Field#getBoost getBoost}(t.field in d) *
-* {@link #lengthNorm(TCHAR*,int32_t) lengthNorm}(t.field in d)
-* </small></td>
-* <td valign="middle" rowspan="2">&nbsp;*
-* {@link #coord(int32_t,int32_t) coord}(q,d) *
-* {@link #queryNorm(qreal) queryNorm}(q)
-* </td>
-* </tr>
-* <tr>
-* <td valign="top" align="right">
-* <small>t in q</small>
-* </td>
-* </tr>
-* </table>
-*
-* @see #setDefault(Similarity)
-* @see IndexWriter#setSimilarity(Similarity)
-* @see Searcher#setSimilarity(Similarity)
-*/
-class Similarity:LUCENE_BASE {
-public:
- virtual ~Similarity();
-
- /** Set the default Similarity implementation used by indexing and search
- * code.
- *
- * @see Searcher#setSimilarity(Similarity)
- * @see IndexWriter#setSimilarity(Similarity)
- */
- static void setDefault(Similarity* similarity);
-
- /** Return the default Similarity implementation used by indexing and search
- * code.
- *
- * <p>This is initially an instance of {@link DefaultSimilarity}.
- *
- * @see Searcher#setSimilarity(Similarity)
- * @see IndexWriter#setSimilarity(Similarity)
- */
- static Similarity* getDefault();
-
- /** Encodes a normalization factor for storage in an index.
- *
- * <p>The encoding uses a five-bit exponent and three-bit mantissa, thus
- * representing values from around 7x10^9 to 2x10^-9 with about one
- * significant decimal digit of accuracy. Zero is also represented.
- * Negative numbers are rounded up to zero. Values too large to represent
- * are rounded down to the largest representable value. Positive values too
- * small to represent are rounded up to the smallest positive representable
- * value.
- *
- * @see Field#setBoost(qreal)
- */
- static uint8_t encodeNorm(qreal f);
-
- /** Decodes a normalization factor stored in an index.
- * @see #encodeNorm(qreal)
- */
- static qreal decodeNorm(uint8_t b);
-
- static uint8_t floatToByte(qreal f);
- static qreal byteToFloat(uint8_t b);
-
- /** Computes a score factor for a phrase.
- *
- * <p>The default implementation sums the {@link #idf(Term,Searcher)} factor
- * for each term in the phrase.
- *
- * @param terms the terms in the phrase
- * @param searcher the document collection being searched
- * @return a score factor for the phrase
- */
- qreal idf(CL_NS(util)::CLVector<CL_NS(index)::Term*>* terms, Searcher* searcher);
- //qreal idf(Term** terms, Searcher* searcher);
-
-
- /** Computes a score factor for a simple term.
- *
- * <p>The default implementation is:<pre>
- * return idf(searcher.docFreq(term), searcher.maxDoc());
- * </pre>
- *
- * Note that {@link Searcher#maxDoc()} is used instead of
- * {@link IndexReader#numDocs()} because it is proportional to
- * {@link Searcher#docFreq(Term)} , i.e., when one is inaccurate,
- * so is the other, and in the same direction.
- *
- * @param term the term in question
- * @param searcher the document collection being searched
- * @return a score factor for the term
- */
- qreal idf(CL_NS(index)::Term* term, Searcher* searcher);
-
-
- /** Computes a score factor based on a term or phrase's frequency in a
- * document. This value is multiplied by the {@link #idf(Term, Searcher)}
- * factor for each term in the query and these products are then summed to
- * form the initial score for a document.
- *
- * <p>Terms and phrases repeated in a document indicate the topic of the
- * document, so implementations of this method usually return larger values
- * when <code>freq</code> is large, and smaller values when <code>freq</code>
- * is small.
- *
- * <p>The default implementation calls {@link #tf(qreal)}.
- *
- * @param freq the frequency of a term within a document
- * @return a score factor based on a term's within-document frequency
- */
- inline qreal tf(int32_t freq){ return tf((qreal)freq); }
-
- /** Computes the normalization value for a field given the total number of
- * terms contained in a field. These values, together with field boosts, are
- * stored in an index and multipled into scores for hits on each field by the
- * search code.
- *
- * <p>Matches in longer fields are less precise, so implemenations of this
- * method usually return smaller values when <code>numTokens</code> is large,
- * and larger values when <code>numTokens</code> is small.
- *
- * <p>That these values are computed under {@link
- * IndexWriter#addDocument(Document)} and stored then using
- * {#encodeNorm(qreal)}. Thus they have limited precision, and documents
- * must be re-indexed if this method is altered.
- *
- * @param fieldName the name of the field
- * @param numTokens the total number of tokens contained in fields named
- * <i>fieldName</i> of <i>doc</i>.
- * @return a normalization factor for hits on this field of this document
- *
- * @see Field#setBoost(qreal)
- */
- virtual qreal lengthNorm(const TCHAR* fieldName, int32_t numTokens) = 0;
-
- /** Computes the normalization value for a query given the sum of the squared
- * weights of each of the query terms. This value is then multipled into the
- * weight of each query term.
- *
- * <p>This does not affect ranking, but rather just attempts to make scores
- * from different queries comparable.
- *
- * @param sumOfSquaredWeights the sum of the squares of query term weights
- * @return a normalization factor for query weights
- */
- virtual qreal queryNorm(qreal sumOfSquaredWeights) = 0;
-
- /** Computes the amount of a sloppy phrase match, based on an edit distance.
- * This value is summed for each sloppy phrase match in a document to form
- * the frequency that is passed to {@link #tf(qreal)}.
- *
- * <p>A phrase match with a small edit distance to a document passage more
- * closely matches the document, so implementations of this method usually
- * return larger values when the edit distance is small and smaller values
- * when it is large.
- *
- * @see PhraseQuery#setSlop(int32_t)
- * @param distance the edit distance of this sloppy phrase match
- * @return the frequency increment for this match
- */
- virtual qreal sloppyFreq(int32_t distance) = 0;
-
- /** Computes a score factor based on a term or phrase's frequency in a
- * document. This value is multiplied by the {@link #idf(Term, Searcher)}
- * factor for each term in the query and these products are then summed to
- * form the initial score for a document.
- *
- * <p>Terms and phrases repeated in a document indicate the topic of the
- * document, so implemenations of this method usually return larger values
- * when <code>freq</code> is large, and smaller values when <code>freq</code>
- * is small.
- *
- * @param freq the frequency of a term within a document
- * @return a score factor based on a term's within-document frequency
- */
- virtual qreal tf(qreal freq) = 0;
-
- /** Computes a score factor based on a term's document frequency (the number
- * of documents which contain the term). This value is multiplied by the
- * {@link #tf(int32_t)} factor for each term in the query and these products are
- * then summed to form the initial score for a document.
- *
- * <p>Terms that occur in fewer documents are better indicators of topic, so
- * implemenations of this method usually return larger values for rare terms,
- * and smaller values for common terms.
- *
- * @param docFreq the number of documents which contain the term
- * @param numDocs the total number of documents in the collection
- * @return a score factor based on the term's document frequency
- */
- virtual qreal idf(int32_t docFreq, int32_t numDocs) = 0;
-
- /** Computes a score factor based on the fraction of all query terms that a
- * document contains. This value is multiplied into scores.
- *
- * <p>The presence of a large portion of the query terms indicates a better
- * match with the query, so implemenations of this method usually return
- * larger values when the ratio between these parameters is large and smaller
- * values when the ratio between them is small.
- *
- * @param overlap the number of query terms matched in the document
- * @param maxOverlap the total number of terms in the query
- * @return a score factor based on term overlap with the query
- */
- virtual qreal coord(int32_t overlap, int32_t maxOverlap) = 0;
-};
-
-
-/** Expert: Default scoring implementation. */
-class DefaultSimilarity: public Similarity {
-public:
- DefaultSimilarity();
- ~DefaultSimilarity();
-
- /** Implemented as <code>1/sqrt(numTerms)</code>. */
- qreal lengthNorm(const TCHAR* fieldName, int32_t numTerms);
-
- /** Implemented as <code>1/sqrt(sumOfSquaredWeights)</code>. */
- qreal queryNorm(qreal sumOfSquaredWeights);
-
- /** Implemented as <code>sqrt(freq)</code>. */
- inline qreal tf(qreal freq);
-
- /** Implemented as <code>1 / (distance + 1)</code>. */
- qreal sloppyFreq(int32_t distance);
-
- /** Implemented as <code>log(numDocs/(docFreq+1)) + 1</code>. */
- qreal idf(int32_t docFreq, int32_t numDocs);
-
- /** Implemented as <code>overlap / maxOverlap</code>. */
- qreal coord(int32_t overlap, int32_t maxOverlap);
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.cpp
deleted file mode 100644
index b7683b018..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "SloppyPhraseScorer.h"
-
-#include "PhraseScorer.h"
-#include "CLucene/index/Terms.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
- SloppyPhraseScorer::SloppyPhraseScorer(Weight* weight, CL_NS(index)::TermPositions** tps,
- int32_t* positions, Similarity* similarity,
- int32_t slop, uint8_t* norms):
- PhraseScorer(weight,tps,positions,similarity,norms){
- //Func - Constructor
- //Pre - tps != NULL
- // tpsLength >= 0
- // n != NULL
- //Post - Instance has been created
-
- CND_PRECONDITION(tps != NULL, "tps is NULL");
- //CND_PRECONDITION(n != NULL, _T("n is NULL")) = checked in PhraseScorer;
-
- this->slop = slop;
- }
-
- qreal SloppyPhraseScorer::phraseFreq() {
- //Func - Returns the freqency of the phrase
- //Pre - first != NULL
- // last != NULL
- // pq != NULL
- //Post - The frequency of the phrase has been returned
-
- CND_PRECONDITION(first != NULL,"first is NULL");
- CND_PRECONDITION(last != NULL,"last is NULL");
- CND_PRECONDITION(pq != NULL,"pq is NULL");
-
- //Clear the PhraseQueue pq;
- pq->clear();
-
- int32_t end = 0;
-
- //declare iterator
- PhrasePositions* pp = NULL;
-
- // build pq from list
-
- //Sort the list of PhrasePositions using pq
- for (pp = first; pp != NULL; pp = pp->_next) {
- //Read the first TermPosition of the current PhrasePositions pp
- pp->firstPosition();
- //Check if the position of the pp is bigger than end
- if (pp->position > end){
- end = pp->position;
- }
- //Store the current PhrasePositions pp into the PhraseQueue pp
- pq->put(pp);
- }
-
- qreal freq = 0.0f;
-
- bool done = false;
-
- do {
- //Pop a PhrasePositions pp from the PhraseQueue pp
- pp = pq->pop();
- //Get start position
- int32_t start = pp->position;
- //Get next position
- int32_t next = pq->top()->position;
-
- for (int32_t pos = start; pos <= next; pos = pp->position) {
- //advance pp to min window
- start = pos;
-
- if (!pp->nextPosition()) {
- //ran out of a term -- done
- done = true;
- break;
- }
- }
-
- //Calculate matchLength
- int32_t matchLength = end - start;
- //Check if matchLength is smaller than slop
- if (matchLength <= slop){
- // penalize longer matches
- freq += 1.0 / (matchLength + 1);
- }
-
- if (pp->position > end){
- end = pp->position;
- }
-
- //restore pq
- pq->put(pp);
- }while (!done);
-
- return freq;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.h
deleted file mode 100644
index 31516e393..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/SloppyPhraseScorer.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_SloppyPhraseScorer_
-#define _lucene_search_SloppyPhraseScorer_
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "PhraseScorer.h"
-#include "CLucene/index/Terms.h"
-
-
-CL_NS_DEF(search)
- class SloppyPhraseScorer: public PhraseScorer {
- private:
- int32_t slop;
-
- public:
- SloppyPhraseScorer(Weight* weight, CL_NS(index)::TermPositions** tps,
- int32_t* positions, Similarity* similarity,
- int32_t slop, uint8_t* norms);
- ~SloppyPhraseScorer(){
- }
-
- protected:
- qreal phraseFreq();
- };
-CL_NS_END
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Sort.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/Sort.cpp
deleted file mode 100644
index 5a17a784d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Sort.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Sort.h"
-#include "Compare.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
-
-
- /** Represents sorting by document score (relevancy). */
- SortField* SortField::FIELD_SCORE = _CLNEW SortField (NULL, DOCSCORE,false);
-
- /** Represents sorting by document number (index order). */
- SortField* SortField::FIELD_DOC = _CLNEW SortField (NULL, DOC,false);
-
-
- /** Represents sorting by computed relevance. Using this sort criteria
- * returns the same results as calling {@link Searcher#search(Query) Searcher#search()}
- * without a sort criteria, only with slightly more overhead. */
- Sort* Sort::RELEVANCE = _CLNEW Sort();
-
- /** Represents sorting by index order. */
- Sort* Sort::INDEXORDER = _CLNEW Sort (SortField::FIELD_DOC);
-
-
-
-
- /** Creates a sort by terms in the given field where the type of term value
- * is determined dynamically ({@link #AUTO AUTO}).
- * @param field Name of field to sort by, cannot be <code>null</code>.
- */
- SortField::SortField (const TCHAR* field) {
- this->type = AUTO;
- this->reverse = false;
- this->field = CLStringIntern::intern(field CL_FILELINE);
- this->factory = NULL;
- }
-
- /** Creates a sort, possibly in reverse, by terms in the given field where
- * the type of term value is determined dynamically ({@link #AUTO AUTO}).
- * @param field Name of field to sort by, cannot be <code>null</code>.
- * @param reverse True if natural order should be reversed.
-
- SortField::SortField (const TCHAR* field, bool reverse) {
- this->field = CLStringIntern::intern(field CL_FILELINE);
- this->reverse = reverse;
- this->type = AUTO;
- this->factory = NULL;
- }*/
-
-
- /** Creates a sort, possibly in reverse, by terms in the given field with the
- * type of term values explicitly given.
- * @param field Name of field to sort by. Can be <code>null</code> if
- * <code>type</code> is SCORE or DOC.
- * @param type Type of values in the terms.
- * @param reverse True if natural order should be reversed (default=false).
- */
- SortField::SortField (const TCHAR* field, int32_t type, bool reverse) {
- this->field = (field != NULL) ? CLStringIntern::intern(field CL_FILELINE) : field;
- this->type = type;
- this->reverse = reverse;
- this->factory = NULL;
- }
-
- SortField::SortField(const SortField& clone){
- this->field = (clone.field != NULL) ? CLStringIntern::intern(clone.field CL_FILELINE) : clone.field;
- this->type = clone.type;
- this->reverse = clone.reverse;
- this->factory = clone.factory;
- }
- SortField* SortField::clone() const{
- return _CLNEW SortField(*this);
- }
-
- /** Creates a sort by terms in the given field sorted
- * according to the given locale.
- * @param field Name of field to sort by, cannot be <code>null</code>.
- * @param locale Locale of values in the field.
- */
- /*SortField::SortField (TCHAR* field, Locale* locale) {
- this->field = (field != NULL) ? CLStringIntern::intern(field): field;
- this->type = STRING;
- this->locale = locale;
- }*/
-
- /** Creates a sort, possibly in reverse, by terms in the given field sorted
- * according to the given locale.
- * @param field Name of field to sort by, cannot be <code>null</code>.
- * @param locale Locale of values in the field.
- */
- /*SortField::SortField (TCHAR* field, Locale* locale, bool reverse) {
- this->field = (field != NULL) ? CLStringIntern::intern(field): field;
- this->type = STRING;
- this->locale = locale;
- this->reverse = reverse;
- }*/
-
-
- /** Creates a sort, possibly in reverse, with a custom comparison function.
- * @param field Name of field to sort by; cannot be <code>null</code>.
- * @param comparator Returns a comparator for sorting hits.
- * @param reverse True if natural order should be reversed (default=false).
- */
- SortField::SortField (const TCHAR* field, SortComparatorSource* comparator, bool reverse) {
- this->field = (field != NULL) ? CLStringIntern::intern(field CL_FILELINE): field;
- this->type = CUSTOM;
- this->reverse = reverse;
- this->factory = comparator;
- }
-
- SortField::~SortField(){
- CLStringIntern::unintern(field);
- }
-
- TCHAR* SortField::toString() const {
- CL_NS(util)::StringBuffer buffer;
- switch (type) {
- case DOCSCORE: buffer.append(_T("<score>"));
- break;
-
- case DOC: buffer.append(_T("<doc>"));
- break;
-
- case CUSTOM: buffer.append (_T("<custom:\""));
- buffer.append( field );
- buffer.append( _T("\": "));
- buffer.append(factory->getName());
- buffer.append(_T(">"));
- break;
-
- default: buffer.append( _T("\""));
- buffer.append( field );
- buffer.append( _T("\"") );
- break;
- }
-
- //if (locale != null) buffer.append ("("+locale+")"); todo:
- if (reverse) buffer.appendChar('!');
-
- return buffer.toString();
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- /** Sorts by computed relevance. This is the same sort criteria as
- * calling {@link Searcher#search(Query) Searcher#search()} without a sort criteria, only with
- * slightly more overhead. */
- Sort::Sort() {
- fields=NULL;
- SortField** fields=_CL_NEWARRAY(SortField*,3);
- fields[0]=SortField::FIELD_SCORE;
- fields[1]=SortField::FIELD_DOC;
- fields[2]=NULL;
- setSort (fields);
- _CLDELETE_ARRAY(fields);
- }
-
- Sort::~Sort(){
- clear();
- }
- void Sort::clear(){
- if ( fields != NULL ){
- int32_t i=0;
- while ( fields[i] != NULL ){
- if ( fields[i] != SortField::FIELD_SCORE &&
- fields[i] != SortField::FIELD_DOC ){
- _CLDELETE(fields[i]);
- }
- i++;
- }
- _CLDELETE_ARRAY(fields);
- }
- }
-
- /** Sorts possibly in reverse by the terms in <code>field</code> then by
- * index order (document number). The type of value in <code>field</code> is determined
- * automatically.
- * @see SortField#AUTO
- */
- Sort::Sort (const TCHAR* field, bool reverse) {
- this->fields=NULL;
- setSort (field, reverse);
- }
-
-
- /** Sorts in succession by the terms in each field.
- * The type of value in <code>field</code> is determined
- * automatically.
- * @see SortField#AUTO
- */
- Sort::Sort (const TCHAR** fields) {
- this->fields=NULL;
- setSort (fields);
- }
-
-
- /** Sorts by the criteria in the given SortField. */
- Sort::Sort (SortField* field) {
- this->fields=NULL;
- setSort (field);
- }
-
-
- /** Sorts in succession by the criteria in each SortField. */
- Sort::Sort (SortField** fields) {
- this->fields=NULL;
- setSort (fields);
- }
-
-
- /** Sets the sort to the terms in <code>field</code> possibly in reverse,
- * then by index order (document number). */
- void Sort::setSort (const TCHAR* field, bool reverse) {
- clear();
- fields = _CL_NEWARRAY(SortField*,3);
- fields[0] = _CLNEW SortField (field, SortField::AUTO, reverse);
- fields[1] = SortField::FIELD_DOC;
- fields[2] = NULL;
- }
-
-
- /** Sets the sort to the terms in each field in succession. */
- void Sort::setSort (const TCHAR** fieldnames) {
- clear();
-
- int32_t n = 0;
- while ( fieldnames[n] != NULL )
- n++;
-
- fields = _CL_NEWARRAY(SortField*,n+1);
- for (int32_t i = 0; i < n; ++i) {
- fields[i] = _CLNEW SortField (fieldnames[i], SortField::AUTO,false);
- }
- fields[n]=NULL;
- }
-
-
- /** Sets the sort to the given criteria. */
- void Sort::setSort (SortField* field) {
- clear();
-
- this->fields = _CL_NEWARRAY(SortField*,2);
- this->fields[0] = field;
- this->fields[1] = NULL;
- }
-
-
- /** Sets the sort to the given criteria in succession. */
- void Sort::setSort (SortField** fields) {
- clear();
-
- int n=0;
- while ( fields[n] != NULL )
- n++;
- this->fields = _CL_NEWARRAY(SortField*,n+1);
- for (int i=0;i<n+1;i++)
- this->fields[i]=fields[i];
- }
-
- TCHAR* Sort::toString() const {
- CL_NS(util)::StringBuffer buffer;
-
- int32_t i = 0;
- while ( fields[i] != NULL ){
- if (i>0)
- buffer.appendChar(',');
-
- const TCHAR* p = fields[i]->toString();
- buffer.append(p);
- _CLDELETE_CARRAY(p);
-
- i++;
- }
-
- return buffer.toString();
- }
-
-
-
-
-
- ScoreDocComparator* ScoreDocComparator::INDEXORDER = _CLNEW ScoreDocComparators::IndexOrder;
- ScoreDocComparator* ScoreDocComparator::RELEVANCE = _CLNEW ScoreDocComparators::Relevance;
-
- ScoreDocComparator::~ScoreDocComparator(){
- }
-
-
-class ScoreDocComparatorImpl: public ScoreDocComparator{
- Comparable** cachedValues;
- FieldCacheAuto* fca;
- int32_t cachedValuesLen;
-public:
- ScoreDocComparatorImpl(FieldCacheAuto* fca){
- this->fca = fca;
- if ( fca->contentType != FieldCacheAuto::COMPARABLE_ARRAY )
- _CLTHROWA(CL_ERR_InvalidCast,"Invalid field cache auto type");
- this->cachedValues = fca->comparableArray;
- this->cachedValuesLen = fca->contentLen;
- }
- ~ScoreDocComparatorImpl(){
- }
- int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j){
- CND_PRECONDITION(i->doc >= 0 && i->doc < cachedValuesLen, "i->doc out of range")
- CND_PRECONDITION(j->doc >= 0 && j->doc < cachedValuesLen, "j->doc out of range")
- return cachedValues[i->doc]->compareTo (cachedValues[j->doc]);
- }
-
- CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i){
- CND_PRECONDITION(i->doc >= 0 && i->doc < cachedValuesLen, "i->doc out of range")
- return cachedValues[i->doc];
- }
-
- int32_t sortType(){
- return SortField::CUSTOM;
- }
-};
-
-ScoreDocComparator* SortComparator::newComparator (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname){
- return _CLNEW ScoreDocComparatorImpl(FieldCache::DEFAULT->getCustom (reader, fieldname, this));
-}
-SortComparator::SortComparator(){
-}
-SortComparator::~SortComparator(){
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/Sort.h b/src/assistant/3rdparty/clucene/src/CLucene/search/Sort.h
deleted file mode 100644
index cfe96d56c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/Sort.h
+++ /dev/null
@@ -1,356 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_Sort_
-#define _lucene_search_Sort_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "SearchHeader.h"
-
-CL_NS_DEF(search)
-
- class SortField; //predefine
- class Sort;
-
-/**
- * Expert: Compares two ScoreDoc objects for sorting.
- *
- */
- class ScoreDocComparator:LUCENE_BASE {
- protected:
- ScoreDocComparator(){}
- public:
- virtual ~ScoreDocComparator();
-// CL_NS(util)::Comparable** cachedValues;
-// ScoreDocComparator(CL_NS(util)::Comparable** cachedValues);
-
- /**
- * Compares two ScoreDoc objects and returns a result indicating their
- * sort order.
- * @param i First ScoreDoc
- * @param j Second ScoreDoc
- * @return <code>-1</code> if <code>i</code> should come before <code>j</code><br><code>1</code> if <code>i</code> should come after <code>j</code><br><code>0</code> if they are equal
- * @see java.util.Comparator
- */
- virtual int32_t compare (struct ScoreDoc* i, struct ScoreDoc* j) = 0;
-
- /**
- * Returns the value used to sort the given document. The
- * object returned must implement the java.io.Serializable
- * interface. This is used by multisearchers to determine how to collate results from their searchers.
- * @see FieldDoc
- * @param i Document
- * @return Serializable object
- */
- virtual CL_NS(util)::Comparable* sortValue (struct ScoreDoc* i) = 0;
-
-
- /**
- * Returns the type of sort. Should return <code>SortField.SCORE</code>, <code>SortField.DOC</code>, <code>SortField.STRING</code>, <code>SortField.INTEGER</code>,
- * <code>SortField::FLOAT</code> or <code>SortField.CUSTOM</code>. It is not valid to return <code>SortField.AUTO</code>.
- * This is used by multisearchers to determine how to collate results from their searchers.
- * @return One of the constants in SortField.
- * @see SortField
- */
- virtual int32_t sortType() = 0;
-
- /** Special comparator for sorting hits according to computed relevance (document score). */
- static ScoreDocComparator* RELEVANCE;
-
- /** Special comparator for sorting hits according to index order (document number). */
- static ScoreDocComparator* INDEXORDER;
- };
-
-/**
- * Expert: returns a comparator for sorting ScoreDocs.
- *
- */
-class SortComparatorSource:LUCENE_BASE {
-public:
- virtual ~SortComparatorSource(){
- }
-
- /**
- * return a reference to a string describing the name of the comparator
- * this is used in the explanation
- */
- virtual TCHAR* getName() = 0;
-
- virtual size_t hashCode() = 0;
-
- /**
- * Creates a comparator for the field in the given index.
- * @param reader Index to create comparator for.
- * @param fieldname Field to create comparator for.
- * @return Comparator of ScoreDoc objects.
- * @throws IOException If an error occurs reading the index.
- */
- virtual ScoreDocComparator* newComparator (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname) = 0;
-};
-
-
-/**
- * Abstract base class for sorting hits returned by a Query.
- *
- * <p>This class should only be used if the other SortField
- * types (SCORE, DOC, STRING, INT, FLOAT) do not provide an
- * adequate sorting. It maintains an internal cache of values which
- * could be quite large. The cache is an array of Comparable,
- * one for each document in the index. There is a distinct
- * Comparable for each unique term in the field - if
- * some documents have the same term in the field, the cache
- * array will have entries which reference the same Comparable.
- *
- */
-class SortComparator: public SortComparatorSource {
-public:
- virtual ScoreDocComparator* newComparator (CL_NS(index)::IndexReader* reader, const TCHAR* fieldname);
-
- SortComparator();
- virtual ~SortComparator();
-
- /**
- * Returns an object which, when sorted according to natural order,
- * will order the Term values in the correct order.
- * <p>For example, if the Terms contained integer values, this method
- * would return <code>new Integer(termtext)</code>. Note that this
- * might not always be the most efficient implementation - for this
- * particular example, a better implementation might be to make a
- * ScoreDocLookupComparator that uses an internal lookup table of int.
- * @param termtext The textual value of the term.
- * @return An object representing <code>termtext</code> that sorts
- * according to the natural order of <code>termtext</code>.
- * @see Comparable
- * @see ScoreDocComparator
- */
- virtual CL_NS(util)::Comparable* getComparable (const TCHAR* termtext) = 0;
-
-};
-
-
-/**
- * Stores information about how to sort documents by terms in an individual
- * field. Fields must be indexed in order to sort by them.
- *
- */
-class SortField:LUCENE_BASE {
-private:
- const TCHAR* field;
- int32_t type; // defaults to determining type dynamically
- //Locale* locale; // defaults to "natural order" (no Locale)
- bool reverse; // defaults to natural order
- SortComparatorSource* factory;
-
-protected:
- SortField (const SortField& clone);
-public:
- virtual ~SortField();
-
- /** Sort by document score (relevancy). Sort values are Float and higher
- * values are at the front.
- * PORTING: this is the same as SCORE in java, it had to be renamed because
- * SCORE is a system macro on some platforms (AIX).
- */
- LUCENE_STATIC_CONSTANT(int32_t, DOCSCORE=0);
-
- /** Sort by document number (index order). Sort values are Integer and lower
- * values are at the front. */
- LUCENE_STATIC_CONSTANT(int32_t, DOC=1);
-
- /** Guess type of sort based on field contents. A regular expression is used
- * to look at the first term indexed for the field and determine if it
- * represents an integer number, a floating point number, or just arbitrary
- * string characters. */
- LUCENE_STATIC_CONSTANT(int32_t, AUTO=2);
-
- /** Sort using term values as Strings. Sort values are String and lower
- * values are at the front. */
- LUCENE_STATIC_CONSTANT(int32_t, STRING=3);
-
- /** Sort using term values as encoded Integers. Sort values are Integer and
- * lower values are at the front. */
- LUCENE_STATIC_CONSTANT(int32_t, INT=4);
-
- /** Sort using term values as encoded Floats. Sort values are Float and
- * lower values are at the front. */
- LUCENE_STATIC_CONSTANT(int32_t, FLOAT=5);
-
- /** Sort using a custom Comparator. Sort values are any Comparable and
- * sorting is done according to natural order. */
- LUCENE_STATIC_CONSTANT(int32_t, CUSTOM=9);
-
- // IMPLEMENTATION NOTE: the FieldCache.STRING_INDEX is in the same "namespace"
- // as the above static int values. Any new values must not have the same value
- // as FieldCache.STRING_INDEX.
-
- /** Represents sorting by document score (relevancy). */
- static SortField* FIELD_SCORE;
-
- /** Represents sorting by document number (index order). */
- static SortField* FIELD_DOC;
-
- SortField (const TCHAR* field);
- //SortField (const TCHAR* field, bool reverse);
- //todo: we cannot make reverse use default field of =false.
- //because bool and int are the same type in c, overloading is not possible
- SortField (const TCHAR* field, int32_t type, bool reverse);
-
- /*
- SortField (TCHAR* field, Locale* locale) {
- SortField (TCHAR* field, Locale* locale, bool reverse);*/
-
- SortField (const TCHAR* field, SortComparatorSource* comparator, bool reverse=false);
-
- /** Returns the name of the field. Could return <code>null</code>
- * if the sort is by SCORE or DOC.
- * @return Name of field, possibly <code>null</code>.
- */
- const TCHAR* getField() const { return field; }
-
- SortField* clone() const;
-
- /** Returns the type of contents in the field.
- * @return One of the constants SCORE, DOC, AUTO, STRING, INT or FLOAT.
- */
- int32_t getType() const { return type; }
-
- /** Returns the Locale by which term values are interpreted.
- * May return <code>null</code> if no Locale was specified.
- * @return Locale, or <code>null</code>.
- */
- /*Locale getLocale() {
- return locale;
- }*/
-
- /** Returns whether the sort should be reversed.
- * @return True if natural order should be reversed.
- */
- bool getReverse() const { return reverse; }
-
- SortComparatorSource* getFactory() const { return factory; }
-
- TCHAR* toString() const;
-};
-
-
-
-/**
- * Encapsulates sort criteria for returned hits.
- *
- * <p>The fields used to determine sort order must be carefully chosen.
- * Documents must contain a single term in such a field,
- * and the value of the term should indicate the document's relative position in
- * a given sort order. The field must be indexed, but should not be tokenized,
- * and does not need to be stored (unless you happen to want it back with the
- * rest of your document data). In other words:
- *
- * <dl><dd><code>document.add (new Field ("byNumber", Integer.toString(x), false, true, false));</code>
- * </dd></dl>
- *
- * <p><h3>Valid Types of Values</h3>
- *
- * <p>There are three possible kinds of term values which may be put into
- * sorting fields: Integers, Floats, or Strings. Unless
- * {@link SortField SortField} objects are specified, the type of value
- * in the field is determined by parsing the first term in the field.
- *
- * <p>Integer term values should contain only digits and an optional
- * preceeding negative sign. Values must be base 10 and in the range
- * <code>Integer.MIN_VALUE</code> and <code>Integer.MAX_VALUE</code> inclusive.
- * Documents which should appear first in the sort
- * should have low value integers, later documents high values
- * (i.e. the documents should be numbered <code>1..n</code> where
- * <code>1</code> is the first and <code>n</code> the last).
- *
- * <p>Float term values should conform to values accepted by
- * {@link Float Float.valueOf(String)} (except that <code>NaN</code>
- * and <code>Infinity</code> are not supported).
- * Documents which should appear first in the sort
- * should have low values, later documents high values.
- *
- * <p>String term values can contain any valid String, but should
- * not be tokenized. The values are sorted according to their
- * {@link Comparable natural order}. Note that using this type
- * of term value has higher memory requirements than the other
- * two types.
- *
- * <p><h3>Object Reuse</h3>
- *
- * <p>One of these objects can be
- * used multiple times and the sort order changed between usages.
- *
- * <p>This class is thread safe.
- *
- * <p><h3>Memory Usage</h3>
- *
- * <p>Sorting uses of caches of term values maintained by the
- * internal HitQueue(s). The cache is static and contains an integer
- * or float array of length <code>IndexReader.maxDoc()</code> for each field
- * name for which a sort is performed. In other words, the size of the
- * cache in bytes is:
- *
- * <p><code>4 * IndexReader.maxDoc() * (# of different fields actually used to sort)</code>
- *
- * <p>For String fields, the cache is larger: in addition to the
- * above array, the value of every term in the field is kept in memory.
- * If there are many unique terms in the field, this could
- * be quite large.
- *
- * <p>Note that the size of the cache is not affected by how many
- * fields are in the index and <i>might</i> be used to sort - only by
- * the ones actually used to sort a result set.
- *
- * <p>The cache is cleared each time a new <code>IndexReader</code> is
- * passed in, or if the value returned by <code>maxDoc()</code>
- * changes for the current IndexReader. This class is not set up to
- * be able to efficiently sort hits from more than one index
- * simultaneously.
- *
- */
-class Sort:LUCENE_BASE {
- // internal representation of the sort criteria
- SortField** fields;
- void clear();
-public:
- ~Sort();
-
- /** Represents sorting by computed relevance. Using this sort criteria
- * returns the same results as calling {@link Searcher#search(Query) Searcher#search()}
- * without a sort criteria, only with slightly more overhead. */
- static Sort* RELEVANCE;
-
- /** Represents sorting by index order. */
- static Sort* INDEXORDER;
-
- Sort();
- Sort (const TCHAR* field, bool reverse=false);
- Sort (const TCHAR** fields);
- Sort (SortField* field);
- Sort (SortField** fields);
- void setSort (const TCHAR* field, bool reverse=false);
- void setSort (const TCHAR** fieldnames);
- void setSort (SortField* field);
- void setSort (SortField** fields);
-
- TCHAR* toString() const;
-
- /**
- * Representation of the sort criteria.
- * @return a pointer to the of SortField array used in this sort criteria
- */
- SortField** getSort() const{ return fields; }
-};
-
-
-
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.cpp
deleted file mode 100644
index a04c20fec..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "TermQuery.h"
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "CLucene/index/Term.h"
-#include "TermScorer.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/index/Terms.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
-
- /** Constructs a query for the term <code>t</code>. */
- TermQuery::TermQuery(Term* t):
- term( _CL_POINTER(t) )
- {
- }
- TermQuery::TermQuery(const TermQuery& clone):
- Query(clone){
- this->term=_CL_POINTER(clone.term);
- }
- TermQuery::~TermQuery(){
- _CLDECDELETE(term);
- }
-
- Query* TermQuery::clone() const{
- return _CLNEW TermQuery(*this);
- }
-
- const TCHAR* TermQuery::getClassName(){
- return _T("TermQuery");
- }
- const TCHAR* TermQuery::getQueryName() const{
- return getClassName();
- }
- size_t TermQuery::hashCode() const {
- return Similarity::floatToByte(getBoost()) ^ term->hashCode();
- }
-
-
- //added by search highlighter
- Term* TermQuery::getTerm(bool pointer) const
- {
- if ( pointer )
- return _CL_POINTER(term);
- else
- return term;
- }
-
-
- /** Prints a user-readable version of this query. */
- TCHAR* TermQuery::toString(const TCHAR* field) const{
- CL_NS(util)::StringBuffer buffer;
- if ( field==NULL || _tcscmp(term->field(),field)!= 0 ) {
- buffer.append(term->field());
- buffer.append(_T(":"));
- }
- buffer.append(term->text());
- if (getBoost() != 1.0f) {
- buffer.append(_T("^"));
- buffer.appendFloat( getBoost(),1 );
- }
- return buffer.toString();
- }
-
- /** Returns true iff <code>o</code> is equal to this. */
- bool TermQuery::equals(Query* other) const {
- if (!(other->instanceOf(TermQuery::getClassName())))
- return false;
-
- TermQuery* tq = (TermQuery*)other;
- return (this->getBoost() == tq->getBoost())
- && this->term->equals(tq->term);
- }
-
-
- TermQuery::TermWeight::TermWeight(Searcher* searcher, TermQuery* _this, Term* _term) {
- this->_this = _this;
- this->_term = _term;
- this->searcher = searcher;
- value=0;
- idf=0;
- queryNorm=0;
- queryWeight=0;
- }
- TermQuery::TermWeight::~TermWeight(){
- }
-
- //return a *new* string describing this object
- TCHAR* TermQuery::TermWeight::toString() {
- int32_t size=_tcslen(_this->getQueryName()) + 10;
- TCHAR* tmp = _CL_NEWARRAY(TCHAR, size);//_tcslen(weight())
- _sntprintf(tmp,size,_T("weight(%s)"),_this->getQueryName());
- return tmp;
- }
-
- qreal TermQuery::TermWeight::sumOfSquaredWeights() {
- idf = _this->getSimilarity(searcher)->idf(_term, searcher); // compute idf
- queryWeight = idf * _this->getBoost(); // compute query weight
- return queryWeight * queryWeight; // square it
- }
-
- void TermQuery::TermWeight::normalize(qreal queryNorm) {
- this->queryNorm = queryNorm;
- queryWeight *= queryNorm; // normalize query weight
- value = queryWeight * idf; // idf for document
- }
-
- Scorer* TermQuery::TermWeight::scorer(IndexReader* reader) {
- TermDocs* termDocs = reader->termDocs(_term);
-
- if (termDocs == NULL)
- return NULL;
-
- return _CLNEW TermScorer(this, termDocs, _this->getSimilarity(searcher),
- reader->norms(_term->field()));
- }
-
- void TermQuery::TermWeight::explain(IndexReader* reader, int32_t doc, Explanation* result){
- TCHAR buf[LUCENE_SEARCH_EXPLANATION_DESC_LEN];
- TCHAR* tmp;
-
- tmp = getQuery()->toString();
- _sntprintf(buf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("weight(%s in %d), product of:"),tmp,doc);
- _CLDELETE_CARRAY(tmp);
- result->setDescription(buf);
-
- _sntprintf(buf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("idf(docFreq=%d)"), searcher->docFreq(_term) );
- Explanation* idfExpl = _CLNEW Explanation(idf, buf);
-
- // explain query weight
- Explanation* queryExpl = _CLNEW Explanation();
- tmp = getQuery()->toString();
- _sntprintf(buf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("queryWeight(%s), product of:"), tmp);
- _CLDELETE_CARRAY(tmp);
- queryExpl->setDescription(buf);
-
- Explanation* boostExpl = _CLNEW Explanation(_this->getBoost(), _T("boost"));
- if (_this->getBoost() != 1.0f)
- queryExpl->addDetail(boostExpl);
- else
- _CLDELETE(boostExpl);
-
- queryExpl->addDetail(idfExpl->clone());
-
- Explanation* queryNormExpl = _CLNEW Explanation(queryNorm,_T("queryNorm"));
- queryExpl->addDetail(queryNormExpl);
-
- queryExpl->setValue(_this->getBoost()* // always 1.0
- idfExpl->getValue() *
- queryNormExpl->getValue());
-
- // explain field weight
- const TCHAR* field = _term->field();
- Explanation* fieldExpl = _CLNEW Explanation();
-
- tmp = _term->toString();
- _sntprintf(buf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("fieldWeight(%s in %d), product of:"),tmp,doc);
- _CLDELETE_CARRAY(tmp);
- fieldExpl->setDescription(buf);
-
- Scorer* sc = scorer(reader);
- Explanation* tfExpl = _CLNEW Explanation;
- sc->explain(doc, tfExpl);
- _CLDELETE(sc);
- fieldExpl->addDetail(tfExpl);
- fieldExpl->addDetail(idfExpl);
-
- Explanation* fieldNormExpl = _CLNEW Explanation();
- uint8_t* fieldNorms = reader->norms(field);
- qreal fieldNorm =
- fieldNorms!=NULL ? Similarity::decodeNorm(fieldNorms[doc]) : 0.0f;
- fieldNormExpl->setValue(fieldNorm);
-
- _sntprintf(buf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,
- _T("fieldNorm(field=%s, doc=%d)"),field,doc);
- fieldNormExpl->setDescription(buf);
- fieldExpl->addDetail(fieldNormExpl);
-
- fieldExpl->setValue(tfExpl->getValue() *
- idfExpl->getValue() *
- fieldNormExpl->getValue());
-
- /*if (queryExpl->getValue() == 1.0f){
- _CLDELETE(result);
- return fieldExpl;
- }else{*/
- result->addDetail(queryExpl);
- result->addDetail(fieldExpl);
-
- // combine them
- result->setValue(queryExpl->getValue() * fieldExpl->getValue());
- //}
- }
-
- Weight* TermQuery::_createWeight(Searcher* searcher) {
- return _CLNEW TermWeight(searcher,this,term);
- }
-CL_NS_END
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.h
deleted file mode 100644
index a7dd8039b..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/TermQuery.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_TermQuery_
-#define _lucene_search_TermQuery_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "SearchHeader.h"
-#include "Scorer.h"
-#include "CLucene/index/Term.h"
-#include "TermScorer.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/StringBuffer.h"
-#include "CLucene/index/Terms.h"
-
-CL_NS_DEF(search)
-
-
- /** A Query that matches documents containing a term.
- This may be combined with other terms with a {@link BooleanQuery}.
- */
- class TermQuery: public Query {
- private:
- CL_NS(index)::Term* term;
-
-
- class TermWeight: public Weight {
- private:
- Searcher* searcher;
- qreal value;
- qreal idf;
- qreal queryNorm;
- qreal queryWeight;
- TermQuery* _this;
- CL_NS(index)::Term* _term;
-
- public:
- TermWeight(Searcher* searcher, TermQuery* _this, CL_NS(index)::Term* _term);
- ~TermWeight();
- TCHAR* toString();
- Query* getQuery() { return (Query*)_this; }
- qreal getValue() { return value; }
-
- qreal sumOfSquaredWeights();
- void normalize(qreal queryNorm);
- Scorer* scorer(CL_NS(index)::IndexReader* reader);
- void explain(CL_NS(index)::IndexReader* reader, int32_t doc, Explanation* ret);
- };
-
- protected:
- Weight* _createWeight(Searcher* searcher);
- TermQuery(const TermQuery& clone);
- public:
- // Constructs a query for the term <code>t</code>.
- TermQuery(CL_NS(index)::Term* t);
- ~TermQuery();
-
- static const TCHAR* getClassName();
- const TCHAR* getQueryName() const;
-
- //added by search highlighter
- CL_NS(index)::Term* getTerm(bool pointer=true) const;
-
- // Prints a user-readable version of this query.
- TCHAR* toString(const TCHAR* field) const;
-
- bool equals(Query* other) const;
- Query* clone() const;
-
- /** Returns a hash code value for this object.*/
- size_t hashCode() const;
- };
-CL_NS_END
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.cpp
deleted file mode 100644
index ddd7f74ed..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "TermScorer.h"
-
-#include "CLucene/index/Terms.h"
-#include "TermQuery.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
- //TermScorer takes TermDocs and delets it when TermScorer is cleaned up
- TermScorer::TermScorer(Weight* w, CL_NS(index)::TermDocs* td,
- Similarity* similarity,uint8_t* _norms):
- Scorer(similarity),
- termDocs(td),
- norms(_norms),
- weight(w),
- weightValue(w->getValue()),
- _doc(0),
- pointer(0),
- pointerMax(0)
- {
- memset(docs,0,32*sizeof(int32_t));
- memset(freqs,0,32*sizeof(int32_t));
-
- for (int32_t i = 0; i < LUCENE_SCORE_CACHE_SIZE; i++)
- scoreCache[i] = getSimilarity()->tf(i) * weightValue;
- }
-
- TermScorer::~TermScorer(){
- _CLDELETE(termDocs);
- }
- bool TermScorer::next(){
- pointer++;
- if (pointer >= pointerMax) {
- pointerMax = termDocs->read(docs, freqs, 32); // refill buffer
- if (pointerMax != 0) {
- pointer = 0;
- } else {
- termDocs->close(); // close stream
- _doc = LUCENE_INT32_MAX_SHOULDBE; // set to sentinel value
- return false;
- }
- }
- _doc = docs[pointer];
- return true;
- }
-
- bool TermScorer::skipTo(int32_t target) {
- // first scan in cache
- for (pointer++; pointer < pointerMax; pointer++) {
- if (docs[pointer] >= target) {
- _doc = docs[pointer];
- return true;
- }
- }
-
- // not found in cache, seek underlying stream
- bool result = termDocs->skipTo(target);
- if (result) {
- pointerMax = 1;
- pointer = 0;
- docs[pointer] = _doc = termDocs->doc();
- freqs[pointer] = termDocs->freq();
- } else {
- _doc = LUCENE_INT32_MAX_SHOULDBE;
- }
- return result;
- }
-
- void TermScorer::explain(int32_t doc, Explanation* tfExplanation) {
- TermQuery* query = (TermQuery*)weight->getQuery();
- int32_t tf = 0;
- while (pointer < pointerMax) {
- if (docs[pointer] == doc)
- tf = freqs[pointer];
- pointer++;
- }
- if (tf == 0) {
- while (termDocs->next()) {
- if (termDocs->doc() == doc) {
- tf = termDocs->freq();
- }
- }
- }
- termDocs->close();
- tfExplanation->setValue(getSimilarity()->tf(tf));
-
- TCHAR buf[LUCENE_SEARCH_EXPLANATION_DESC_LEN+1];
- TCHAR* termToString = query->getTerm(false)->toString();
- _sntprintf(buf,LUCENE_SEARCH_EXPLANATION_DESC_LEN,_T("tf(termFreq(%s)=%d)"), termToString, tf);
- _CLDELETE_CARRAY(termToString);
- tfExplanation->setDescription(buf);
- }
-
- TCHAR* TermScorer::toString() {
- TCHAR* wb = weight->toString();
- int32_t rl = _tcslen(wb) + 9; //9=_tcslen("scorer(" ")") + 1
- TCHAR* ret = _CL_NEWARRAY(TCHAR,rl);
- _sntprintf(ret,rl,_T("scorer(%s)"), wb);
- _CLDELETE_ARRAY(wb);
- return ret;
- }
-
- qreal TermScorer::score(){
- int32_t f = freqs[pointer];
- qreal raw = // compute tf(f)*weight
- f < LUCENE_SCORE_CACHE_SIZE // check cache
- ? scoreCache[f] // cache hit
- : getSimilarity()->tf(f) * weightValue; // cache miss
-
- return raw * Similarity::decodeNorm(norms[_doc]); // normalize for field
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.h b/src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.h
deleted file mode 100644
index ccbf5f7ec..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/TermScorer.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_TermScorer_
-#define _lucene_search_TermScorer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Scorer.h"
-#include "CLucene/index/Terms.h"
-#include "CLucene/search/Similarity.h"
-#include "SearchHeader.h"
-
-CL_NS_DEF(search)
-
- class TermScorer: public Scorer {
- private:
- CL_NS(index)::TermDocs* termDocs;
- uint8_t* norms;
- Weight* weight;
- const qreal weightValue;
- int32_t _doc;
-
- int32_t docs[32]; // buffered doc numbers
- int32_t freqs[32]; // buffered term freqs
- int32_t pointer;
- int32_t pointerMax;
-
- qreal scoreCache[LUCENE_SCORE_CACHE_SIZE];
- public:
-
- //TermScorer takes TermDocs and delets it when TermScorer is cleaned up
- TermScorer(Weight* weight, CL_NS(index)::TermDocs* td,
- Similarity* similarity, uint8_t* _norms);
-
- ~TermScorer();
-
- int32_t doc() const { return _doc; }
-
- bool next();
- bool skipTo(int32_t target);
- void explain(int32_t doc, Explanation* ret);
- TCHAR* toString();
-
- qreal score();
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.cpp
deleted file mode 100644
index 9373cef0a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "WildcardQuery.h"
-#include "CLucene/util/BitSet.h"
-
-CL_NS_USE(index)
-CL_NS_USE(util)
-CL_NS_DEF(search)
-
-
- WildcardQuery::WildcardQuery(Term* term):
- MultiTermQuery( term ){
- //Func - Constructor
- //Pre - term != NULL
- //Post - Instance has been created
-
- }
-
- WildcardQuery::~WildcardQuery(){
- //Func - Destructor
- //Pre - true
- //Post - true
-
- }
-
- const TCHAR* WildcardQuery::getQueryName() const{
- //Func - Returns the string "WildcardQuery"
- //Pre - true
- //Post - The string "WildcardQuery" has been returned
- return getClassName();
- }
-
- const TCHAR* WildcardQuery::getClassName(){
- return _T("WildcardQuery");
- }
-
-
- FilteredTermEnum* WildcardQuery::getEnum(IndexReader* reader) {
- return _CLNEW WildcardTermEnum(reader, getTerm(false));
- }
-
- WildcardQuery::WildcardQuery(const WildcardQuery& clone):
- MultiTermQuery(clone)
- {
- }
-
- Query* WildcardQuery::clone() const{
- return _CLNEW WildcardQuery(*this);
- }
- size_t WildcardQuery::hashCode() const{
- //todo: we should give the query a seeding value... but
- //need to do it for all hascode functions
- return Similarity::floatToByte(getBoost()) ^ getTerm()->hashCode();
- }
- bool WildcardQuery::equals(Query* other) const{
- if (!(other->instanceOf(WildcardQuery::getClassName())))
- return false;
-
- WildcardQuery* tq = (WildcardQuery*)other;
- return (this->getBoost() == tq->getBoost())
- && getTerm()->equals(tq->getTerm());
- }
-
-
-
-
-
-
-
-
-
-
-
-
-WildcardFilter::WildcardFilter( Term* term )
-{
- this->term = _CL_POINTER(term);
-}
-
-WildcardFilter::~WildcardFilter()
-{
- _CLDECDELETE(term);
-}
-
-WildcardFilter::WildcardFilter( const WildcardFilter& copy ) :
- term( _CL_POINTER(copy.term) )
-{
-}
-
-Filter* WildcardFilter::clone() const {
- return _CLNEW WildcardFilter(*this );
-}
-
-
-TCHAR* WildcardFilter::toString()
-{
- //Instantiate a stringbuffer buffer to store the readable version temporarily
- CL_NS(util)::StringBuffer buffer;
- //check if field equal to the field of prefix
- if( term->field() != NULL ) {
- //Append the field of prefix to the buffer
- buffer.append(term->field());
- //Append a colon
- buffer.append(_T(":") );
- }
- //Append the text of the prefix
- buffer.append(term->text());
-
- //Convert StringBuffer buffer to TCHAR block and return it
- return buffer.toString();
-}
-
-
-/** Returns a BitSet with true for documents which should be permitted in
-search results, and false for those that should not. */
-BitSet* WildcardFilter::bits( IndexReader* reader )
-{
- BitSet* bts = _CLNEW BitSet( reader->maxDoc() );
-
- WildcardTermEnum termEnum (reader, term);
- if (termEnum.term(false) == NULL)
- return bts;
-
- TermDocs* termDocs = reader->termDocs();
- try{
- do{
- termDocs->seek(&termEnum);
-
- while (termDocs->next()) {
- bts->set(termDocs->doc());
- }
- }while(termEnum.next());
- } _CLFINALLY(
- termDocs->close();
- _CLDELETE(termDocs);
- termEnum.close();
- )
-
- return bts;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.h b/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.h
deleted file mode 100644
index cfc38f648..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardQuery.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_WildcardQuery_
-#define _lucene_search_WildcardQuery_
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "MultiTermQuery.h"
-#include "WildcardTermEnum.h"
-
-CL_NS_DEF(search)
-
- /** Implements the wildcard search query. Supported wildcards are <code>*</code>, which
- * matches any character sequence (including the empty one), and <code>?</code>,
- * which matches any single character. Note this query can be slow, as it
- * needs to iterate over all terms. In order to prevent extremely slow WildcardQueries,
- * a Wildcard term must not start with one of the wildcards <code>*</code> or
- * <code>?</code>.
- *
- * @see WildcardTermEnum
- */
- class WildcardQuery: public MultiTermQuery {
- protected:
- FilteredTermEnum* getEnum(CL_NS(index)::IndexReader* reader);
- WildcardQuery(const WildcardQuery& clone);
- public:
- WildcardQuery(CL_NS(index)::Term* term);
- ~WildcardQuery();
-
- //Returns the string "WildcardQuery"
- const TCHAR* getQueryName() const;
- static const TCHAR* getClassName();
-
- size_t hashCode() const;
- bool equals(Query* other) const;
- Query* clone() const;
- };
-
-
-
-class WildcardFilter: public Filter
-{
-private:
- CL_NS(index)::Term* term;
-protected:
- WildcardFilter( const WildcardFilter& copy );
-
-public:
- WildcardFilter(CL_NS(index)::Term* term);
- ~WildcardFilter();
-
- /** Returns a BitSet with true for documents which should be permitted in
- search results, and false for those that should not. */
- CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader* reader );
-
- Filter* clone() const;
- TCHAR* toString();
-};
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.cpp b/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.cpp
deleted file mode 100644
index bed9e6e0c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "WildcardTermEnum.h"
-
-CL_NS_USE(index)
-CL_NS_DEF(search)
-
- bool WildcardTermEnum::termCompare(Term* term) {
- if ( term!=NULL && __term->field() == term->field() ) {
- const TCHAR* searchText = term->text();
- const TCHAR* patternText = __term->text();
- if ( _tcsncmp( searchText, pre, preLen ) == 0 ){
- return wildcardEquals(patternText+preLen, __term->textLength()-preLen, 0, searchText, term->textLength(), preLen);
- }
- }
- _endEnum = true;
- return false;
- }
-
- /** Creates new WildcardTermEnum */
- WildcardTermEnum::WildcardTermEnum(IndexReader* reader, Term* term):
- FilteredTermEnum(),
- __term(_CL_POINTER(term)),
- fieldMatch(false),
- _endEnum(false)
- {
-
- pre = stringDuplicate(term->text());
-
- const TCHAR* sidx = _tcschr( pre, LUCENE_WILDCARDTERMENUM_WILDCARD_STRING );
- const TCHAR* cidx = _tcschr( pre, LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR );
- const TCHAR* tidx = sidx;
- if (tidx == NULL)
- tidx = cidx;
- else if ( cidx && cidx > pre)
- tidx = min(sidx, cidx);
- CND_PRECONDITION(tidx != NULL, "tidx==NULL");
- int32_t idx = (int32_t)(tidx - pre);
- preLen = idx;
- CND_PRECONDITION(preLen<term->textLength(), "preLen >= term->textLength()");
- pre[preLen]=0; //trim end
-
- Term* t = _CLNEW Term(__term, pre);
- setEnum( reader->terms(t) );
- _CLDECDELETE(t);
- }
-
- void WildcardTermEnum::close()
- {
- if ( __term != NULL ){
- FilteredTermEnum::close();
-
- _CLDECDELETE(__term);
- __term = NULL;
-
- _CLDELETE_CARRAY( pre );
- }
- }
- WildcardTermEnum::~WildcardTermEnum() {
- close();
- }
-
- qreal WildcardTermEnum::difference() {
- return 1.0f;
- }
-
- bool WildcardTermEnum::endEnum() {
- return _endEnum;
- }
-
- bool WildcardTermEnum::wildcardEquals(const TCHAR* pattern, int32_t patternLen, int32_t patternIdx, const TCHAR* str, int32_t strLen, int32_t stringIdx)
- {
- for (int32_t p = patternIdx; ; ++p)
- {
- for (int32_t s = stringIdx; ; ++p, ++s)
- {
- // End of str yet?
- bool sEnd = (s >= strLen);
- // End of pattern yet?
- bool pEnd = (p >= patternLen);
-
- // If we're looking at the end of the str...
- if (sEnd)
- {
- // Assume the only thing left on the pattern is/are wildcards
- bool justWildcardsLeft = true;
-
- // Current wildcard position
- int32_t wildcardSearchPos = p;
- // While we haven't found the end of the pattern,
- // and haven't encountered any non-wildcard characters
- while (wildcardSearchPos < patternLen && justWildcardsLeft)
- {
- // Check the character at the current position
- TCHAR wildchar = pattern[wildcardSearchPos];
- // If it's not a wildcard character, then there is more
- // pattern information after this/these wildcards.
-
- if (wildchar != LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR &&
- wildchar != LUCENE_WILDCARDTERMENUM_WILDCARD_STRING){
- justWildcardsLeft = false;
- }else{
- // to prevent "cat" matches "ca??"
- if (wildchar == LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR)
- return false;
-
- wildcardSearchPos++; // Look at the next character
- }
- }
-
- // This was a prefix wildcard search, and we've matched, so
- // return true.
- if (justWildcardsLeft)
- return true;
- }
-
- // If we've gone past the end of the str, or the pattern,
- // return false.
- if (sEnd || pEnd)
- break;
-
- // Match a single character, so continue.
- if (pattern[p] == LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR)
- continue;
-
- if (pattern[p] == LUCENE_WILDCARDTERMENUM_WILDCARD_STRING)
- {
- // Look at the character beyond the '*'.
- ++p;
- // Examine the str, starting at the last character.
- for (int32_t i = strLen; i >= s; --i)
- {
- if (wildcardEquals(pattern, patternLen, p, str, strLen, i))
- return true;
- }
- break;
- }
- if (pattern[p] != str[s])
- break;
- }
- return false;
- }
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.h b/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.h
deleted file mode 100644
index 2a0373540..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/search/WildcardTermEnum.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_search_WildcardTermEnum_
-#define _lucene_search_WildcardTermEnum_
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/index/Term.h"
-#include "CLucene/index/Terms.h"
-#include "FilteredTermEnum.h"
-
-CL_NS_DEF(search)
- /**
- * Subclass of FilteredTermEnum for enumerating all terms that match the
- * specified wildcard filter term->
- * <p>
- * Term enumerations are always ordered by term->compareTo(). Each term in
- * the enumeration is greater than all that precede it.
- */
- class WildcardTermEnum: public FilteredTermEnum {
- private:
- CL_NS(index)::Term* __term;
- TCHAR* pre;
- int32_t preLen;
- bool fieldMatch;
- bool _endEnum;
-
- /********************************************
- * const TCHAR* equality with support for wildcards
- ********************************************/
-
- protected:
- bool termCompare(CL_NS(index)::Term* term) ;
-
- public:
-
- /**
- * Creates a new <code>WildcardTermEnum</code>. Passing in a
- * {@link Term Term} that does not contain a
- * <code>LUCENE_WILDCARDTERMENUM_WILDCARD_STRING</code> or
- * <code>LUCENE_WILDCARDTERMENUM_WILDCARD_CHAR</code> will cause an exception to be thrown.
- */
- WildcardTermEnum(CL_NS(index)::IndexReader* reader, CL_NS(index)::Term* term);
- ~WildcardTermEnum();
-
- qreal difference() ;
-
- bool endEnum() ;
-
- /**
- * Determines if a word matches a wildcard pattern.
- */
- static bool wildcardEquals(const TCHAR* pattern, int32_t patternLen, int32_t patternIdx, const TCHAR* str, int32_t strLen, int32_t stringIdx);
-
- void close();
-
- const char* getObjectName(){ return WildcardTermEnum::getClassName(); }
- static const char* getClassName(){ return "WildcardTermEnum"; }
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/Directory.h b/src/assistant/3rdparty/clucene/src/CLucene/store/Directory.h
deleted file mode 100644
index aa4cb940e..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/Directory.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_store_Directory
-#define _lucene_store_Directory
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QStringList>
-
-#include "CLucene/store/Lock.h"
-#include "CLucene/util/VoidList.h"
-#include "CLucene/util/Misc.h"
-
-#include "IndexInput.h"
-#include "IndexOutput.h"
-
-CL_NS_DEF(store)
-
-/** A Directory is a flat list of files. Files may be written once, when they
-* are created. Once a file is created it may only be opened for read, or
-* deleted. Random access is permitted both when reading and writing.
-*
-* <p> Direct i/o is not used directly, but rather all i/o is
-* through this API. This permits things such as: <ul>
-* <li> implementation of RAM-based indices;
-* <li> implementation indices stored in a database, via a database;
-* <li> implementation of an index as a single file;
-* </ul>
-*
-*/
-class Directory : LUCENE_REFBASE
-{
-protected:
- Directory() {}
- // Removes an existing file in the directory.
- virtual bool doDeleteFile(const QString& name) = 0;
-
-public:
- DEFINE_MUTEX(THIS_LOCK)
-
- virtual ~Directory() {};
-
- // Returns an array of strings, one for each file in the directory.
- virtual QStringList list() const = 0;
-
- // Returns true iff a file with the given name exists.
- virtual bool fileExists(const QString& name) const = 0;
-
- // Returns the time the named file was last modified.
- virtual int64_t fileModified(const QString& name) const = 0;
-
- // Returns the length of a file in the directory.
- virtual int64_t fileLength(const QString& name) const = 0;
-
- // Returns a stream reading an existing file.
- virtual IndexInput* openInput(const QString& name) = 0;
- virtual IndexInput* openInput(const QString& name, int32_t bufferSize)
- {
- // didnt overload bufferSize
- return openInput(name);
- }
-
- // Set the modified time of an existing file to now.
- virtual void touchFile(const QString& name) = 0;
-
- // Removes an existing file in the directory.
- virtual bool deleteFile(const QString& name, const bool throwError = true) {
- bool ret = doDeleteFile(name);
- if (!ret && throwError) {
- char buffer[200];
- _snprintf(buffer, 200, "couldn't delete file %s",
- name.toLocal8Bit().constData());
- _CLTHROWA(CL_ERR_IO, buffer);
- }
- return ret;
- }
-
- // Renames an existing file in the directory.
- // If a file already exists with the new name, then it is replaced.
- virtual void renameFile(const QString& from, const QString& to) = 0;
-
- // Creates a new, empty file in the directory with the given name.
- // Returns a stream writing this file.
- virtual IndexOutput* createOutput(const QString& name) = 0;
-
- // Construct a {@link Lock}.
- // @param name the name of the lock file
- virtual LuceneLock* makeLock(const QString& name) = 0;
-
- // Closes the store.
- virtual void close() = 0;
-
- virtual QString toString() const = 0;
-
- virtual QString getDirectoryType() const = 0;
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.cpp
deleted file mode 100644
index c2bdf0dd8..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.cpp
+++ /dev/null
@@ -1,662 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include <QtCore/QDir>
-#include <QtCore/QDateTime>
-#include <QtCore/QFileInfo>
-#include <QtCore/QByteArray>
-#include <QtCore/QCryptographicHash>
-
-#include "CLucene/StdHeader.h"
-#include "FSDirectory.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/debug/condition.h"
-
-CL_NS_DEF(store)
-CL_NS_USE(util)
-
-bool FSDirectory::disableLocks = false;
-
-// This cache of directories ensures that there is a unique Directory instance
-// per path, so that synchronization on the Directory can be used to synchronize
-// access between readers and writers.
-static CL_NS(util)::CLHashMap<QString, FSDirectory*,
- CL_NS(util)::Compare::Qstring, CL_NS(util)::Equals::Qstring,
- CL_NS(util)::Deletor::DummyQString> DIRECTORIES(false, false);
-
-// # pragma mark -- FSDirectory::FSLock
-
-FSDirectory::FSLock::FSLock(const QString& _lockDir, const QString& name)
- : lockDir(_lockDir)
- , lockFile(_lockDir + QDir::separator() + name)
-{
-}
-
-FSDirectory::FSLock::~FSLock()
-{
-}
-
-bool FSDirectory::FSLock::obtain()
-{
- if (disableLocks)
- return true;
-
- if (QFile::exists(lockFile))
- return false;
-
- QDir dir(lockDir);
- if (!dir.exists()) {
- if (!dir.mkpath(lockDir)) {
- // 34: len of "Couldn't create lock directory: "
- char* err = _CL_NEWARRAY(
- char, 34 + strlen(lockDir.toLocal8Bit().constData()) + 1);
- strcpy(err, "Couldn't create lock directory: ");
- strcat(err, lockDir.toLocal8Bit().constData());
- _CLTHROWA_DEL(CL_ERR_IO, err);
- }
- }
-
- QFile file(lockFile);
- return file.open(QIODevice::ReadWrite);
-}
-
-void FSDirectory::FSLock::release()
-{
- if (disableLocks)
- return;
-
- QFile file(lockFile);
- file.remove();
-}
-
-bool FSDirectory::FSLock::isLocked()
-{
- if (disableLocks)
- return false;
- return QFile::exists(lockFile);
-}
-
-QString FSDirectory::FSLock::toString() const
-{
- QString ret(QLatin1String("Lock@"));
- return ret.append(lockFile);
-}
-
-// # pragma mark -- FSDirectory::FSIndexInput
-
-FSDirectory::FSIndexInput::FSIndexInput(const QString& path, int32_t bufferSize)
- : BufferedIndexInput(bufferSize)
-{
- CND_PRECONDITION(!path.isEmpty(), "path is NULL");
-
- handle = _CLNEW SharedHandle();
- handle->fhandle.setFileName(path);
- handle->fhandle.open(QIODevice::ReadOnly);
-
- if (handle->fhandle.error() != QFile::NoError) {
- switch(handle->fhandle.error()) {
- case 1:
- _CLTHROWA(CL_ERR_IO, "An error occurred when reading from the file");
- break;
- case 2:
- _CLTHROWA(CL_ERR_IO, "An error occurred when writing to the file.");
- break;
- case 5:
- _CLTHROWA(CL_ERR_IO, "The file could not be opened.");
- break;
- case 6:
- _CLTHROWA(CL_ERR_IO, "The operation was aborted.");
- break;
- case 7:
- _CLTHROWA(CL_ERR_IO, "A timeout occurred.");
- break;
- case 8:
- _CLTHROWA(CL_ERR_IO, "An unspecified error occurred.");
- break;
- case 9:
- _CLTHROWA(CL_ERR_IO, "The file could not be removed.");
- break;
- case 10:
- _CLTHROWA(CL_ERR_IO, "The file could not be renamed.");
- break;
- case 11:
- _CLTHROWA(CL_ERR_IO, "The position in the file could not be changed.");
- break;
- case 12:
- _CLTHROWA(CL_ERR_IO, "The file could not be resized.e");
- break;
- case 13:
- _CLTHROWA(CL_ERR_IO, "The file could not be accessed.");
- break;
- case 14:
- _CLTHROWA(CL_ERR_IO, "The file could not be copied.");
- break;
- case 4:
- default:
- _CLTHROWA(CL_ERR_IO, "A fatal error occurred.");
- }
- }
-
- //Store the file length
- handle->_length = handle->fhandle.size();
- handle->_fpos = 0;
- this->_pos = 0;
-}
-
-FSDirectory::FSIndexInput::FSIndexInput(const FSIndexInput& other)
- : BufferedIndexInput(other)
-{
- if (other.handle == NULL)
- _CLTHROWA(CL_ERR_NullPointer, "other handle is null");
-
- SCOPED_LOCK_MUTEX(*other.handle->THIS_LOCK)
-
- _pos = other.handle->_fpos;
- handle = _CL_POINTER(other.handle);
-}
-
-FSDirectory::FSIndexInput::~FSIndexInput()
-{
- FSIndexInput::close();
-}
-
-void FSDirectory::FSIndexInput::close()
-{
- BufferedIndexInput::close();
-#ifdef _LUCENE_THREADMUTEX
- if (handle != NULL) {
- // Here we have a bit of a problem... We need to lock the handle to
- // ensure that we can safely delete the handle... But if we delete the
- // handle, then the scoped unlock, won't be able to unlock the mutex...
-
- // take a reference of the lock object...
- _LUCENE_THREADMUTEX* mutex = handle->THIS_LOCK;
- //lock the mutex
- mutex->lock();
-
- // determine if we are about to delete the handle...
- bool doUnlock = (handle->__cl_refcount > 1);
- // decdelete (deletes if refcount is down to 0)
- _CLDECDELETE(handle);
-
- if (doUnlock)
- mutex->unlock();
- else
- delete mutex;
- }
-#else
- _CLDECDELETE(handle);
-#endif
-}
-
-IndexInput* FSDirectory::FSIndexInput::clone() const
-{
- return _CLNEW FSDirectory::FSIndexInput(*this);
-}
-
-void FSDirectory::FSIndexInput::seekInternal(const int64_t position)
-{
- CND_PRECONDITION(position >= 0 && position < handle->_length,
- "Seeking out of range")
- _pos = position;
-}
-
-void FSDirectory::FSIndexInput::readInternal(uint8_t* b, const int32_t len)
-{
- SCOPED_LOCK_MUTEX(*handle->THIS_LOCK)
-
- CND_PRECONDITION(handle != NULL, "shared file handle has closed");
- CND_PRECONDITION(handle->fhandle.isOpen(), "file is not open");
-
- if (handle->_fpos != _pos) {
- handle->fhandle.seek(_pos);
- if (handle->fhandle.pos() != _pos)
- _CLTHROWA( CL_ERR_IO, "File IO Seek error");
- handle->_fpos = _pos;
- }
-
- bufferLength = (int32_t)handle->fhandle.read((char*)b, len);
- if (bufferLength == 0)
- _CLTHROWA(CL_ERR_IO, "read past EOF");
-
- if (bufferLength == -1)
- _CLTHROWA(CL_ERR_IO, "read error");
-
- _pos += bufferLength;
- handle->_fpos =_pos;
-}
-
-// # pragma mark -- FSDirectory::FSIndexInput::SharedHandle
-
-FSDirectory::FSIndexInput::SharedHandle::SharedHandle()
- : _fpos(0)
- , _length(0)
-{
-#ifdef _LUCENE_THREADMUTEX
- THIS_LOCK = new _LUCENE_THREADMUTEX;
-#endif
-}
-
-FSDirectory::FSIndexInput::SharedHandle::~SharedHandle()
-{
- if (fhandle.isOpen())
- fhandle.close();
-}
-
-// # pragma mark -- FSDirectory::FSIndexOutput
-
-FSDirectory::FSIndexOutput::FSIndexOutput(const QString& path)
-{
- //O_BINARY - Opens file in binary (untranslated) mode
- //O_CREAT - Creates and opens new file for writing. Has no effect if file specified by filename exists
- //O_RANDOM - Specifies that caching is optimized for, but not restricted to, random access from disk.
- //O_WRONLY - Opens file for writing only;
- fhandle.setFileName(path);
- fhandle.open(QIODevice::ReadWrite | QIODevice::Truncate);
-
- if (fhandle.error() != QFile::NoError) {
- switch(fhandle.error()) {
- case 1:
- _CLTHROWA(CL_ERR_IO, "An error occurred when reading from the file");
- break;
- case 2:
- _CLTHROWA(CL_ERR_IO, "An error occurred when writing to the file.");
- break;
- case 5:
- _CLTHROWA(CL_ERR_IO, "The file could not be opened.");
- break;
- case 6:
- _CLTHROWA(CL_ERR_IO, "The operation was aborted.");
- break;
- case 7:
- _CLTHROWA(CL_ERR_IO, "A timeout occurred.");
- break;
- case 8:
- _CLTHROWA(CL_ERR_IO, "An unspecified error occurred.");
- break;
- case 9:
- _CLTHROWA(CL_ERR_IO, "The file could not be removed.");
- break;
- case 10:
- _CLTHROWA(CL_ERR_IO, "The file could not be renamed.");
- break;
- case 11:
- _CLTHROWA(CL_ERR_IO, "The position in the file could not be changed.");
- break;
- case 12:
- _CLTHROWA(CL_ERR_IO, "The file could not be resized.e");
- break;
- case 13:
- _CLTHROWA(CL_ERR_IO, "The file could not be accessed.");
- break;
- case 14:
- _CLTHROWA(CL_ERR_IO, "The file could not be copied.");
- break;
- case 4:
- default:
- _CLTHROWA(CL_ERR_IO, "A fatal error occurred.");
- }
- }
-}
-
-FSDirectory::FSIndexOutput::~FSIndexOutput()
-{
- if (fhandle.isOpen()) {
- try {
- FSIndexOutput::close();
- } catch (CLuceneError& err) {
- //ignore IO errors...
- if (err.number() != CL_ERR_IO)
- throw;
- }
- }
-}
-
-void FSDirectory::FSIndexOutput::close()
-{
- try {
- BufferedIndexOutput::close();
- } catch (CLuceneError& err) {
- //ignore IO errors...
- if (err.number() != CL_ERR_IO)
- throw;
- }
- fhandle.close();
-}
-
-int64_t FSDirectory::FSIndexOutput::length()
-{
- CND_PRECONDITION(fhandle.isOpen(), "file is not open");
- return fhandle.size();
-}
-
-void FSDirectory::FSIndexOutput::seek(const int64_t pos)
-{
- CND_PRECONDITION(fhandle.isOpen(), "file is not open");
-
- BufferedIndexOutput::seek(pos);
- fhandle.seek(pos);
- if (fhandle.pos() != pos)
- _CLTHROWA(CL_ERR_IO, "File IO Seek error");
-}
-
-void FSDirectory::FSIndexOutput::flushBuffer(const uint8_t* b, const int32_t size)
-{
- CND_PRECONDITION(fhandle.isOpen(), "file is not open");
-
- if (size > 0 && fhandle.write((const char*)b, size) != size)
- _CLTHROWA(CL_ERR_IO, "File IO Write error");
-}
-
-// # pragma mark -- FSDirectory
-
-FSDirectory::FSDirectory(const QString& path, const bool createDir)
- : Directory()
- , refCount(0)
- , useMMap(false)
-{
- //set a realpath so that if we change directory, we can still function
- directory = QFileInfo(path).absoluteFilePath();
- lockDir = directory;
-
- QDir dir(lockDir);
- if (!dir.exists()) {
- if (!dir.mkpath(lockDir))
- _CLTHROWA(CL_ERR_IO, "Cannot create temp directory");
- }
-
- QFileInfo info(lockDir);
- if (info.isFile() || info.isSymLink())
- _CLTHROWA(CL_ERR_IO, "Found regular file where directory expected");
-
- if (createDir)
- create();
-
- dir.setPath(directory);
- if (!dir.exists()) {
- //19: len of " is not a directory"
- char* err =
- _CL_NEWARRAY(char, 19 + strlen(path.toLocal8Bit().constData()) + 1);
- strcpy(err, path.toLocal8Bit().constData());
- strcat(err, " is not a directory");
- _CLTHROWA_DEL(CL_ERR_IO, err);
- }
-}
-
-void FSDirectory::create()
-{
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- bool clear = false;
- QDir dir(directory);
- if (!dir.exists()) {
- if (!dir.mkpath(directory)) {
- char* err = _CL_NEWARRAY( // 27 len of "Couldn't create directory:"
- char, 27 + strlen(directory.toLocal8Bit().constData()) + 1);
- strcpy(err, "Couldn't create directory: ");
- strcat(err, directory.toLocal8Bit().constData());
- _CLTHROWA_DEL(CL_ERR_IO, err);
- }
- } else {
- clear = true;
- }
-
- QFileInfo info(directory);
- if (info.isFile() || info.isSymLink()) {
- char tmp[1024];
- _snprintf(tmp, 1024, "%s not a directory",
- directory.toLocal8Bit().constData());
- _CLTHROWA(CL_ERR_IO, tmp);
- }
-
- if (clear) {
- dir.setPath(directory);
- // clear probably existing lucene index files
- QStringList fileList = dir.entryList(QDir::Files | QDir::Hidden
- | QDir::NoSymLinks);
- foreach(const QString file, fileList) {
- if (CL_NS(index)::IndexReader::isLuceneFile(file)) {
- if (!dir.remove(file))
- _CLTHROWA(CL_ERR_IO, "Couldn't delete file ");
- }
- }
-
- // clear probably existing file locks
- QFileInfo dirInfo(lockDir);
- if (dirInfo.exists() && dirInfo.isReadable() && dirInfo.isWritable()
- && !dirInfo.isFile() && !dirInfo.isSymLink()) {
- QDir lockDirectory(lockDir);
- fileList = dir.entryList(QStringList() << getLockPrefix()
- + QLatin1Char('*'), QDir::Files | QDir::Hidden | QDir::NoSymLinks);
-
- foreach(const QString file, fileList) {
- if (!lockDirectory.remove(file))
- _CLTHROWA(CL_ERR_IO, "Couldn't delete file ");
- }
- }
- else {
- //todo: richer error: + lockDir.getAbsolutePath());
- _CLTHROWA(CL_ERR_IO, "Cannot read lock directory");
- }
- }
-}
-
-void FSDirectory::priv_getFN(QString& buffer, const QString& name) const
-{
- buffer.clear();
- buffer.append(directory);
- buffer.append(QDir::separator());
- buffer.append(name);
-}
-
-FSDirectory::~FSDirectory()
-{
-}
-
-QStringList FSDirectory::list() const
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QDir dir(directory);
- return dir.entryList(QDir::Files | QDir::Hidden);
-}
-
-bool FSDirectory::fileExists(const QString& name) const
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QDir dir(directory);
- return dir.entryList().contains(name);
-}
-
-QString FSDirectory::getDirName() const
-{
- return directory;
-}
-
-//static
-FSDirectory* FSDirectory::getDirectory(const QString& file, const bool _create)
-{
- FSDirectory* dir = NULL;
- {
- if (file.isEmpty())
- _CLTHROWA(CL_ERR_IO, "Invalid directory");
-
- SCOPED_LOCK_MUTEX(DIRECTORIES.THIS_LOCK)
- dir = DIRECTORIES.get(file);
- if ( dir == NULL ){
- dir = _CLNEW FSDirectory(file, _create);
- DIRECTORIES.put(dir->directory, dir);
- } else if (_create) {
- dir->create();
- }
-
- {
- SCOPED_LOCK_MUTEX(dir->THIS_LOCK)
- dir->refCount++;
- }
- }
-
- return _CL_POINTER(dir);
-}
-
-int64_t FSDirectory::fileModified(const QString& name) const
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QFileInfo fInfo(directory + QDir::separator() + name);
- return fInfo.lastModified().toSecsSinceEpoch();
-}
-
-//static
-int64_t FSDirectory::fileModified(const QString& dir, const QString& name)
-{
- QFileInfo fInfo(dir + QDir::separator() + name);
- return fInfo.lastModified().toSecsSinceEpoch();
-}
-
-void FSDirectory::touchFile(const QString& name)
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QFile file(directory + QDir::separator() + name);
- if (!file.open(QIODevice::ReadWrite))
- _CLTHROWA(CL_ERR_IO, "IO Error while touching file");
-}
-
-int64_t FSDirectory::fileLength(const QString& name) const
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QFileInfo fInfo(directory + QDir::separator() + name);
- return fInfo.size();
-}
-
-IndexInput* FSDirectory::openInput(const QString& name)
-{
- return openInput(name, CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE);
-}
-
-IndexInput* FSDirectory::openInput(const QString& name, int32_t bufferSize )
-{
- CND_PRECONDITION(directory[0]!=0,"directory is not open")
-
- return _CLNEW FSIndexInput(directory + QDir::separator() + name, bufferSize);
-}
-
-void FSDirectory::close()
-{
- SCOPED_LOCK_MUTEX(DIRECTORIES.THIS_LOCK)
- {
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- //refcount starts at 1
- if (--refCount <= 0) {
- Directory* dir = DIRECTORIES.get(getDirName());
- if (dir) {
- //this will be removed in ~FSDirectory
- DIRECTORIES.remove(getDirName());
- _CLDECDELETE(dir);
- }
- }
- }
-}
-
-QString FSDirectory::getLockPrefix() const
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QString dirName(QFileInfo(directory).absoluteFilePath());
- if (dirName.isEmpty())
- _CLTHROWA(CL_ERR_Runtime, "Invalid directory path");
-
- // to be compatible with jlucene,
- // we need to make some changes ...
- if (dirName.at(1) == QLatin1Char(':'))
- dirName[0] = dirName.at(0).toUpper();
-
- TCHAR tBuffer[2048] = { 0 };
- dirName.toWCharArray(tBuffer);
-
- char aBuffer[4096] = { 0 };
- STRCPY_TtoA(aBuffer, tBuffer, 4096);
-
- QString string(QLatin1String("lucene-"));
- QByteArray hash(QCryptographicHash::hash(aBuffer, QCryptographicHash::Md5));
-
- // TODO: verify this !!!
- return string.append(QLatin1String(hash.toHex().constData()));
-}
-
-bool FSDirectory::doDeleteFile(const QString& name)
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QDir dir(directory);
- return dir.remove(name);
-}
-
-void FSDirectory::renameFile(const QString& from, const QString& to)
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- if (fileExists(to))
- deleteFile(to, false);
-
- QFile file(directory + QDir::separator() + from);
- QString newFile(directory + QDir::separator() + to);
- if (!file.rename(newFile)) {
- // try a second time if we fail
- if (fileExists(to))
- deleteFile(to, false);
-
- if (!file.rename(newFile)) {
- QString error(QLatin1String("Could not rename: %1 to %2!!!!"));
- error.arg(from).arg(newFile);
- QByteArray bArray(error.toLocal8Bit());
- _CLTHROWA(CL_ERR_IO, bArray.constData());
- }
- }
-}
-
-IndexOutput* FSDirectory::createOutput(const QString& name)
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
- QString file = directory + QDir::separator() + name;
- if (QFileInfo(file).exists()) {
- if (!QFile::remove(file)) {
- QByteArray bArray("Cannot overwrite: ");
- bArray.append(name.toLocal8Bit());
- _CLTHROWA(CL_ERR_IO, bArray.constData());
- }
- }
- return _CLNEW FSIndexOutput(file);
-}
-
-LuceneLock* FSDirectory::makeLock(const QString& name)
-{
- CND_PRECONDITION(!directory.isEmpty(), "directory is not open");
-
-
- QString lockFile(getLockPrefix());
- lockFile.append(QLatin1Char('-')).append(name);
-
- return _CLNEW FSLock(lockDir, lockFile);
-}
-
-QString FSDirectory::toString() const
-{
- return QString::fromLatin1("FSDirectory@").append(directory);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.h b/src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.h
deleted file mode 100644
index 36c1678fc..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/FSDirectory.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_store_FSDirectory_
-#define _lucene_store_FSDirectory_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QFile>
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-
-#include "Directory.h"
-#include "Lock.h"
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/StringBuffer.h"
-
-CL_NS_DEF(store)
-
-/**
-* Straightforward implementation of {@link Directory} as a directory of files.
-* <p>If the system property 'disableLuceneLocks' has the String value of
-* "true", lock creation will be disabled.
-*
-* @see Directory
-*/
-class FSDirectory : public Directory
-{
-public:
- // Destructor - only call this if you are sure the directory
- // is not being used anymore. Otherwise use the ref-counting
- // facilities of _CLDECDELETE
- ~FSDirectory();
-
- // Get a list of strings, one for each file in the directory.
- QStringList list() const;
-
- // Returns true iff a file with the given name exists.
- bool fileExists(const QString& name) const;
-
- // Returns the text name of the directory
- QString getDirName() const; ///<returns reference
-
- /**
- Returns the directory instance for the named location.
-
- Do not delete this instance, only use close, otherwise other instances
- will lose this instance.
-
- <p>Directories are cached, so that, for a given canonical path, the same
- FSDirectory instance will always be returned. This permits
- synchronization on directories.
-
- @param file the path to the directory.
- @param create if true, create, or erase any existing contents.
- @return the FSDirectory for the named file.
- */
- static FSDirectory* getDirectory(const QString& file, const bool create);
-
- // Returns the time the named file was last modified.
- int64_t fileModified(const QString& name) const;
-
- //static
- // Returns the time the named file was last modified.
- static int64_t fileModified(const QString& dir, const QString& name);
-
- // static
- // Returns the length in bytes of a file in the directory.
- int64_t fileLength(const QString& name) const;
-
- // Returns a stream reading an existing file.
- IndexInput* openInput(const QString& name);
- IndexInput* openInput(const QString& name, int32_t bufferSize);
-
- // Renames an existing file in the directory.
- void renameFile(const QString& from, const QString& to);
-
- // Set the modified time of an existing file to now.
- void touchFile(const QString& name);
-
- // Creates a new, empty file in the directory with the given name.
- // Returns a stream writing this file.
- IndexOutput* createOutput(const QString& name);
-
- // Construct a {@link Lock}.
- // @param name the name of the lock file
- LuceneLock* makeLock(const QString& name);
-
- // Decrease the ref-count to the directory by one. If the object is no
- // longer needed, then the object is removed from the directory pool.
- void close();
-
- // If MMap is available, this can disable use of mmap reading.
- void setUseMMap(bool value) { useMMap = value; }
-
- // Gets whether the directory is using MMap for inputstreams.
- bool getUseMMap() const { return useMMap; }
-
- QString toString() const;
-
- static QString DirectoryType() { return QLatin1String("FS"); }
- QString getDirectoryType() const { return QLatin1String("FS"); }
-
- // Set whether Lucene's use of lock files is disabled. By default,
- // lock files are enabled. They should only be disabled if the index
- // is on a read-only medium like a CD-ROM.
- static void setDisableLocks(bool doDisableLocks)
- { disableLocks = doDisableLocks; }
-
- // Returns whether Lucene's use of lock files is disabled.
- // @return true if locks are disabled, false if locks are enabled.
- static bool getDisableLocks() { return disableLocks; }
-
-protected:
- FSDirectory(const QString& path, const bool createDir);
- // Removes an existing file in the directory.
- bool doDeleteFile(const QString& name);
-
-private:
- class FSLock : public LuceneLock {
- public:
- FSLock (const QString& lockDir, const QString& name);
- ~FSLock();
-
- bool obtain();
- void release();
- bool isLocked();
- QString toString() const;
-
- QString lockDir;
- QString lockFile;
- };
- friend class FSDirectory::FSLock;
-
- class FSIndexInput : public BufferedIndexInput {
- public:
- FSIndexInput(const QString& path, int32_t bufferSize =
- CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE);
- ~FSIndexInput();
-
- void close();
- IndexInput* clone() const;
-
- int64_t length()
- { return handle->_length; }
-
- QString getDirectoryType() const
- { return FSDirectory::DirectoryType(); }
-
- protected:
- FSIndexInput(const FSIndexInput& clone);
- // Random-access methods
- void seekInternal(const int64_t position);
- // IndexInput methods
- void readInternal(uint8_t* b, const int32_t len);
-
- private:
- // We used a shared handle between all the fsindexinput clones.
- // This reduces number of file handles we need, and it means
- // we dont have to use file tell (which is slow) before doing a read.
- class SharedHandle : LUCENE_REFBASE {
- public:
- SharedHandle();
- ~SharedHandle();
-
- int64_t _fpos;
- int64_t _length;
-
- QFile fhandle;
- DEFINE_MUTEX(*THIS_LOCK)
- };
- SharedHandle* handle;
- int64_t _pos;
- };
- friend class FSDirectory::FSIndexInput;
-
- class FSIndexOutput : public BufferedIndexOutput {
- public:
- FSIndexOutput(const QString& path);
- ~FSIndexOutput();
-
- void close();
- int64_t length();
- void seek(const int64_t pos);
-
- protected:
- void flushBuffer(const uint8_t* b, const int32_t size);
-
- private:
- QFile fhandle;
- };
- friend class FSDirectory::FSIndexOutput;
-
-private:
- QString directory;
- int refCount;
- void create();
-
- QString lockDir;
- QString getLockPrefix() const;
- static bool disableLocks;
-
- void priv_getFN(QString& buffer, const QString& name) const;
- bool useMMap;
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.cpp
deleted file mode 100644
index cf7bd16b7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
- /*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "IndexInput.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(store)
-
- IndexInput::IndexInput()
- {
- }
- IndexInput::IndexInput(const IndexInput& other)
- {
- }
-
- int32_t IndexInput::readInt() {
- int32_t b = (readByte() << 24);
- b |= (readByte() << 16);
- b |= (readByte() << 8);
- return (b | readByte());
- }
-
- int32_t IndexInput::readVInt() {
- uint8_t b = readByte();
- int32_t i = b & 0x7F;
- for (int32_t shift = 7; (b & 0x80) != 0; shift += 7) {
- b = readByte();
- i |= (b & 0x7F) << shift;
- }
- return i;
- }
-
- int64_t IndexInput::readLong() {
- int64_t i = ((int64_t)readInt() << 32);
- return (i | ((int64_t)readInt() & 0xFFFFFFFFL));
- }
-
- int64_t IndexInput::readVLong() {
- uint8_t b = readByte();
- int64_t i = b & 0x7F;
- for (int32_t shift = 7; (b & 0x80) != 0; shift += 7) {
- b = readByte();
- i |= (((int64_t)b) & 0x7FL) << shift;
- }
- return i;
- }
-
- void IndexInput::skipChars( const int32_t count) {
- for (int32_t i = 0; i < count; i++) {
- TCHAR b = readByte();
- if ((b & 0x80) == 0) {
- // Do Nothing.
- } else if ((b & 0xE0) != 0xE0) {
- readByte();
- } else {
- readByte();
- readByte();
- }
- }
- }
-
- int32_t IndexInput::readString(TCHAR* buffer, const int32_t maxLength){
- int32_t len = readVInt();
- int32_t ml=maxLength-1;
- if ( len >= ml ){
- readChars(buffer, 0, ml);
- buffer[ml] = 0;
- //we have to finish reading all the data for this string!
- if ( len-ml > 0 ){
- //seek(getFilePointer()+(len-ml)); <- that was the wrong way to "finish reading"
- skipChars(len-ml);
- }
- return ml;
- }else{
- readChars(buffer, 0, len);
- buffer[len] = 0;
- return len;
- }
- }
-
- TCHAR* IndexInput::readString(const bool _unique){
- int32_t len = readVInt();
-
- if ( len == 0){
- if ( _unique ) //todo: does non unique ever occur?
- return stringDuplicate(LUCENE_BLANK_STRING);
- else
- return LUCENE_BLANK_STRING;
- }
-
- TCHAR* ret = _CL_NEWARRAY(TCHAR,len+1);
- readChars(ret, 0, len);
- ret[len] = 0;
-
- return ret;
- }
-
- void IndexInput::readChars( TCHAR* buffer, const int32_t start, const int32_t len) {
- const int32_t end = start + len;
- TCHAR b;
- for (int32_t i = start; i < end; ++i) {
- b = readByte();
- if ((b & 0x80) == 0) {
- b = (b & 0x7F);
- } else if ((b & 0xE0) != 0xE0) {
- b = (((b & 0x1F) << 6)
- | (readByte() & 0x3F));
- } else {
- b = ((b & 0x0F) << 12) | ((readByte() & 0x3F) << 6);
- b |= (readByte() & 0x3F);
- }
- buffer[i] = b;
- }
- }
-
-
-
-
-
-
-BufferedIndexInput::BufferedIndexInput(int32_t _bufferSize):
- buffer(NULL),
- bufferSize(_bufferSize),
- bufferStart(0),
- bufferLength(0),
- bufferPosition(0)
- {
- }
-
- BufferedIndexInput::BufferedIndexInput(const BufferedIndexInput& other):
- IndexInput(other),
- buffer(NULL),
- bufferSize(other.bufferSize),
- bufferStart(other.bufferStart),
- bufferLength(other.bufferLength),
- bufferPosition(other.bufferPosition)
- {
- /* DSR: Does the fact that sometime clone.buffer is not NULL even when
- ** clone.bufferLength is zero indicate memory corruption/leakage?
- ** if ( clone.buffer != NULL) { */
- if (other.bufferLength != 0 && other.buffer != NULL) {
- buffer = _CL_NEWARRAY(uint8_t,bufferLength);
- memcpy(buffer,other.buffer,bufferLength * sizeof(uint8_t));
- }
- }
-
- void BufferedIndexInput::readBytes(uint8_t* b, const int32_t len){
- if (len < bufferSize) {
- for (int32_t i = 0; i < len; ++i) // read byte-by-byte
- b[i] = readByte();
- } else { // read all-at-once
- int64_t start = getFilePointer();
- seekInternal(start);
- readInternal(b, len);
-
- bufferStart = start + len; // adjust stream variables
- bufferPosition = 0;
- bufferLength = 0; // trigger refill() on read
- }
- }
-
- int64_t BufferedIndexInput::getFilePointer() const{
- return bufferStart + bufferPosition;
- }
-
- void BufferedIndexInput::seek(const int64_t pos) {
- if ( pos < 0 )
- _CLTHROWA(CL_ERR_IO, "IO Argument Error. Value must be a positive value.");
- if (pos >= bufferStart && pos < (bufferStart + bufferLength))
- bufferPosition = (int32_t)(pos - bufferStart); // seek within buffer
- else {
- bufferStart = pos;
- bufferPosition = 0;
- bufferLength = 0; // trigger refill() on read()
- seekInternal(pos);
- }
- }
- void BufferedIndexInput::close(){
- _CLDELETE_ARRAY(buffer);
- bufferLength = 0;
- bufferPosition = 0;
- bufferStart = 0;
- }
-
-
- BufferedIndexInput::~BufferedIndexInput(){
- BufferedIndexInput::close();
- }
-
- void BufferedIndexInput::refill() {
- int64_t start = bufferStart + bufferPosition;
- int64_t end = start + bufferSize;
- if (end > length()) // don't read past EOF
- end = length();
- bufferLength = (int32_t)(end - start);
- if (bufferLength == 0)
- _CLTHROWA(CL_ERR_IO, "IndexInput read past EOF");
-
- if (buffer == NULL){
- buffer = _CL_NEWARRAY(uint8_t,bufferSize); // allocate buffer lazily
- }
- readInternal(buffer, bufferLength);
-
-
- bufferStart = start;
- bufferPosition = 0;
- }
-
-
-IndexInputStream::IndexInputStream(IndexInput* input){
- this->input = input;
- this->size = input->length();
- this->position = input->getFilePointer();
-}
-IndexInputStream::~IndexInputStream(){
-}
-int32_t IndexInputStream::fillBuffer(char* start, int32_t space){
- int64_t avail = input->length()-input->getFilePointer();
- if ( avail == 0 )
- return -1;
- else if ( avail<space )
- space = (int32_t)avail;
-
- input->readBytes((uint8_t*)start,space);
- return space;
-}
-
-CL_NS_END
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.h b/src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.h
deleted file mode 100644
index 4f8215ac6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexInput.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_store_IndexInput_
-#define _lucene_store_IndexInput_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/util/bufferedstream.h"
-#include "IndexOutput.h"
-
-CL_NS_DEF(store)
-
- /** Abstract base class for input from a file in a {@link Directory}. A
- * random-access input stream. Used for all Lucene index input operations.
- * @see Directory
- * @see IndexOutput
- */
- class IndexInput: LUCENE_BASE {
- private:
- void skipChars( const int32_t count);
- protected:
- IndexInput();
- IndexInput(const IndexInput& clone);
- public:
- virtual ~IndexInput(){}
- virtual IndexInput* clone() const =0;
-
- DEFINE_MUTEX(THIS_LOCK)
-
- /** Reads and returns a single byte.
- * @see IndexOutput#writeByte(byte)
- */
- virtual uint8_t readByte() =0;
-
- /** Reads a specified number of bytes into an array at the specified offset.
- * @param b the array to read bytes into
- * @param offset the offset in the array to start storing bytes
- * @param len the number of bytes to read
- * @see IndexOutput#writeBytes(byte[],int32_t)
- */
- virtual void readBytes(uint8_t* b, const int32_t len) =0;
-
- /** Reads four bytes and returns an int.
- * @see IndexOutput#writeInt(int32_t)
- */
- int32_t readInt();
-
- /** Reads an int stored in variable-length format. Reads between one and
- * five bytes. Smaller values take fewer bytes. Negative numbers are not
- * supported.
- * @see IndexOutput#writeVInt(int32_t)
- */
- virtual int32_t readVInt();
-
- /** Reads eight bytes and returns a long.
- * @see IndexOutput#writeLong(long)
- */
- int64_t readLong();
-
- /** Reads a long stored in variable-length format. Reads between one and
- * nine bytes. Smaller values take fewer bytes. Negative numbers are not
- * supported. */
- int64_t readVLong();
-
- /** Reads a string.
- * @see IndexOutput#writeString(String)
- * maxLength is the amount read into the buffer, the whole string is still read from the stream
- * returns the amount read
- */
- int32_t readString(TCHAR* buffer, const int32_t maxlength);
-
- /** Reads a string.
- * @see IndexOutput#writeString(String)
- * If unique is true (default) the string will be duplicated.
- * If false and the length is zero, LUCENE_BLANK_STRING is returned
- */
- TCHAR* readString(const bool unique=true);
-
-
- /** Reads UTF-8 encoded characters into an array.
- * @param buffer the array to read characters into
- * @param start the offset in the array to start storing characters
- * @param length the number of characters to read
- * @see IndexOutput#writeChars(String,int32_t,int32_t)
- */
- void readChars( TCHAR* buffer, const int32_t start, const int32_t len);
-
- /** Closes the stream to futher operations. */
- virtual void close() =0;
-
- /** Returns the current position in this file, where the next read will
- * occur.
- * @see #seek(long)
- */
- virtual int64_t getFilePointer() const =0;
-
- /** Sets current position in this file, where the next read will occur.
- * @see #getFilePointer()
- */
- virtual void seek(const int64_t pos) =0;
-
- /** The number of bytes in the file. */
- virtual int64_t length() = 0;
-
- virtual QString getDirectoryType() const = 0;
- };
-
- /** Abstract base class for input from a file in a {@link Directory}. A
- * random-access input stream. Used for all Lucene index input operations.
- * @see Directory
- * @see IndexOutput
- */
- class BufferedIndexInput: public IndexInput{
- private:
- uint8_t* buffer; //array of bytes
- void refill();
- protected:
- int32_t bufferSize; //size of the buffer
- int64_t bufferStart; // position in file of buffer
- int32_t bufferLength; // end of valid l_byte_ts
- int32_t bufferPosition; // next uint8_t to read
-
- /** Returns a clone of this stream.
- *
- * <p>Clones of a stream access the same data, and are positioned at the same
- * point as the stream they were cloned from.
- *
- * <p>Expert: Subclasses must ensure that clones may be positioned at
- * different points in the input from each other and from the stream they
- * were cloned from.
- */
- BufferedIndexInput(const BufferedIndexInput& clone);
- BufferedIndexInput(int32_t bufferSize = CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE);
- public:
-
- virtual ~BufferedIndexInput();
- virtual IndexInput* clone() const = 0;
- void close();
- inline uint8_t readByte(){
- if (bufferPosition >= bufferLength)
- refill();
-
- return buffer[bufferPosition++];
- }
- void readBytes(uint8_t* b, const int32_t len);
- int64_t getFilePointer() const;
- void seek(const int64_t pos);
-
- protected:
- /** Expert: implements buffer refill. Reads bytes from the current position
- * in the input.
- * @param b the array to read bytes into
- * @param offset the offset in the array to start storing bytes
- * @param length the number of bytes to read
- */
- virtual void readInternal(uint8_t* b, const int32_t len) = 0;
-
- /** Expert: implements seek. Sets current position in this file, where the
- * next {@link #readInternal(byte[],int32_t,int32_t)} will occur.
- * @see #readInternal(byte[],int32_t,int32_t)
- */
- virtual void seekInternal(const int64_t pos) = 0;
- };
-
- /**
- * JStream InputStream which reads from an IndexInput. This class is
- * used by the FieldReader to create binary fields. You can then use
- * a GZipInputStream to read compressed data or any of the other
- * JStream stream types.
- *
- */
- class IndexInputStream: public jstreams::BufferedInputStream<char>{
- IndexInput* input;
- public:
- IndexInputStream(IndexInput* input);
- ~IndexInputStream();
- int32_t fillBuffer(char* start, int32_t space);
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.cpp
deleted file mode 100644
index 04f78c348..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "IndexOutput.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(store)
-
-
- IndexOutput::IndexOutput()
- {
- }
-
- IndexOutput::~IndexOutput(){
- }
-
- BufferedIndexOutput::BufferedIndexOutput()
- {
- buffer = _CL_NEWARRAY(uint8_t, BUFFER_SIZE );
- bufferStart = 0;
- bufferPosition = 0;
- }
-
- BufferedIndexOutput::~BufferedIndexOutput(){
- if ( buffer != NULL )
- close();
- }
-
- void BufferedIndexOutput::close(){
- flush();
- _CLDELETE_ARRAY( buffer );
-
- bufferStart = 0;
- bufferPosition = 0;
- }
-
- void BufferedIndexOutput::writeByte(const uint8_t b) {
- CND_PRECONDITION(buffer!=NULL,"IndexOutput is closed")
- if (bufferPosition >= BUFFER_SIZE)
- flush();
- buffer[bufferPosition++] = b;
- }
-
- void BufferedIndexOutput::writeBytes(const uint8_t* b, const int32_t length) {
- if ( length < 0 )
- _CLTHROWA(CL_ERR_IllegalArgument, "IO Argument Error. Value must be a positive value.");
- int32_t bytesLeft = BUFFER_SIZE - bufferPosition;
- // is there enough space in the buffer?
- if (bytesLeft >= length) {
- // we add the data to the end of the buffer
- memcpy(buffer + bufferPosition, b, length);
- bufferPosition += length;
- // if the buffer is full, flush it
- if (BUFFER_SIZE - bufferPosition == 0)
- flush();
- } else {
- // is data larger then buffer?
- if (length > BUFFER_SIZE) {
- // we flush the buffer
- if (bufferPosition > 0)
- flush();
- // and write data at once
- flushBuffer(b, length);
- bufferStart += length;
- } else {
- // we fill/flush the buffer (until the input is written)
- int64_t pos = 0; // position in the input data
- int32_t pieceLength;
- while (pos < length) {
- if ( length - pos < bytesLeft )
- pieceLength = length - pos;
- else
- pieceLength = bytesLeft;
- memcpy(buffer + bufferPosition, b + pos, pieceLength);
- pos += pieceLength;
- bufferPosition += pieceLength;
- // if the buffer is full, flush it
- bytesLeft = BUFFER_SIZE - bufferPosition;
- if (bytesLeft == 0) {
- flush();
- bytesLeft = BUFFER_SIZE;
- }
- }
- }
- }
- }
-
- void IndexOutput::writeInt(const int32_t i) {
- writeByte((uint8_t)(i >> 24));
- writeByte((uint8_t)(i >> 16));
- writeByte((uint8_t)(i >> 8));
- writeByte((uint8_t) i);
- }
-
- void IndexOutput::writeVInt(const int32_t vi) {
- uint32_t i = vi;
- while ((i & ~0x7F) != 0) {
- writeByte((uint8_t)((i & 0x7f) | 0x80));
- i >>= 7; //doing unsigned shift
- }
- writeByte( (uint8_t)i );
- }
-
- void IndexOutput::writeLong(const int64_t i) {
- writeInt((int32_t) (i >> 32));
- writeInt((int32_t) i);
- }
-
- void IndexOutput::writeVLong(const int64_t vi) {
- uint64_t i = vi;
- while ((i & ~0x7F) != 0) {
- writeByte((uint8_t)((i & 0x7f) | 0x80));
- i >>= 7; //doing unsigned shift
- }
- writeByte((uint8_t)i);
- }
-
- void IndexOutput::writeString(const TCHAR* s, const int32_t length ) {
- writeVInt(length);
- writeChars(s, 0, length);
- }
-
- void IndexOutput::writeChars(const TCHAR* s, const int32_t start, const int32_t length){
- if ( length < 0 || start < 0 )
- _CLTHROWA(CL_ERR_IllegalArgument, "IO Argument Error. Value must be a positive value.");
-
- const int32_t end = start + length;
- for (int32_t i = start; i < end; ++i) {
- const int32_t code = (int32_t)s[i];
- if (code >= 0x01 && code <= 0x7F)
- writeByte((uint8_t)code);
- else if (((code >= 0x80) && (code <= 0x7FF)) || code == 0) {
- writeByte((uint8_t)(0xC0 | (code >> 6)));
- writeByte((uint8_t)(0x80 | (code & 0x3F)));
- } else {
- writeByte((uint8_t)(0xE0 | (((uint32_t)code) >> 12))); //unsigned shift
- writeByte((uint8_t)(0x80 | ((code >> 6) & 0x3F)));
- writeByte((uint8_t)(0x80 | (code & 0x3F)));
- }
- }
- }
-
-
- int64_t BufferedIndexOutput::getFilePointer() const{
- return bufferStart + bufferPosition;
- }
-
- void BufferedIndexOutput::seek(const int64_t pos) {
- flush();
- bufferStart = pos;
- }
-
- void BufferedIndexOutput::flush() {
- flushBuffer(buffer, bufferPosition);
- bufferStart += bufferPosition;
- bufferPosition = 0;
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.h b/src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.h
deleted file mode 100644
index c47ee73a7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/IndexOutput.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_store_IndexOutput_
-#define _lucene_store_IndexOutput_
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(store)
-
-
-/** Abstract class for output to a file in a Directory. A random-access output
-* stream. Used for all Lucene index output operations.
-* @see Directory
-* @see IndexInput
-*/
-class IndexOutput:LUCENE_BASE{
- bool isclosed;
-public:
- IndexOutput();
- virtual ~IndexOutput();
-
- /** Writes a single byte.
- * @see IndexInput#readByte()
- */
- virtual void writeByte(const uint8_t b) = 0;
-
- /** Writes an array of bytes.
- * @param b the bytes to write
- * @param length the number of bytes to write
- * @see IndexInput#readBytes(byte[],int32_t,int32_t)
- */
- virtual void writeBytes(const uint8_t* b, const int32_t length) = 0;
-
- /** Writes an int as four bytes.
- * @see IndexInput#readInt()
- */
- void writeInt(const int32_t i);
-
- /** Writes an int in a variable-length format. Writes between one and
- * five bytes. Smaller values take fewer bytes. Negative numbers are not
- * supported.
- * @see IndexInput#readVInt()
- */
- void writeVInt(const int32_t vi);
-
- /** Writes a long as eight bytes.
- * @see IndexInput#readLong()
- */
- void writeLong(const int64_t i);
-
- /** Writes an long in a variable-length format. Writes between one and five
- * bytes. Smaller values take fewer bytes. Negative numbers are not
- * supported.
- * @see IndexInput#readVLong()
- */
- void writeVLong(const int64_t vi);
-
- /** Writes a string.
- * @see IndexInput#readString()
- */
- void writeString(const TCHAR* s, const int32_t length);
-
- /** Writes a sequence of UTF-8 encoded characters from a string.
- * @param s the source of the characters
- * @param start the first character in the sequence
- * @param length the number of characters in the sequence
- * @see IndexInput#readChars(char[],int32_t,int32_t)
- */
- void writeChars(const TCHAR* s, const int32_t start, const int32_t length);
-
- /** Closes this stream to further operations. */
- virtual void close() = 0;
-
- /** Returns the current position in this file, where the next write will
- * occur.
- * @see #seek(long)
- */
- virtual int64_t getFilePointer() const = 0;
-
- /** Sets current position in this file, where the next write will occur.
- * @see #getFilePointer()
- */
- virtual void seek(const int64_t pos) = 0;
-
- /** The number of bytes in the file. */
- virtual int64_t length() = 0;
-
- /** Forces any buffered output to be written. */
- virtual void flush() = 0;
-};
-
-/** Base implementation class for buffered {@link IndexOutput}. */
-class BufferedIndexOutput : public IndexOutput{
-public:
- LUCENE_STATIC_CONSTANT(int32_t, BUFFER_SIZE=LUCENE_STREAM_BUFFER_SIZE);
-private:
- uint8_t* buffer;
- int64_t bufferStart; // position in file of buffer
- int32_t bufferPosition; // position in buffer
-
-public:
- BufferedIndexOutput();
- virtual ~BufferedIndexOutput();
-
- /** Writes a single byte.
- * @see IndexInput#readByte()
- */
- virtual void writeByte(const uint8_t b);
-
- /** Writes an array of bytes.
- * @param b the bytes to write
- * @param length the number of bytes to write
- * @see IndexInput#readBytes(byte[],int32_t,int32_t)
- */
- virtual void writeBytes(const uint8_t* b, const int32_t length);
-
- /** Closes this stream to further operations. */
- virtual void close();
-
- /** Returns the current position in this file, where the next write will
- * occur.
- * @see #seek(long)
- */
- int64_t getFilePointer() const;
-
- /** Sets current position in this file, where the next write will occur.
- * @see #getFilePointer()
- */
- virtual void seek(const int64_t pos);
-
- /** The number of bytes in the file. */
- virtual int64_t length() = 0;
-
- /** Forces any buffered output to be written. */
- void flush();
-
-protected:
- /** Expert: implements buffer write. Writes bytes at the current position in
- * the output.
- * @param b the bytes to write
- * @param len the number of bytes to write
- */
- virtual void flushBuffer(const uint8_t* b, const int32_t len) = 0;
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/InputStream.h b/src/assistant/3rdparty/clucene/src/CLucene/store/InputStream.h
deleted file mode 100644
index f56819eeb..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/InputStream.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_store_InputStream_
-#define _lucene_store_InputStream_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(store)
-
-deprecated... please use IndexInput.h header
-and change InputStream to IndexInput
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/Lock.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/Lock.cpp
deleted file mode 100644
index a66e784b0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/Lock.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Lock.h"
-
-CL_NS_DEF(store)
-
- bool LuceneLock::obtain(int64_t lockWaitTimeout) {
- bool locked = obtain();
- int maxSleepCount = (int)(lockWaitTimeout / LOCK_POLL_INTERVAL);
- int sleepCount = 0;
- while (!locked) {
- if (sleepCount++ == maxSleepCount) {
- _CLTHROWA(CL_ERR_IO,"Lock obtain timed out");
- }
- _LUCENE_SLEEP(LOCK_POLL_INTERVAL);
- locked = obtain();
- }
- return locked;
- }
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/Lock.h b/src/assistant/3rdparty/clucene/src/CLucene/store/Lock.h
deleted file mode 100644
index d664997f0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/Lock.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_store_Lock_
-#define _lucene_store_Lock_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(store)
-
-class LuceneLock : LUCENE_BASE
-{
-public:
- LUCENE_STATIC_CONSTANT(int64_t, LOCK_POLL_INTERVAL = 1000);
-
- virtual ~LuceneLock() {}
-
- // Attempts to obtain exclusive access and immediately return upon success
- // or failure. Return true if exclusive access is obtained.
- virtual bool obtain() = 0;
-
- // Attempts to obtain an exclusive lock within amount of time given.
- // Currently polls once per second until lockWaitTimeout is passed.
- // @param lockWaitTimeout length of time to wait in ms
- // @return true if lock was obtained
- // @throws IOException if lock wait times out or obtain() throws an IOException
- bool obtain(int64_t lockWaitTimeout);
-
- // Release exclusive access.
- virtual void release() = 0;
-
- // Returns true if the resource is currently locked. Note that one must
- // still call {@link #obtain()} before using the resource.
- virtual bool isLocked() = 0;
-
- virtual QString toString() const = 0;
-};
-
-
-// Utility class for executing code with exclusive access.
-template<typename T>
-class LuceneLockWith
-{
-public:
- // Constructs an executor that will grab the named lock. Defaults
- // lockWaitTimeout to LUCENE_COMMIT_LOCK_TIMEOUT.
- // @deprecated Kept only to avoid breaking existing code.
- LuceneLockWith(LuceneLock* lock, int64_t lockWaitTimeout)
- {
- this->lock = lock;
- this->lockWaitTimeout = lockWaitTimeout;
- }
-
- virtual ~LuceneLockWith() {}
-
- // Calls {@link #doBody} while <i>lock</i> is obtained. Blocks if lock
- // cannot be obtained immediately. Retries to obtain lock once per second
- // until it is obtained, or until it has tried ten times. Lock is released
- // when {@link #doBody} exits.
- T runAndReturn()
- {
- bool locked = false;
- T ret = NULL;
- try {
- locked = lock->obtain(lockWaitTimeout);
- ret = doBody();
- } _CLFINALLY (
- if (locked)
- lock->release();
- );
- return ret;
- }
-
- // @see runAndReturn
- // Same as runAndReturn, except doesn't return any value. The only
- // difference is that no void values are used
- void run()
- {
- bool locked = false;
- try {
- locked = lock->obtain(lockWaitTimeout);
- doBody();
- } _CLFINALLY (
- if (locked)
- lock->release();
- );
- }
-
-protected:
- virtual T doBody() = 0;
-
-private:
- LuceneLock* lock;
- int64_t lockWaitTimeout;
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/MMapInput.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/MMapInput.cpp
deleted file mode 100644
index d660032c6..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/MMapInput.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#if defined(LUCENE_FS_MMAP)
-
-#include "FSDirectory.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/debug/condition.h"
-
-#ifndef _CLCOMPILER_MSVC
- #include <sys/mman.h>
-#endif
-
-CL_NS_DEF(store)
-CL_NS_USE(util)
-
- FSDirectory::MMapIndexInput::MMapIndexInput(const char* path):
- pos(0),
- data(NULL),
- _length(0),
- isClone(false)
- {
- //Func - Constructor.
- // Opens the file named path
- //Pre - path != NULL
- //Post - if the file could not be opened an exception is thrown.
-
- CND_PRECONDITION(path != NULL, "path is NULL");
-
-#ifdef _CLCOMPILER_MSVC
- mmaphandle = NULL;
- fhandle = CreateFileA(path,GENERIC_READ,FILE_SHARE_READ, 0,OPEN_EXISTING,0,0);
-
- //Check if a valid fhandle was retrieved
- if (fhandle < 0){
- DWORD err = GetLastError();
- if ( err == ERROR_FILE_NOT_FOUND )
- _CLTHROWA(CL_ERR_IO, "File does not exist");
- else if ( err == EACCES )
- _CLTHROWA(ERROR_ACCESS_DENIED, "File Access denied");
- else if ( err == ERROR_TOO_MANY_OPEN_FILES )
- _CLTHROWA(CL_ERR_IO, "Too many open files");
- else
- _CLTHROWA(CL_ERR_IO, "File IO Error");
- }
-
- DWORD dummy=0;
- _length = GetFileSize(fhandle,&dummy);
-
- if ( _length > 0 ){
- mmaphandle = CreateFileMappingA(fhandle,NULL,PAGE_READONLY,0,0,NULL);
- if ( mmaphandle != NULL ){
- void* address = MapViewOfFile(mmaphandle,FILE_MAP_READ,0,0,0);
- if ( address != NULL ){
- data = (uint8_t*)address;
- return; //SUCCESS!
- }
- }
- CloseHandle(mmaphandle);
-
- char* lpMsgBuf=0;
- DWORD dw = GetLastError();
-
- FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- dw,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- lpMsgBuf,
- 0, NULL );
-
- char* errstr = _CL_NEWARRAY(char, strlen(lpMsgBuf)+40);
- sprintf(errstr, "MMapIndexInput::MMapIndexInput failed with error %d: %s", dw, lpMsgBuf);
- LocalFree(lpMsgBuf);
-
- _CLTHROWA_DEL(CL_ERR_IO,errstr);
- }
-
-#else //_CLCOMPILER_MSVC
- fhandle = ::open (path, O_RDONLY);
- if (fhandle < 0){
- _CLTHROWA(CL_ERR_IO,strerror(errno));
- }else{
- // stat it
- struct stat sb;
- if (::fstat (fhandle, &sb)){
- _CLTHROWA(CL_ERR_IO,strerror(errno));
- }else{
- // get length from stat
- _length = sb.st_size;
-
- // mmap the file
- void* address = ::mmap(0, _length, PROT_READ, MAP_SHARED, fhandle, 0);
- if (address == MAP_FAILED){
- _CLTHROWA(CL_ERR_IO,strerror(errno));
- }else{
- data = (uint8_t*)address;
- }
- }
- }
-#endif
- }
-
- FSDirectory::MMapIndexInput::MMapIndexInput(const MMapIndexInput& clone): IndexInput(clone){
- //Func - Constructor
- // Uses clone for its initialization
- //Pre - clone is a valide instance of FSIndexInput
- //Post - The instance has been created and initialized by clone
-
-#ifdef _CLCOMPILER_MSVC
- mmaphandle = NULL;
- fhandle = NULL;
-#endif
-
- data = clone.data;
- pos = clone.pos;
-
- //clone the file length
- _length = clone._length;
- //Keep in mind that this instance is a clone
- isClone = true;
- }
-
- uint8_t FSDirectory::MMapIndexInput::readByte(){
- return *(data+(pos++));
- }
-
- void FSDirectory::MMapIndexInput::readBytes(uint8_t* b, const int32_t len){
- memcpy(b, data+pos, len);
- pos+=len;
- }
- int32_t FSDirectory::MMapIndexInput::readVInt(){
- uint8_t b = *(data+(pos++));
- int32_t i = b & 0x7F;
- for (int shift = 7; (b & 0x80) != 0; shift += 7) {
- b = *(data+(pos++));
- i |= (b & 0x7F) << shift;
- }
- return i;
- }
- int64_t FSDirectory::MMapIndexInput::getFilePointer() const{
- return pos;
- }
- void FSDirectory::MMapIndexInput::seek(const int64_t pos){
- this->pos=pos;
- }
-
- FSDirectory::MMapIndexInput::~MMapIndexInput(){
- //Func - Destructor
- //Pre - True
- //Post - The file for which this instance is responsible has been closed.
- // The instance has been destroyed
-
- close();
- }
-
- IndexInput* FSDirectory::MMapIndexInput::clone() const
- {
- return _CLNEW FSDirectory::MMapIndexInput(*this);
- }
- void FSDirectory::MMapIndexInput::close() {
- //IndexInput::close();
-
- if ( !isClone ){
-#ifdef _CLCOMPILER_MSVC
- if ( data != NULL ){
- if ( ! UnmapViewOfFile(data) ){
- CND_PRECONDITION( false, "UnmapViewOfFile(data) failed"); //todo: change to rich error
- }
- }
-
- if ( mmaphandle != NULL ){
- if ( ! CloseHandle(mmaphandle) ){
- CND_PRECONDITION( false, "CloseHandle(mmaphandle) failed");
- }
- }
- if ( fhandle != NULL ){
- if ( !CloseHandle(fhandle) ){
- CND_PRECONDITION( false, "CloseHandle(fhandle) failed");
- }
- }
- mmaphandle = NULL;
- fhandle = NULL;
-#else
- if ( data != NULL )
- ::munmap(data, _length);
- if ( fhandle > 0 )
- ::close(fhandle);
- fhandle = 0;
-#endif
- }
- data = NULL;
- pos = 0;
- }
-
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/OutputStream.h b/src/assistant/3rdparty/clucene/src/CLucene/store/OutputStream.h
deleted file mode 100644
index a82d6718a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/OutputStream.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_store_IndexOutput_
-#define _lucene_store_IndexOutput_
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-CL_NS_DEF(store)
-
-
-deprecated... please use IndexOutput.h header
-and change OutputStream to OutdexInput
-
-
-
-CL_NS_END
-
-#endif // _lucene_store_IndexOutput_
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.cpp
deleted file mode 100644
index 61cbfefa0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "RAMDirectory.h"
-
-#include "Lock.h"
-#include "Directory.h"
-#include "FSDirectory.h"
-#include "CLucene/index/IndexReader.h"
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Misc.h"
-#include "CLucene/debug/condition.h"
-
-CL_NS_USE(util)
-CL_NS_DEF(store)
-
-RAMFile::RAMFile()
-{
- length = 0;
- lastModified = Misc::currentTimeMillis();
-}
-
-RAMFile::~RAMFile()
-{
-}
-
-
-RAMDirectory::RAMLock::RAMLock(const QString& name, RAMDirectory* dir)
- : directory(dir)
-{
- fname = name;
-}
-
-RAMDirectory::RAMLock::~RAMLock()
-{
- directory = NULL;
-}
-
-QString RAMDirectory::RAMLock::toString() const
-{
- return QLatin1String("LockFile@RAM");
-}
-
-bool RAMDirectory::RAMLock::isLocked()
-{
- return directory->fileExists(fname);
-}
-
-bool RAMDirectory::RAMLock::obtain()
-{
- SCOPED_LOCK_MUTEX(directory->files_mutex);
- if (!directory->fileExists(fname)) {
- IndexOutput* tmp = directory->createOutput(fname);
- tmp->close();
- _CLDELETE(tmp);
-
- return true;
- }
- return false;
-}
-
-void RAMDirectory::RAMLock::release()
-{
- directory->deleteFile(fname);
-}
-
-RAMIndexOutput::~RAMIndexOutput()
-{
- if (deleteFile)
- _CLDELETE(file);
- file = NULL;
-}
-
-RAMIndexOutput::RAMIndexOutput(RAMFile* f)
- : file(f)
-{
- pointer = 0;
- deleteFile = false;
-}
-
-RAMIndexOutput::RAMIndexOutput()
- : file(_CLNEW RAMFile)
-{
- pointer = 0;
- deleteFile = true;
-}
-
-void RAMIndexOutput::writeTo(IndexOutput* out)
-{
- flush();
- int64_t end = file->length;
- int64_t pos = 0;
- int32_t p = 0;
- while (pos < end) {
- int32_t length = CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE;
- int64_t nextPos = pos + length;
- if (nextPos > end) { // at the last buffer
- length = (int32_t)(end - pos);
- }
- out->writeBytes((uint8_t*)file->buffers[p++], length);
- pos = nextPos;
- }
-}
-
-void RAMIndexOutput::reset()
-{
- seek(_ILONGLONG(0));
- file->length = _ILONGLONG(0);
-}
-
-void RAMIndexOutput::flushBuffer(const uint8_t* src, const int32_t len)
-{
- uint8_t* b = NULL;
- int32_t bufferPos = 0;
- while (bufferPos != len) {
- uint32_t bufferNumber = pointer/CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE;
- int32_t bufferOffset = pointer%CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE;
- int32_t bytesInBuffer = CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE - bufferOffset;
- int32_t remainInSrcBuffer = len - bufferPos;
- int32_t bytesToCopy = bytesInBuffer >= remainInSrcBuffer ? remainInSrcBuffer : bytesInBuffer;
-
- if (bufferNumber == file->buffers.size()){
- b = _CL_NEWARRAY(uint8_t, CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE);
- file->buffers.push_back( b );
- }else{
- b = file->buffers[bufferNumber];
- }
- memcpy(b+bufferOffset, src+bufferPos, bytesToCopy * sizeof(uint8_t));
- bufferPos += bytesToCopy;
- pointer += bytesToCopy;
- }
- if (pointer > file->length)
- file->length = pointer;
-
- file->lastModified = Misc::currentTimeMillis();
-}
-
-void RAMIndexOutput::close()
-{
- BufferedIndexOutput::close();
-}
-
-/** Random-at methods */
-void RAMIndexOutput::seek(const int64_t pos)
-{
- BufferedIndexOutput::seek(pos);
- pointer = (int32_t)pos;
-}
-
-int64_t RAMIndexOutput::length()
-{
- return file->length;
-}
-
-
-RAMIndexInput::RAMIndexInput(RAMFile* f)
- : file(f)
-{
- pointer = 0;
- _length = f->length;
-}
-
-RAMIndexInput::RAMIndexInput(const RAMIndexInput& other)
- : BufferedIndexInput(other)
-{
- file = other.file;
- pointer = other.pointer;
- _length = other._length;
-}
-
-RAMIndexInput::~RAMIndexInput()
-{
- RAMIndexInput::close();
-}
-
-IndexInput* RAMIndexInput::clone() const
-{
- return _CLNEW RAMIndexInput(*this);
-}
-
-int64_t RAMIndexInput::length()
-{
- return _length;
-}
-
-QString RAMIndexInput::getDirectoryType() const
-{
- return RAMDirectory::DirectoryType();
-}
-
-void RAMIndexInput::readInternal(uint8_t* dest, const int32_t len)
-{
- const int64_t bytesAvailable = file->length - pointer;
- int64_t remainder = len <= bytesAvailable ? len : bytesAvailable;
- int32_t start = pointer;
- int32_t destOffset = 0;
- while (remainder != 0) {
- int32_t bufferNumber = start / CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE;
- int32_t bufferOffset = start % CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE;
- int32_t bytesInBuffer = CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE - bufferOffset;
-
- /* The buffer's entire length (bufferLength) is defined by IndexInput.h
- ** as int32_t, so obviously the number of bytes in a given segment of the
- ** buffer won't exceed the the capacity of int32_t. Therefore, the
- ** int64_t->int32_t cast on the next line is safe. */
- int32_t bytesToCopy = bytesInBuffer >= remainder ? static_cast<int32_t>(remainder) : bytesInBuffer;
- uint8_t* b = file->buffers[bufferNumber];
- memcpy(dest + destOffset, b + bufferOffset, bytesToCopy * sizeof(uint8_t));
-
- destOffset += bytesToCopy;
- start += bytesToCopy;
- remainder -= bytesToCopy;
- pointer += bytesToCopy;
- }
-}
-
-void RAMIndexInput::close()
-{
- BufferedIndexInput::close();
-}
-
-void RAMIndexInput::seekInternal(const int64_t pos)
-{
- CND_PRECONDITION(pos >= 0 && pos < this->_length, "Seeking out of range")
- pointer = (int32_t)pos;
-}
-
-// #pragma mark -- RAMDirectory
-
-QStringList RAMDirectory::list() const
-{
- SCOPED_LOCK_MUTEX(files_mutex);
-
- QStringList names;
-
- FileMap::const_iterator itr;
- for (itr = files.begin(); itr != files.end(); ++itr)
- names.push_back(itr->first);
-
- return names;
-}
-
-RAMDirectory::RAMDirectory()
- : Directory()
- , files(false, true)
-{
-}
-
-RAMDirectory::~RAMDirectory()
-{
- //todo: should call close directory?
-}
-
-void RAMDirectory::_copyFromDir(Directory* dir, bool closeDir)
-{
- QStringList names = dir->list();
- uint8_t buf[CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE];
-
- foreach (const QString& name, names) {
- if (!CL_NS(index)::IndexReader::isLuceneFile(name))
- continue;
-
- // make place on ram disk
- IndexOutput* os = createOutput(name);
- // read current file
- IndexInput* is = dir->openInput(name);
-
- // and copy to ram disk
- //todo: this could be a problem when copying from big indexes...
- int64_t readCount = 0;
- int64_t len = is->length();
- while (readCount < len) {
- int32_t toRead = CL_NS(store)::BufferedIndexOutput::BUFFER_SIZE;
- if ((readCount + toRead) > len)
- toRead = int32_t(len - readCount);
- is->readBytes(buf, toRead);
- os->writeBytes(buf, toRead);
- readCount += toRead;
- }
-
- // graceful cleanup
- is->close();
- _CLDELETE(is);
- os->close();
- _CLDELETE(os);
- }
- if (closeDir)
- dir->close();
-}
-
-RAMDirectory::RAMDirectory(Directory* dir)
- : Directory()
- , files(false, true)
-{
- _copyFromDir(dir, false);
-}
-
-RAMDirectory::RAMDirectory(const QString& dir)
- : Directory()
- , files(false, true)
-{
- Directory* fsdir = FSDirectory::getDirectory(dir, false);
- try {
- _copyFromDir(fsdir, false);
- } _CLFINALLY (
- fsdir->close();
- _CLDECDELETE(fsdir);
- );
-}
-
-bool RAMDirectory::fileExists(const QString& name) const
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- return files.exists(name);
-}
-
-int64_t RAMDirectory::fileModified(const QString& name) const
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- const RAMFile* f = files.get(name);
- return f->lastModified;
-}
-
-int64_t RAMDirectory::fileLength(const QString& name) const
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- RAMFile* f = files.get(name);
- return f->length;
-}
-
-
-IndexInput* RAMDirectory::openInput(const QString& name)
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- RAMFile* file = files.get(name);
- if (file == NULL) {
- _CLTHROWA(CL_ERR_IO, // DSR:PROPOSED: Better error checking.
- "[RAMDirectory::open] The requested file does not exist.");
- }
- return _CLNEW RAMIndexInput(file);
-}
-
-void RAMDirectory::close()
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- files.clear();
-}
-
-bool RAMDirectory::doDeleteFile(const QString& name)
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- files.remove(name);
- return true;
-}
-
-void RAMDirectory::renameFile(const QString& from, const QString& to)
-{
- SCOPED_LOCK_MUTEX(files_mutex);
- FileMap::iterator itr = files.find(from);
-
- /* DSR:CL_BUG_LEAK:
- ** If a file named $to already existed, its old value was leaked.
- ** My inclination would be to prevent this implicit deletion with an
- ** exception, but it happens routinely in CLucene's internals (e.g., during
- ** IndexWriter.addIndexes with the file named 'segments'). */
- if (files.exists(to))
- files.remove(to);
-
- if (itr == files.end()) {
- char tmp[1024];
- _snprintf(tmp, 1024, "cannot rename %s, file does not exist",
- from.toLocal8Bit().constData());
- _CLTHROWT(CL_ERR_IO, tmp);
- }
-
- CND_PRECONDITION(itr != files.end(), "itr == files.end()")
-
- RAMFile* file = itr->second;
- files.removeitr(itr, true, true);
- files.put(to, file);
-}
-
-
-void RAMDirectory::touchFile(const QString& name)
-{
- RAMFile* file = NULL;
- {
- SCOPED_LOCK_MUTEX(files_mutex);
- file = files.get(name);
- }
- uint64_t ts1 = file->lastModified;
- uint64_t ts2 = Misc::currentTimeMillis();
-
- //make sure that the time has actually changed
- while (ts1 == ts2) {
- _LUCENE_SLEEP(1);
- ts2 = Misc::currentTimeMillis();
- };
-
- file->lastModified = ts2;
-}
-
-IndexOutput* RAMDirectory::createOutput(const QString& name)
-{
- /* Check the $files VoidMap to see if there was a previous file named
- ** $name. If so, delete the old RAMFile object, but reuse the existing
- ** char buffer ($n) that holds the filename. If not, duplicate the
- ** supplied filename buffer ($name) and pass ownership of that memory ($n)
- ** to $files. */
-
- SCOPED_LOCK_MUTEX(files_mutex);
-
- QString n = files.getKey(name);
- if (!n.isEmpty()) {
- RAMFile* rf = files.get(name);
- _CLDELETE(rf);
- } else {
- n = name;
- }
-
- RAMFile* file = _CLNEW RAMFile();
-#ifdef _DEBUG
- file->filename = n;
-#endif
- files[n] = file;
-
- return _CLNEW RAMIndexOutput(file);
-}
-
-LuceneLock* RAMDirectory::makeLock(const QString& name)
-{
- return _CLNEW RAMLock(name, this);
-}
-
-QString RAMDirectory::toString() const
-{
- return QLatin1String("RAMDirectory");
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.h b/src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.h
deleted file mode 100644
index ad51bd2b0..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/RAMDirectory.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_store_RAMDirectory_
-#define _lucene_store_RAMDirectory_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-
-#include "Lock.h"
-#include "Directory.h"
-#include "CLucene/util/VoidMap.h"
-#include "CLucene/util/Arrays.h"
-
-CL_NS_DEF(store)
-
-class RAMFile : LUCENE_BASE
-{
-public:
- CL_NS(util)::CLVector<uint8_t*, CL_NS(util)::Deletor::Array<uint8_t> > buffers;
- int64_t length;
- uint64_t lastModified;
-
-#ifdef _DEBUG
- QString filename;
-#endif
-
- RAMFile();
- ~RAMFile();
-};
-
-class RAMIndexOutput : public BufferedIndexOutput
-{
-protected:
- RAMFile* file;
- int32_t pointer;
- bool deleteFile;
-
- // output methods:
- void flushBuffer(const uint8_t* src, const int32_t len);
-
-public:
- RAMIndexOutput(RAMFile* f);
- RAMIndexOutput();
- /** Construct an empty output buffer. */
- virtual ~RAMIndexOutput();
-
- virtual void close();
-
- // Random-at methods
- virtual void seek(const int64_t pos);
- int64_t length();
- /** Resets this to an empty buffer. */
- void reset();
- /** Copy the current contents of this buffer to the named output. */
- void writeTo(IndexOutput* output);
-};
-
-class RAMIndexInput : public BufferedIndexInput
-{
-private:
- RAMFile* file;
- int32_t pointer;
- int64_t _length;
-
-protected:
- /** IndexInput methods */
- RAMIndexInput(const RAMIndexInput& clone);
- void readInternal(uint8_t *dest, const int32_t len);
-
- /** Random-at methods */
- void seekInternal(const int64_t pos);
-
-public:
- RAMIndexInput(RAMFile* f);
- ~RAMIndexInput();
- IndexInput* clone() const;
-
- void close();
- int64_t length();
- QString getDirectoryType() const;
-};
-
-
-/**
-* A memory-resident {@link Directory} implementation.
-*/
-class RAMDirectory : public Directory
-{
- class RAMLock : public LuceneLock
- {
- private:
- RAMDirectory* directory;
- QString fname;
- public:
- RAMLock(const QString& name, RAMDirectory* dir);
- virtual ~RAMLock();
- bool obtain();
- void release();
- bool isLocked();
- virtual QString toString() const;
- };
-
- typedef CL_NS(util)::CLHashMap<QString, RAMFile*,
- CL_NS(util)::Compare::Qstring, CL_NS(util)::Equals::Qstring,
- CL_NS(util)::Deletor::DummyQString,
- CL_NS(util)::Deletor::Object<RAMFile> > FileMap;
-
-protected:
- /// Removes an existing file in the directory.
- virtual bool doDeleteFile(const QString& name);
-
- /**
- * Creates a new <code>RAMDirectory</code> instance from a different
- * <code>Directory</code> implementation. This can be used to load
- * a disk-based index into memory.
- * <P>
- * This should be used only with indices that can fit into memory.
- *
- * @param dir a <code>Directory</code> value
- * @exception IOException if an error occurs
- */
- void _copyFromDir(Directory* dir, bool closeDir);
- FileMap files; // unlike the java Hashtable, FileMap is not synchronized, and all access must be protected by a lock
-
-public:
-#ifndef _CL_DISABLE_MULTITHREADING //do this so that the mutable keyword still works without mt enabled
- mutable DEFINE_MUTEX(files_mutex) // mutable: const methods must also be able to synchronize properly
-#endif
-
- // Returns a null terminated array of strings, one for each file in the directory.
- QStringList list() const;
-
- /** Constructs an empty {@link Directory}. */
- RAMDirectory();
-
- // Destructor - only call this if you are sure the directory
- // is not being used anymore. Otherwise use the ref-counting
- // facilities of dir->close
- virtual ~RAMDirectory();
- RAMDirectory(Directory* dir);
-
- /**
- * Creates a new <code>RAMDirectory</code> instance from the {@link FSDirectory}.
- *
- * @param dir a <code>String</code> specifying the full index directory path
- */
- RAMDirectory(const QString& dir);
-
- /// Returns true iff the named file exists in this directory.
- bool fileExists(const QString& name) const;
-
- /// Returns the time the named file was last modified.
- int64_t fileModified(const QString& name) const;
-
- /// Returns the length in bytes of a file in the directory.
- int64_t fileLength(const QString& name) const;
-
- /// Removes an existing file in the directory.
- virtual void renameFile(const QString& from, const QString& to);
-
- /** Set the modified time of an existing file to now. */
- void touchFile(const QString& name);
-
- /// Creates a new, empty file in the directory with the given name.
- /// Returns a stream writing this file.
- virtual IndexOutput* createOutput(const QString& name);
-
- /// Construct a {@link Lock}.
- /// @param name the name of the lock file
- LuceneLock* makeLock(const QString& name);
-
- /// Returns a stream reading an existing file.
- IndexInput* openInput(const QString& name);
-
- virtual void close();
-
- QString toString() const;
-
- static QString DirectoryType() { return QLatin1String("RAM"); }
- QString getDirectoryType() const { return DirectoryType(); }
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.cpp b/src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.cpp
deleted file mode 100644
index 376ae258f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "TransactionalRAMDirectory.h"
-
-CL_NS_DEF(store)
-CL_NS_USE(util)
-
-TransactionalRAMDirectory::TransactionalRAMDirectory()
- : RAMDirectory()
- , filesToRestoreOnAbort(false, true)
-{
- transOpen = false;
-}
-
-TransactionalRAMDirectory::~TransactionalRAMDirectory()
-{
-}
-
-bool TransactionalRAMDirectory::archiveOrigFileIfNecessary(const QString& name)
-{
- // If a file named $name was present when the transaction started and the
- // original RAMFile object has not been archived for restoration upon
- // transaction abort, then do so, and return true.
- // In any other case, return false.
- if (fileExists(name) && filesToRemoveOnAbort.find(name) == filesToRemoveOnAbort.end()) {
- // The file exists, but isn't recorded as having been created after the
- // start of the transaction, so it must've been present at the start of
- // the transaction.
-
- // Transfer memory ownership of both the key and the value from files to
- // filesToRestoreOnAbort.
- QString origName = files.getKey(name);
- RAMFile* origFile = files.get(name);
- files.remove(name, true, true);
- filesToRestoreOnAbort.put(origName, origFile);
-
- CND_CONDITION(!fileExists(name),
- "File should not exist immediately after archival.");
- return true;
- }
-
- return false;
-}
-
-void TransactionalRAMDirectory::unarchiveOrigFile(const QString& name)
-{
- QString origName = filesToRestoreOnAbort.getKey(name);
- if (origName.isEmpty()) {
- _CLTHROWA(CL_ERR_RAMTransaction,
- "File submitted for unarchival was not archived.");
- }
- RAMFile* origFile = filesToRestoreOnAbort.get(name);
- // Transfer memory ownership back to files from filesToRestoreOnAbort.
- filesToRestoreOnAbort.remove(name, true, true);
- files.put(origName, origFile);
-}
-
-bool TransactionalRAMDirectory::transIsOpen() const
-{
- return transOpen;
-}
-
-void TransactionalRAMDirectory::transStart()
-{
- if (transOpen) {
- _CLTHROWA(CL_ERR_RAMTransaction,
- "Must resolve previous transaction before starting another.");
- }
-
- CND_CONDITION(filesToRemoveOnAbort.size() == 0,
- "filesToRemoveOnAbort should have been cleared by either its"
- " constructor or transResolved.");
-
- CND_CONDITION(filesToRestoreOnAbort.size() == 0,
- "filesToRestoreOnAbort should have been cleared by either its"
- " constructor or transResolved.");
-
- transOpen = true;
-}
-
-void TransactionalRAMDirectory::transResolved()
-{
- // This method implements actions common to both forms of transaction
- // resolution.
- filesToRemoveOnAbort.clear();
- filesToRestoreOnAbort.clear();
- transOpen = false;
-}
-
-void TransactionalRAMDirectory::transCommit()
-{
- if (!transOpen)
- _CLTHROWA(CL_ERR_RAMTransaction, "There is no open transaction.");
-
- // All storage is in memory, so commit is ultra-simple.
- transResolved();
-}
-
-void TransactionalRAMDirectory::transAbort()
-{
- if (!transOpen)
- _CLTHROWA(CL_ERR_RAMTransaction, "There is no open transaction.");
-
- // Delete each file in filesToRemoveOnAbort.
- FilenameSet::const_iterator itrDel = filesToRemoveOnAbort.begin();
- for ( ; itrDel != filesToRemoveOnAbort.end(); ++itrDel) {
- size_t nameLength = itrDel->first.length();
-
- // Special exception: Refrain from deleting a lock's flag file, as that
- // would interfere with the operation of the lock.
- if (!(nameLength >= 5
- && itrDel->first.rightRef(5) == QLatin1String(".lock"))) {
- RAMDirectory::deleteFile(itrDel->first);
- }
- }
- // Ownership of the memory of both the key and the value never left files,
- // so there's no need for a special directive to filesToRemoveOnAbort.
- filesToRemoveOnAbort.clear();
-
- // Now that any new-since-trans-start files with the same names as
- // already-present-at-trans-start files are out of the way, restore each
- // file in filesToRestoreOnAbort.
- TransFileMap::const_iterator itr = filesToRestoreOnAbort.begin();
- for ( ; itr != filesToRestoreOnAbort.end(); ++itr) {
- files.put(itr->first, itr->second);
- filesToRestoreOnAbort.remove(itr->first);
- }
-
- CND_CONDITION(filesToRestoreOnAbort.size() == 0,
- "filesToRestoreOnAbort should be empty.");
-
- transResolved();
-}
-
-bool TransactionalRAMDirectory::doDeleteFile(const QString& name)
-{
- if (!transOpen)
- return RAMDirectory::doDeleteFile(name);
-
- bool wasOriginalAndWasArchived = archiveOrigFileIfNecessary(name);
- if (!wasOriginalAndWasArchived) {
- // The file to be deleted wasn't present at transaction start, so instead
- // of archiving it, we delete it the conventional way, making sure to
- // erase its record in filesToRemoveOnAbort if it was listed there.
- filesToRemoveOnAbort.remove(name);
- return RAMDirectory::doDeleteFile(name);
- }
- return true;
-}
-
-void TransactionalRAMDirectory::renameFile(const QString& from, const QString& to)
-{
- // During the review on 2005.03.18, decided not to implement transactional
- // renameFile for two reasons:
- // a) It's not needed in the limited scenario for which
- // TransactionalRAMDirectory was designed (IndexWriter::addDocument and
- // subcode).
- // b) Supporting renaming during a transaction would add considerable
- // bookkeeping overhead, reducing the performance of the overwhelmingly
- // typical case (commit) in order to support the rare case (abort).
- //
- // This was not a thinly disguised punt due to the complication of
- // implementing renameFile transactionally; rather, several implementations
- // were considered, but it seemed wrongheaded to degrade the performance of
- // the typical case based on the mere potential need to support renameFile
- // at some future point for the benefit of the atypical case.
- if (transOpen) {
- _CLTHROWA(CL_ERR_RAMTransaction,
- "TransactionalRAMDirectory disallows renameFile during a transaction.");
- }
- RAMDirectory::renameFile(from, to);
-}
-
-IndexOutput* TransactionalRAMDirectory::createOutput(const QString& name)
-{
- if (!transOpen)
- return RAMDirectory::createOutput(name);
-
- bool wasOriginalAndWasArchived = archiveOrigFileIfNecessary(name);
- try {
- IndexOutput* ret = RAMDirectory::createOutput(name);
- // Importantly, we store a pointer to the filename memory managed by
- // files, rather than that passed in by the client (name). We don't make
- // an additional copy of the filename's memory because the transactional
- // metadata container filesToRemoveOnAbort is not at risk of outliving
- // files.
- filesToRemoveOnAbort.put(files.getKey(name), NULL);
- return ret;
- } catch (...) {
- if (wasOriginalAndWasArchived) {
- unarchiveOrigFile(name);
- }
- throw;
- }
-}
-
-void TransactionalRAMDirectory::close()
-{
- if (transOpen)
- transAbort();
-
- RAMDirectory::close();
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.h b/src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.h
deleted file mode 100644
index 0d6c11b0c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/store/TransactionalRAMDirectory.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_store_TransactionalRAMDirectory_
-#define _lucene_store_TransactionalRAMDirectory_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "RAMDirectory.h"
-#include "CLucene/util/VoidList.h"
-
-CL_NS_DEF(store)
-
-/***
-This transactional in-memory Directory was created to address a specific
-situation, and was deliberately pared down to the simplest viable
-implementation. For the sake of simplicity, this implementation imposes
-restrictions on what operations can be performed in the directory while a
-transaction is in progress (documented in TransactionalRAMDirectory.cpp).
-
-Because the Lucene Directory interface itself is rather simplistic, it
-would not be difficult to expand TransactionalRAMDirectory so that it
-provided fully general transactionality. However, the developer of this
-original implementation was of the opinion that the last thing CLucene
-needs is gratuitous features that exceed their required complexity and
-haven't been rigorously tested.
-*/
-class TransactionalRAMDirectory : public RAMDirectory
-{
-private:
- typedef CL_NS(util)::CLSet<QString, void*, CL_NS(util)::Compare::Qstring,
- CL_NS(util)::Deletor::DummyQString> FilenameSet;
- FilenameSet filesToRemoveOnAbort;
-
- typedef CL_NS(util)::CLSet<QString, RAMFile*, CL_NS(util)::Compare::Qstring,
- CL_NS(util)::Deletor::DummyQString,
- CL_NS(util)::Deletor::Object<RAMFile> > TransFileMap;
- TransFileMap filesToRestoreOnAbort;
-
- bool transOpen;
-
- void transResolved();
- bool archiveOrigFileIfNecessary(const QString& name);
- void unarchiveOrigFile(const QString& name);
-
-protected:
- bool doDeleteFile(const QString& name);
-
-public:
- TransactionalRAMDirectory();
- virtual ~TransactionalRAMDirectory();
-
- bool transIsOpen() const;
- void transStart();
- void transCommit();
- void transAbort();
-
- // Constrained operations:
- void renameFile(const QString& from, const QString& to);
- IndexOutput* createOutput(const QString& name);
-
- void close();
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Arrays.h b/src/assistant/3rdparty/clucene/src/CLucene/util/Arrays.h
deleted file mode 100644
index ba60c5638..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Arrays.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_Arrays_
-#define _lucene_util_Arrays_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "VoidList.h"
-
-CL_NS_DEF(util)
- class Arrays{
- public:
- template<typename _type>
- class _Arrays {
- protected:
- //used by binarySearch to check for equality
- virtual bool equals(_type a,_type b) const = 0;
- virtual int32_t compare(_type a,_type b) const = 0;
- public:
- virtual ~_Arrays(){
- }
-
- void sort(_type* a, int32_t alen, int32_t fromIndex, int32_t toIndex) const{
- CND_PRECONDITION(fromIndex < toIndex,"fromIndex >= toIndex");
- CND_PRECONDITION(fromIndex >= 0,"fromIndex < 0");
-
- // First presort the array in chunks of length 6 with insertion
- // sort. A mergesort would give too much overhead for this length.
- for (int32_t chunk = fromIndex; chunk < toIndex; chunk += 6)
- {
- int32_t end = min(chunk + 6, toIndex);
- for (int32_t i = chunk + 1; i < end; i++)
- {
- if (compare(a[i - 1], a[i]) > 0)
- {
- // not already sorted
- int32_t j = i;
- _type elem = a[j];
- do
- {
- a[j] = a[j - 1];
- j--;
- }
- while (j > chunk && compare(a[j - 1], elem) > 0);
- a[j] = elem;
- }
- }
- }
-
- int32_t len = toIndex - fromIndex;
- // If length is smaller or equal 6 we are done.
- if (len <= 6)
- return;
-
- _type* src = a;
- _type* dest = _CL_NEWARRAY(_type,alen);
- _type* t = NULL; // t is used for swapping src and dest
-
- // The difference of the fromIndex of the src and dest array.
- int32_t srcDestDiff = -fromIndex;
-
- // The merges are done in this loop
- for (int32_t size = 6; size < len; size <<= 1)
- {
- for (int32_t start = fromIndex; start < toIndex; start += size << 1)
- {
- // mid is the start of the second sublist;
- // end the start of the next sublist (or end of array).
- int32_t mid = start + size;
- int32_t end = min(toIndex, mid + size);
-
- // The second list is empty or the elements are already in
- // order - no need to merge
- if (mid >= end || compare(src[mid - 1], src[mid]) <= 0)
- {
- memcpy(dest + start + srcDestDiff, src+start, (end-start)*sizeof(_type));
- }// The two halves just need swapping - no need to merge
- else if (compare(src[start], src[end - 1]) > 0)
- {
- memcpy(dest+end-size+srcDestDiff, src+start, size * sizeof(_type));
- memcpy(dest+start+srcDestDiff, src+mid, (end-mid) * sizeof(_type));
-
- }else{
- // Declare a lot of variables to save repeating
- // calculations. Hopefully a decent JIT will put these
- // in registers and make this fast
- int32_t p1 = start;
- int32_t p2 = mid;
- int32_t i = start + srcDestDiff;
-
- // The main merge loop; terminates as soon as either
- // half is ended
- while (p1 < mid && p2 < end)
- {
- dest[i++] = src[(compare(src[p1], src[p2]) <= 0
- ? p1++ : p2++)];
- }
-
- // Finish up by copying the remainder of whichever half
- // wasn't finished.
- if (p1 < mid)
- memcpy(dest+i,src+p1, (mid-p1) * sizeof(_type));
- else
- memcpy(dest+i,src+p2, (end-p2) * sizeof(_type));
- }
- }
- // swap src and dest ready for the next merge
- t = src;
- src = dest;
- dest = t;
- fromIndex += srcDestDiff;
- toIndex += srcDestDiff;
- srcDestDiff = -srcDestDiff;
- }
-
- // make sure the result ends up back in the right place. Note
- // that src and dest may have been swapped above, so src
- // contains the sorted array.
- if (src != a)
- {
- // Note that fromIndex == 0.
- memcpy(a+srcDestDiff,src,toIndex * sizeof(_type));
- }
- }
- };
- };
-
- template <typename _kt, typename _comparator,
- typename class1, typename class2>
- class CLListEquals:
- public CL_NS_STD(binary_function)<class1*,class2*,bool>
- {
- typedef typename class1::const_iterator _itr1;
- typedef typename class2::const_iterator _itr2;
- public:
- CLListEquals(){
- }
- bool equals( class1* val1, class2* val2 ) const{
- static _comparator comp;
- if ( val1 == val2 )
- return true;
- size_t size = val1->size();
- if ( size != val2->size() )
- return false;
-
- _itr1 itr1 = val1->begin();
- _itr2 itr2 = val2->begin();
- while ( --size >= 0 ){
- if ( !comp(*itr1,*itr2) )
- return false;
- itr1++;
- itr2++;
- }
- return true;
- }
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.cpp
deleted file mode 100644
index 8819c5b77..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "BitSet.h"
-#include "CLucene/store/Directory.h"
-
-CL_NS_USE(store)
-CL_NS_DEF(util)
-
-BitSet::BitSet(const BitSet& copy)
- : _size(copy._size)
- , _count(-1)
-{
- int32_t len = (_size >> 3) + 1;
- bits = _CL_NEWARRAY(uint8_t, len);
- memcpy(bits, copy.bits, len);
-}
-
-BitSet::BitSet(int32_t size)
- : _size(size)
- , _count(-1)
-{
- int32_t len = (_size >> 3) + 1;
- bits = _CL_NEWARRAY(uint8_t, len);
- memset(bits, 0, len);
-}
-
-BitSet::BitSet(CL_NS(store)::Directory* d, const QString& name)
-{
- _count = -1;
- CL_NS(store)::IndexInput* input = d->openInput(name);
- try {
- _size = input->readInt(); // read size
- _count = input->readInt(); // read count
-
- bits = _CL_NEWARRAY(uint8_t,(_size >> 3) + 1); // allocate bits
- input->readBytes(bits, (_size >> 3) + 1); // read bits
- } _CLFINALLY (
- input->close();
- _CLDELETE(input );
- );
-}
-
-void BitSet::write(CL_NS(store)::Directory* d, const QString& name)
-{
- CL_NS(store)::IndexOutput* output = d->createOutput(name);
- try {
- output->writeInt(size()); // write size
- output->writeInt(count()); // write count
- output->writeBytes(bits, (_size >> 3) + 1); // write bits
- } _CLFINALLY (
- output->close();
- _CLDELETE(output);
- );
-}
-
-BitSet::~BitSet()
-{
- _CLDELETE_ARRAY(bits);
-}
-
-void BitSet::set(int32_t bit, bool val)
-{
- if (val)
- bits[bit >> 3] |= 1 << (bit & 7);
- else
- bits[bit >> 3] &= ~(1 << (bit & 7));
-
- _count = -1;
-}
-
-int32_t BitSet::size() const
-{
- return _size;
-}
-
-int32_t BitSet::count()
-{
- // if the BitSet has been modified
- if (_count == -1) {
- static const uint8_t BYTE_COUNTS[] = {
- 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8};
-
- int32_t c = 0;
- int32_t end = (_size >> 3) + 1;
- for (int32_t i = 0; i < end; i++)
- c += BYTE_COUNTS[bits[i]]; // sum bits per uint8_t
- _count = c;
- }
- return _count;
-}
-
-BitSet* BitSet::clone() const
-{
- return _CLNEW BitSet(*this);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.h b/src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.h
deleted file mode 100644
index f499154d3..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/BitSet.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_util_BitSet_
-#define _lucene_util_BitSet_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-#include "CLucene/store/Directory.h"
-
-CL_NS_DEF(util)
-
-class BitSet : LUCENE_BASE
-{
-public:
- // Create a bitset with the specified size
- BitSet (int32_t size);
- BitSet(CL_NS(store)::Directory* d, const QString& name);
- void write(CL_NS(store)::Directory* d, const QString& name);
-
- // Destructor for the bit set
- ~BitSet();
-
- // get the value of the specified bit
- inline bool get(const int32_t bit) const
- {
- return (bits[bit >> 3] & (1 << (bit & 7))) != 0;
- }
-
- // set the value of the specified bit
- void set(int32_t bit, bool val = true);
-
- ///returns the size of the bitset
- int32_t size() const;
-
- // Returns the total number of one bits in this BitSet. This is
- // efficiently computed and cached, so that, if the BitSet is not changed,
- // no recomputation is done for repeated calls.
- int32_t count();
- BitSet *clone() const;
-
-protected:
- BitSet(const BitSet& copy);
-
-private:
- int32_t _size;
- int32_t _count;
- uint8_t *bits;
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Equators.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/Equators.cpp
deleted file mode 100644
index 990c9c749..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Equators.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "Equators.h"
-
-CL_NS_DEF(util)
-
-bool Equals::Int32::operator()(const int32_t val1, const int32_t val2) const
-{
- return (val1)==(val2);
-}
-
-bool Equals::Char::operator()(const char* val1, const char* val2) const
-{
- if ( val1 == val2 )
- return true;
- return (strcmp(val1, val2) == 0);
-}
-
-#ifdef _UCS2
-bool Equals::WChar::operator()(const wchar_t* val1, const wchar_t* val2) const
-{
- if (val1 == val2)
- return true;
- return (_tcscmp(val1, val2) == 0);
-}
-#endif
-
-bool Equals::Qstring::operator()(const QString& val1, const QString& val2) const
-{
- return (val1 == val2);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Comparors
-///////////////////////////////////////////////////////////////////////////////
-
-int32_t Compare::Int32::getValue() const
-{
- return value;
-}
-
-Compare::Int32::Int32(int32_t val)
-{
- value = val;
-}
-
-Compare::Int32::Int32()
-{
- value = 0;
-}
-
-int32_t Compare::Int32::compareTo(void* o)
-{
- try {
- Int32* other = (Int32*)o;
- if (value == other->value)
- return 0;
- // Returns just -1 or 1 on inequality; doing math might overflow.
- return value > other->value ? 1 : -1;
- } catch(...) {
- _CLTHROWA(CL_ERR_Runtime, "Couldnt compare types");
- }
-}
-
-bool Compare::Int32::operator()(int32_t t1, int32_t t2) const
-{
- return t1 > t2 ? true : false;
-}
-
-size_t Compare::Int32::operator()(int32_t t) const
-{
- return t;
-}
-
-qreal Compare::Float::getValue() const
-{
- return value;
-}
-
-Compare::Float::Float(qreal val)
-{
- value = val;
-}
-
-int32_t Compare::Float::compareTo(void* o)
-{
- try {
- Float* other = (Float*)o;
- if (value == other->value)
- return 0;
- // Returns just -1 or 1 on inequality; doing math might overflow.
- return value > other->value ? 1 : -1;
- } catch(...) {
- _CLTHROWA(CL_ERR_Runtime,"Couldnt compare types");
- }
-}
-
-bool Compare::Char::operator()(const char* val1, const char* val2) const
-{
- if ( val1 == val2)
- return false;
- return (strcmp(val1, val2) < 0);
-}
-
-size_t Compare::Char::operator()(const char* val1) const
-{
- return CL_NS(util)::Misc::ahashCode(val1);
-}
-
-#ifdef _UCS2
-bool Compare::WChar::operator()(const wchar_t* val1, const wchar_t* val2) const
-{
- if ( val1==val2)
- return false;
- return (_tcscmp(val1, val2) < 0);
-}
-
-size_t Compare::WChar::operator()(const wchar_t* val1) const
-{
- return CL_NS(util)::Misc::whashCode(val1);
-}
-#endif
-
-const TCHAR* Compare::TChar::getValue() const
-{
- return s;
-}
-
-Compare::TChar::TChar()
-{
- s = NULL;
-}
-
-Compare::TChar::TChar(const TCHAR* str)
-{
- this->s = str;
-}
-
-int32_t Compare::TChar::compareTo(void* o)
-{
- try {
- TChar* os = (TChar*)o;
- return _tcscmp(s, os->s);
- } catch(...) {
- _CLTHROWA(CL_ERR_Runtime,"Couldnt compare types");
- }
-
-}
-
-bool Compare::TChar::operator()(const TCHAR* val1, const TCHAR* val2) const
-{
- if (val1 == val2)
- return false;
-
- return (_tcscmp(val1, val2) < 0);
-}
-
-size_t Compare::TChar::operator()(const TCHAR* val1) const
-{
- return CL_NS(util)::Misc::thashCode(val1);
-}
-
-bool Compare::Qstring::operator()(const QString& val1, const QString& val2) const
-{
- return (val1 < val2);
-}
-
-size_t Compare::Qstring::operator ()(const QString& val1) const
-{
- return CL_NS(util)::Misc::qhashCode(val1);
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Equators.h b/src/assistant/3rdparty/clucene/src/CLucene/util/Equators.h
deleted file mode 100644
index 07d0d7c62..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Equators.h
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_util_Equators_
-#define _lucene_util_Equators_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-//#ifdef QT_LINUXBASE
-// we are going to use qreal now, we basically maintain our own clucene anyway
-//// LSB doesn't define float_t - see http://bugs.linuxbase.org/show_bug.cgi?id=2374
-//typedef float float_t;
-//#endif
-
-CL_NS_DEF(util)
-
-///////////////////////////////////////////////////////////////////////////////
-// Equators
-///////////////////////////////////////////////////////////////////////////////
-
-class Equals{
-public:
- class Int32:public CL_NS_STD(binary_function)<const int32_t*,const int32_t*,bool>
- {
- public:
- bool operator()( const int32_t val1, const int32_t val2 ) const;
- };
-
- class Char:public CL_NS_STD(binary_function)<const char*,const char*,bool>
- {
- public:
- bool operator()( const char* val1, const char* val2 ) const;
- };
-#ifdef _UCS2
- class WChar: public CL_NS_STD(binary_function)<const wchar_t*,const wchar_t*,bool>
- {
- public:
- bool operator()( const wchar_t* val1, const wchar_t* val2 ) const;
- };
- class TChar: public WChar{
- };
-#else
- class TChar: public Char{
- };
-#endif
-
- template<typename _cl>
- class Void:public CL_NS_STD(binary_function)<const void*,const void*,bool>
- {
- public:
- bool operator()( _cl* val1, _cl* val2 ) const{
- return val1==val2;
- }
- };
-
- class Qstring : public CL_NS_STD(binary_function)<const QString&, const QString&, bool>
- {
- public:
- bool operator() (const QString& val1, const QString& val2) const;
- };
-};
-
-
-///////////////////////////////////////////////////////////////////////////////
-// Comparors
-///////////////////////////////////////////////////////////////////////////////
-
-class Comparable : LUCENE_BASE
-{
-public:
- virtual ~Comparable(){
- }
-
- virtual int32_t compareTo(void* o) = 0;
-};
-
-/** @internal */
-class Compare{
-public:
- class _base
- { // traits class for hash containers
- public:
- enum
- { // parameters for hash table
- bucket_size = 4, // 0 < bucket_size
- min_buckets = 8
- }; // min_buckets = 2 ^^ N, 0 < N
-
- _base()
- {
- }
- };
-
- class Int32:public _base, public Comparable{
- int32_t value;
- public:
- int32_t getValue() const;
- Int32(int32_t val);
- Int32();
- int32_t compareTo(void* o);
- bool operator()( int32_t t1, int32_t t2 ) const;
- size_t operator()( int32_t t ) const;
- };
-
-
- class Float:public Comparable{
- qreal value;
- public:
- qreal getValue() const;
- Float(qreal val);
- int32_t compareTo(void* o);
- };
-
-
- class Char: public _base //<char*>
- {
- public:
- bool operator()( const char* val1, const char* val2 ) const;
- size_t operator()( const char* val1) const;
- };
-
-#ifdef _UCS2
- class WChar: public _base //<wchar_t*>
- {
- public:
- bool operator()( const wchar_t* val1, const wchar_t* val2 ) const;
- size_t operator()( const wchar_t* val1) const;
- };
-#endif
-
- class TChar: public _base, public Comparable{
- const TCHAR* s;
- public:
- const TCHAR* getValue() const;
-
- TChar();
- TChar(const TCHAR* str);
- int32_t compareTo(void* o);
- bool operator()( const TCHAR* val1, const TCHAR* val2 ) const;
- size_t operator()( const TCHAR* val1) const;
- };
-
-
- template<typename _cl>
- class Void:public _base //<const void*,const void*,bool>
- {
- public:
- int32_t compareTo(_cl* o){
- if ( this == o )
- return o;
- else
- return this > o ? 1 : -1;
- }
- bool operator()( _cl* t1, _cl* t2 ) const{
- return t1 > t2 ? true : false;
- }
- size_t operator()( _cl* t ) const{
- return (size_t)t;
- }
- };
-
- class Qstring : public _base
- {
- public:
- bool operator() (const QString& val1, const QString& val2) const;
- size_t operator() (const QString& val1) const;
- };
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// allocators
-///////////////////////////////////////////////////////////////////////////////
-
-class Deletor
-{
-public:
-
- template<typename _kt>
- class Array{
- public:
- static void doDelete(_kt* arr){
- _CLDELETE_LARRAY(arr);
- }
- };
- class tcArray{
- public:
- static void doDelete(const TCHAR* arr){
- _CLDELETE_CARRAY(arr);
- }
- };
- class acArray{
- public:
- static void doDelete(const char* arr){
- _CLDELETE_CaARRAY(arr);
- }
- };
-
- class Unintern{
- public:
- static void doDelete(TCHAR* arr);
- };
- template<typename _kt>
- class Object{
- public:
- static void doDelete(_kt* obj){
- _CLLDELETE(obj);
- }
- };
- template<typename _kt>
- class Void{
- public:
- static void doDelete(_kt* obj){
- _CLVDELETE(obj);
- }
- };
- class Dummy{
- public:
- static void doDelete(const void* nothing)
- {
- // TODO: remove all occurances where it hits this point
- // CND_WARNING(false, "Deletor::Dummy::doDelete run, set deleteKey
- // or deleteValue to false");
- }
- };
- class DummyInt32{
- public:
- static void doDelete(const int32_t nothing){
- }
- };
- class DummyFloat{
- public:
- static void doDelete(const qreal nothing){
- }
- };
- template <typename _type>
- class ConstNullVal{
- public:
- static void doDelete(const _type nothing)
- {
- // TODO: remove all occurances where it hits this point
- // CND_WARNING(false, "Deletor::Dummy::doDelete run, set deleteKey
- // or deleteValue to false");
- }
- };
-
- template <typename _type>
- class NullVal{
- public:
- static void doDelete(_type nothing)
- {
- // TODO: remove all occurances where it hits this point
- // CND_WARNING(false, "Deletor::Dummy::doDelete run, set deleteKey
- // or deleteValue to false");
- }
- };
- class DummyQString {
- public:
- static void doDelete(const QString& nothing) {
- }
- };
-};
-////////////////////////////////////////////////////////////////////////////////
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.cpp
deleted file mode 100644
index f9fbe9b10..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "FastCharStream.h"
-
-#include "CLucene/util/Reader.h"
-
-CL_NS_DEF(util)
-
-const int32_t FastCharStream::maxRewindSize = LUCENE_MAX_WORD_LEN*2;
-
- FastCharStream::FastCharStream(Reader* reader):
- pos(0),
- rewindPos(0),
- resetPos(0),
- col(1),
- line(1),
- input(reader)
- {
- input->mark(maxRewindSize);
- }
- FastCharStream::~FastCharStream(){
- }
- void FastCharStream::readChar(TCHAR &c) {
- try{
- int32_t r = input->read();
- if ( r == -1 )
- input = NULL;
- c = r;
- }catch(CLuceneError& err){
- if ( err.number() == CL_ERR_IO )
- input = 0;
- throw err;
- }
- }
- int FastCharStream::GetNext()
- {
- // printf("getnext\n");
- if (input == 0 ) // end of file
- {
- _CLTHROWA(CL_ERR_IO,"warning : FileReader.GetNext : Read TCHAR over EOS.");
- }
- // this is rather inefficient
- // implementing the functions from the java version of
- // charstream will be much more efficient.
- ++pos;
- if ( pos > resetPos + maxRewindSize && rewindPos == 0) {
- // move the marker one position (~expensive)
- resetPos = pos-(maxRewindSize/2);
- if ( resetPos != input->reset(resetPos) )
- _CLTHROWA(CL_ERR_IO,"Unexpected reset() result");
- input->mark(maxRewindSize);
- input->skip((maxRewindSize/2) - 1);
- }
- TCHAR ch;
- readChar(ch);
-
- if (input == NULL) { // eof
- return -1;
- }
- if (rewindPos == 0) {
- col += 1;
- if(ch == '\n') {
- line++;
- col = 1;
- }
- } else {
- rewindPos--;
- }
- return ch;
- }
-
- void FastCharStream::UnGet(){
-// printf("UnGet \n");
- if (input == 0)
- return;
- if ( pos == 0 ) {
- _CLTHROWA(CL_ERR_IO,"error : No character can be UnGet");
- }
- rewindPos++;
-
- input->reset(pos-1);
- pos--;
- }
-
- int FastCharStream::Peek() {
- int c = GetNext();
- UnGet();
- return c;
- }
-
- bool FastCharStream::Eos() const {
- return input==NULL;
- }
-
- int32_t FastCharStream::Column() const {
- return col;
- }
-
- int32_t FastCharStream::Line() const {
- return line;
- }
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.h b/src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.h
deleted file mode 100644
index 24e5b5612..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/FastCharStream.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_FastCharStream_
-#define _lucene_util_FastCharStream_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/Reader.h"
-
-CL_NS_DEF(util)
-
- /** Ported implementation of the FastCharStream class. */
- class FastCharStream:LUCENE_BASE
- {
- static const int32_t maxRewindSize;
- int32_t pos;
- int32_t rewindPos;
- int64_t resetPos;
- int32_t col;
- int32_t line;
- // read character from stream return false on error
- void readChar(TCHAR &);
- public:
- Reader* input;
-
- /// Initializes a new instance of the FastCharStream class LUCENE_EXPORT.
- FastCharStream(Reader* reader);
- ~FastCharStream();
-
- /// Returns the next TCHAR from the stream.
- int GetNext();
-
- void UnGet();
-
- /// Returns the current top TCHAR from the input stream without removing it.
- int Peek();
-
-
- /// Returns <b>True</b> if the end of stream was reached.
- bool Eos() const;
-
- /// Gets the current column.
- int32_t Column() const;
-
- /// Gets the current line.
- int32_t Line() const;
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Misc.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/Misc.cpp
deleted file mode 100644
index 64241bf99..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Misc.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#include "CLucene/StdHeader.h"
-#include "Misc.h"
-
-#ifdef _CL_TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if defined(_CL_HAVE_SYS_TIME_H)
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
-#ifdef _CL_HAVE_SYS_TIMEB_H
-# include <sys/timeb.h>
-#endif
-
-#ifdef UNDER_CE
-#include <QTime>
-#endif
-
-CL_NS_DEF(util)
-
-uint64_t Misc::currentTimeMillis()
-{
-#ifndef UNDER_CE
-#if defined(_CLCOMPILER_MSVC) || defined(__MINGW32__) || defined(__BORLANDC__)
- struct _timeb tstruct;
- _ftime(&tstruct);
-
- return (((uint64_t) tstruct.time) * 1000) + tstruct.millitm;
-#else
- struct timeval tstruct;
- if (gettimeofday(&tstruct, NULL) < 0) {
- _CLTHROWA(CL_ERR_Runtime,"Error in gettimeofday call.");
- }
-
- return (((uint64_t) tstruct.tv_sec) * 1000) + tstruct.tv_usec / 1000;
-#endif
-#else //UNDER_CE
- QT_USE_NAMESPACE
- QTime t = QTime::currentTime();
- return t.second() * 1000 + t.msec();
-#endif //UNDER_CE
-}
-
-// #pragma mark -- char related utils
-
-size_t Misc::ahashCode(const char* str)
-{
- // Compute the hash code using a local variable to be reentrant.
- size_t hashCode = 0;
- while (*str != 0)
- hashCode = hashCode * 31 + *str++;
- return hashCode;
-}
-
-size_t Misc::ahashCode(const char* str, size_t len)
-{
- // Compute the hash code using a local variable to be reentrant.
- size_t count = len;
- size_t hashCode = 0;
- for (size_t i = 0; i < count; i++)
- hashCode = hashCode * 31 + *str++;
- return hashCode;
-}
-
-char* Misc::ajoin(const char* a, const char* b, const char* c, const char* d,
- const char* e, const char* f)
-{
-#define aLEN(x) (x == NULL ? 0 : strlen(x))
- const size_t totalLen = aLEN(a) + aLEN(b) + aLEN(c) + aLEN(d) + aLEN(e)
- + aLEN(f) + sizeof(char); /* Space for terminator. */
-
- char* buf = _CL_NEWARRAY(char, totalLen);
- buf[0] = 0;
- if (a != NULL)
- strcat(buf, a);
-
- if (b != NULL)
- strcat(buf, b);
-
- if (c != NULL)
- strcat(buf, c);
-
- if (d != NULL)
- strcat(buf, d);
-
- if (e != NULL)
- strcat(buf, e);
-
- if (f != NULL)
- strcat(buf, f);
-
- return buf;
-}
-
-char* Misc::segmentname(const char* segment, const char* ext, int32_t x)
-{
- CND_PRECONDITION(ext != NULL, "ext is NULL");
-
- char* buf = _CL_NEWARRAY(char, CL_MAX_PATH);
- if (x == -1)
- _snprintf(buf, CL_MAX_PATH, "%s%s", segment, ext);
- else
- _snprintf(buf, CL_MAX_PATH, "%s%s%d", segment, ext, x);
- return buf;
-}
-
-void Misc::segmentname(char* buffer, int32_t bufferLen, const char* segment,
- const char* ext, int32_t x)
-{
- CND_PRECONDITION(buffer != NULL, "buffer is NULL");
- CND_PRECONDITION(segment != NULL, "segment is NULL");
- CND_PRECONDITION(ext != NULL, "extention is NULL");
-
- if (x == -1)
- _snprintf(buffer, bufferLen, "%s%s", segment, ext);
- else
- _snprintf(buffer, bufferLen, "%s%s%d", segment, ext, x);
-}
-
-// #pragma mark -- qt related utils
-
-size_t Misc::qhashCode(const QString& str)
-{
- size_t hashCode = 0;
- for (int i = 0; i < str.count(); ++i)
- hashCode = hashCode * 31 + str.at(i).unicode();
- return hashCode;
-}
-
-size_t Misc::qhashCode(const QString& str, size_t len)
-{
- size_t count = len;
- size_t hashCode = 0;
- for (size_t i = 0; i < count; ++i)
- hashCode = hashCode * 31 + str.at(i).unicode();
- return hashCode;
-}
-
-QString Misc::qjoin(const QString &a, const QString &b, const QString &c,
- const QString &d, const QString &e, const QString &f)
-{
- QString buffer;
-
- if (!a.isNull() && !a.isEmpty())
- buffer.append(a);
-
- if (!b.isNull() && !b.isEmpty())
- buffer.append(b);
-
- if (!c.isNull() && !c.isEmpty())
- buffer.append(c);
-
- if (!d.isNull() && !d.isEmpty())
- buffer.append(d);
-
- if (!e.isNull() && !e.isEmpty())
- buffer.append(e);
-
- if (!f.isNull() && !f.isEmpty())
- buffer.append(f);
-
- return buffer;
-}
-
-QString Misc::segmentname(const QString& segment, const QString& ext, int32_t x)
-{
- CND_PRECONDITION(!ext.isEmpty(), "ext is NULL");
-
- if (x == -1)
- return QString(segment + ext);
-
- QString buf(QLatin1String("%1%2%3"));
- return buf.arg(segment).arg(ext).arg(x);
-}
-
-void Misc::segmentname(QString& buffer, int32_t bufferLen,
- const QString& segment, const QString& ext, int32_t x)
-{
- CND_PRECONDITION(!segment.isEmpty(), "segment is NULL");
- CND_PRECONDITION(!ext.isEmpty(), "extention is NULL");
-
- buffer = segment + ext;
- if (x != -1)
- buffer += QString::number(x);
-}
-
-// #pragma mark -- TCHAR related utils
-
-int32_t Misc::stringDifference(const TCHAR* s1, int32_t len1, const TCHAR* s2,
- int32_t len2)
-{
- int32_t len = len1 < len2 ? len1 : len2;
- for (int32_t i = 0; i < len; i++)
- if (s1[i] != s2[i])
- return i;
- return len;
-}
-
-/* DSR:CL_BUG: (See comment for join method in Misc.h): */
-TCHAR* Misc::join (const TCHAR* a, const TCHAR* b, const TCHAR* c,
- const TCHAR* d, const TCHAR* e, const TCHAR* f)
-{
-#define LEN(x) (x == NULL ? 0 : _tcslen(x))
- const size_t totalLen = LEN(a) + LEN(b) + LEN(c) + LEN(d) + LEN(e) + LEN(f)
- + sizeof(TCHAR); /* Space for terminator. */
-
- TCHAR* buf = _CL_NEWARRAY(TCHAR, totalLen);
- buf[0] = 0;
- if (a != NULL)
- _tcscat(buf, a);
-
- if (b != NULL)
- _tcscat(buf, b);
-
- if (c != NULL)
- _tcscat(buf, c);
-
- if (d != NULL)
- _tcscat(buf, d);
-
- if (e != NULL)
- _tcscat(buf, e);
-
- if (f != NULL)
- _tcscat(buf, f);
-
- return buf;
-}
-
-#ifdef _UCS2
-
-size_t Misc::whashCode(const wchar_t* str)
-{
- // Compute the hash code using a local variable to be reentrant.
- size_t hashCode = 0;
- while (*str != 0)
- hashCode = hashCode * 31 + *str++;
- return hashCode;
-}
-
-size_t Misc::whashCode(const wchar_t* str, size_t len)
-{
- // Compute the hash code using a local variable to be reentrant.
- size_t count = len;
- size_t hashCode = 0;
- for (size_t i = 0; i < count; i++)
- hashCode = hashCode * 31 + *str++;
- return hashCode;
-}
-
-char* Misc::_wideToChar(const wchar_t* s CL_FILELINEPARAM)
-{
- size_t len = _tcslen(s);
- char* msg = _CL_NEWARRAY(char, len + 1);
- _cpywideToChar(s, msg, len + 1);
- return msg;
-}
-
-void Misc::_cpywideToChar(const wchar_t* s, char* d, size_t len)
-{
- size_t sLen = wcslen(s);
- for (uint32_t i = 0; i < len && i < sLen + 1; i++)
- d[i] = LUCENE_OOR_CHAR(s[i]);
-}
-
-wchar_t* Misc::_charToWide(const char* s CL_FILELINEPARAM)
-{
- size_t len = strlen(s);
- wchar_t* msg = _CL_NEWARRAY(wchar_t, len + 1);
- _cpycharToWide(s, msg, len + 1);
- return msg;
-}
-
-void Misc::_cpycharToWide(const char* s, wchar_t* d, size_t len)
-{
- size_t sLen = strlen(s);
- for (uint32_t i = 0; i < len && i < sLen + 1; i++)
- d[i] = s[i];
-}
-
-#endif
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Misc.h b/src/assistant/3rdparty/clucene/src/CLucene/util/Misc.h
deleted file mode 100644
index a66655ff4..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Misc.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
- *
- * Distributable under the terms of either the Apache License (Version 2.0) or
- * the GNU Lesser General Public License, as specified in the COPYING file.
- *
- * Changes are Copyright (C) 2015 The Qt Company Ltd.
-*/
-#ifndef _lucene_util_Misc_H
-#define _lucene_util_Misc_H
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include <QtCore/QString>
-
-CL_NS_DEF(util)
-
-class Misc
-{
-public:
- static uint64_t currentTimeMillis();
-
- static size_t ahashCode(const char* str);
- static size_t ahashCode(const char* str, size_t len);
- static char* ajoin(const char* a, const char* b, const char* c = NULL,
- const char* d = NULL, const char* e = NULL, const char* f = NULL);
- static char* segmentname(const char* segment, const char* ext, int32_t x = -1);
- static void segmentname(char* buffer, int32_t bufferLen, const char* segment,
- const char* ext, int32_t x = -1);
-
- static size_t qhashCode(const QString& str);
- static size_t qhashCode(const QString& str, size_t len);
- static QString qjoin(const QString& a, const QString& b,
- const QString& c = QString(), const QString& d = QString(),
- const QString& e = QString(), const QString& f = QString());
- static QString segmentname(const QString& segment, const QString& ext,
- int32_t x = -1 );
- static void segmentname(QString& buffer, int32_t bufferLen,
- const QString& Segment, const QString& ext, int32_t x = -1);
-
- // Compares two strings, character by character, and returns the
- // first position where the two strings differ from one another.
- //
- // @param s1 The first string to compare
- // @param s1Len The length of the first string to compare
- // @param s2 The second string to compare
- // @param s2Len The length of the second string to compare
- // @return The first position where the two strings differ.
- static int32_t stringDifference(const TCHAR* s1, int32_t s1Len,
- const TCHAR* s2, int32_t s2Len);
- static TCHAR* join (const TCHAR* a, const TCHAR* b, const TCHAR* c = NULL,
- const TCHAR* d = NULL, const TCHAR* e = NULL, const TCHAR* f = NULL );
-
-#ifdef _UCS2
- static size_t whashCode(const wchar_t* str);
- static size_t whashCode(const wchar_t* str, size_t len);
-
-# define thashCode whashCode
-
- static char* _wideToChar(const wchar_t* s CL_FILELINEPARAM);
- static void _cpywideToChar(const wchar_t* s, char* d, size_t len);
-
- static wchar_t* _charToWide(const char* s CL_FILELINEPARAM);
- static void _cpycharToWide(const char* s, wchar_t* d, size_t len);
-
-#else
-# define thashCode ahashCode
-#endif
-};
-
-CL_NS_END
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/PriorityQueue.h b/src/assistant/3rdparty/clucene/src/CLucene/util/PriorityQueue.h
deleted file mode 100644
index 45649ee7f..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/PriorityQueue.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_PriorityQueue_
-#define _lucene_util_PriorityQueue_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-CL_NS_DEF(util)
-
-// A PriorityQueue maintains a partial ordering of its elements such that the
-// least element can always be found in constant time. Put()'s and pop()'s
-// require log(size) time.
-template <class _type,typename _valueDeletor> class PriorityQueue:LUCENE_BASE {
- private:
- _type* heap; //(was object[])
- size_t _size;
- bool dk;
- size_t maxSize;
-
- void upHeap(){
- size_t i = _size;
- _type node = heap[i]; // save bottom node (WAS object)
- int32_t j = ((uint32_t)i) >> 1;
- while (j > 0 && lessThan(node,heap[j])) {
- heap[i] = heap[j]; // shift parents down
- i = j;
- j = ((uint32_t)j) >> 1;
- }
- heap[i] = node; // install saved node
- }
- void downHeap(){
- size_t i = 1;
- _type node = heap[i]; // save top node
- size_t j = i << 1; // find smaller child
- size_t k = j + 1;
- if (k <= _size && lessThan(heap[k], heap[j])) {
- j = k;
- }
- while (j <= _size && lessThan(heap[j],node)) {
- heap[i] = heap[j]; // shift up child
- i = j;
- j = i << 1;
- k = j + 1;
- if (k <= _size && lessThan(heap[k], heap[j])) {
- j = k;
- }
- }
- heap[i] = node; // install saved node
- }
-
- protected:
- PriorityQueue(){
- this->_size = 0;
- this->dk = false;
- this->heap = NULL;
- this->maxSize = 0;
- }
-
- // Determines the ordering of objects in this priority queue. Subclasses
- // must define this one method.
- virtual bool lessThan(_type a, _type b)=0;
-
- // Subclass constructors must call this.
- void initialize(const int32_t maxSize, bool deleteOnClear){
- _size = 0;
- dk = deleteOnClear;
- int32_t heapSize = maxSize + 1;
- heap = _CL_NEWARRAY(_type,heapSize);
- this->maxSize = maxSize;
- }
-
- public:
- virtual ~PriorityQueue(){
- clear();
- _CLDELETE_ARRAY(heap);
- }
-
- /**
- * Adds an Object to a PriorityQueue in log(size) time.
- * If one tries to add more objects than maxSize from initialize
- * a RuntimeException (ArrayIndexOutOfBound) is thrown.
- */
- void put(_type element){
- if ( _size>=maxSize )
- _CLTHROWA(CL_ERR_IndexOutOfBounds,"add is out of bounds");
-
- ++_size;
- heap[_size] = element;
- upHeap();
- }
-
- /**
- * Adds element to the PriorityQueue in log(size) time if either
- * the PriorityQueue is not full, or not lessThan(element, top()).
- * @param element
- * @return true if element is added, false otherwise.
- */
- bool insert(_type element){
- if(_size < maxSize){
- put(element);
- return true;
- }else if(_size > 0 && !lessThan(element, top())){
- if ( dk ){
- _valueDeletor::doDelete(heap[1]);
- }
- heap[1] = element;
- adjustTop();
- return true;
- }else
- return false;
- }
-
- /**
- * Returns the least element of the PriorityQueue in constant time.
- */
- _type top(){
- if (_size > 0)
- return heap[1];
- else
- return NULL;
- }
-
- /** Removes and returns the least element of the PriorityQueue in log(size)
- * time.
- */
- _type pop(){
- if (_size > 0) {
- _type result = heap[1]; // save first value
- heap[1] = heap[_size]; // move last to first
-
- heap[_size] = (_type)0; // permit GC of objects
- --_size;
- downHeap(); // adjust heap
- return result;
- } else
- return (_type)NULL;
- }
-
- /**Should be called when the object at top changes values. Still log(n)
- worst case, but it's at least twice as fast to <pre>
- { pq.top().change(); pq.adjustTop(); }
- </pre> instead of <pre>
- { o = pq.pop(); o.change(); pq.push(o); }
- </pre>
- */
- void adjustTop(){
- downHeap();
- }
-
-
- /**
- * Returns the number of elements currently stored in the PriorityQueue.
- */
- size_t size(){
- return _size;
- }
-
- /**
- * Removes all entries from the PriorityQueue.
- */
- void clear(){
- for (size_t i = 1; i <= _size; ++i){
- if ( dk ){
- _valueDeletor::doDelete(heap[i]);
- }
- }
- _size = 0;
- }
- };
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Reader.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/Reader.cpp
deleted file mode 100644
index 1ce97106d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Reader.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "Reader.h"
-
-CL_NS_DEF(util)
-
-StringReader::StringReader ( const TCHAR* value ):
- Reader(NULL,true){
- reader = new jstreams::StringReader<TCHAR>(value);
-}
-StringReader::StringReader ( const TCHAR* value, const int32_t length ):
- Reader(NULL,true){
- reader = new jstreams::StringReader<TCHAR>(value,length);
-}
-StringReader::StringReader ( const TCHAR* value, const int32_t length, bool copyData ):
- Reader(NULL,true){
- reader = new jstreams::StringReader<TCHAR>(value,length, copyData);
-}
-StringReader::~StringReader(){
-}
-
-
-FileReader::FileReader ( const char* path, const char* enc,
- const int32_t cachelen, const int32_t /*cachebuff*/ ):
- Reader(NULL, true)
-{
- this->input = new jstreams::FileInputStream(path, cachelen);
- this->reader = new SimpleInputStreamReader(this->input,enc); //(this is a jstream object)
-}
-
-FileReader::~FileReader (){
- if (input)
- delete input;
-}
-int32_t FileReader::read(const TCHAR*& start, int32_t _min, int32_t _max) {
- return reader->read(start, _min, _max);
-}
-int64_t FileReader::mark(int32_t readlimit) {
- return reader->mark(readlimit);
-}
-int64_t FileReader::reset(int64_t newpos) {
- return reader->reset(newpos);
-}
-
-
-
-SimpleInputStreamReader::SimpleInputStreamReader(jstreams::StreamBase<char> *i, const char* enc)
-{
- finishedDecoding = false;
- input = i;
- charbuf.setSize(262);
-
- if ( strcmp(enc,"ASCII")==0 )
- encoding = ASCII;
-#ifdef _UCS2
- else if ( strcmp(enc,"UTF-8")==0 )
- encoding = UTF8;
- else if ( strcmp(enc,"UCS-2LE")==0 )
- encoding = UCS2_LE;
-#endif
- else
- _CLTHROWA(CL_ERR_IllegalArgument,"Unsupported encoding, use jstreams iconv based instead");
-
- mark(262);
- charsLeft = 0;
-}
-SimpleInputStreamReader::~SimpleInputStreamReader(){
- input = NULL;
-}
-int32_t SimpleInputStreamReader::decode(TCHAR* start, int32_t space){
- // decode from charbuf
- const char *inbuf = charbuf.readPos;
- const char *inbufend = charbuf.readPos + charbuf.avail;
- TCHAR *outbuf = start;
- const TCHAR *outbufend = outbuf + space;
-
- if ( encoding == ASCII ){
- while ( outbuf<outbufend && inbuf<inbufend ){
- *outbuf = *inbuf;
- outbuf++;
- inbuf++;
- }
-
-#ifdef _UCS2
- }
- else if ( encoding == UCS2_LE ){
- while ( outbuf<outbufend && (inbuf+1)<inbufend ){
- uint8_t c1 = *inbuf;
- uint8_t c2 = *(inbuf+1);
- unsigned short c = c1 | (c2<<8);
-
- #ifdef _UCS2
- *outbuf = c;
- #else
- *outbuf = LUCENE_OOR_CHAR(c);
- #endif
- outbuf++;
- inbuf+=2;
- }
-
- }else if ( encoding == UTF8 ){
- while ( outbuf<outbufend && inbuf<inbufend ){
- size_t utflen = lucene_utf8charlen(inbuf);
- if ( utflen==0 ){
- error = "Invalid multibyte sequence.";
- status = jstreams::Error;
- return -1;
- }else if ( inbuf+utflen > inbufend ){
- break; //character incomplete
- }else{
- size_t rd = lucene_utf8towc(outbuf,inbuf,inbufend-inbuf);
- if ( rd == 0 ){
- error = "Invalid multibyte sequence.";
- status = jstreams::Error;
- return -1;
- }else{
- inbuf+=rd;
- outbuf++;
- }
- }
- }
-#endif //_UCS2
- }else
- _CLTHROWA(CL_ERR_Runtime,"Unexpected encoding");
-
- if ( outbuf < outbufend ) {
- //we had enough room to convert the entire input
- if ( inbuf < inbufend ) {
- // last character is incomplete
- // move from inbuf to the end to the start of
- // the buffer
- memmove(charbuf.start, inbuf, inbufend-inbuf);
- charbuf.readPos = charbuf.start;
- charbuf.avail = inbufend-inbuf;
- } else if ( outbuf < outbufend ) { //input sequence was completely converted
- charbuf.readPos = charbuf.start;
- charbuf.avail = 0;
- if (input == NULL) {
- finishedDecoding = true;
- }
- }
- } else {
- charbuf.readPos += charbuf.avail - (inbufend-inbuf);
- charbuf.avail = inbufend-inbuf;
- }
- return outbuf-start;
-}
-
-int32_t SimpleInputStreamReader::fillBuffer(TCHAR* start, int32_t space) {
- // fill up charbuf
- if (input && charbuf.readPos == charbuf.start) {
- const char *begin;
- int32_t numRead;
- numRead = input->read(begin, 1, charbuf.size - charbuf.avail);
- //printf("filled up charbuf\n");
- if (numRead < -1) {
- error = input->getError();
- status = jstreams::Error;
- input = 0;
- return numRead;
- }
- if (numRead < 1) {
- // signal end of input buffer
- input = 0;
- if (charbuf.avail) {
- error = "stream ends on incomplete character";
- status = jstreams::Error;
- }
- return -1;
- }
- // copy data into other buffer
- memmove( charbuf.start + charbuf.avail, begin, numRead * sizeof(char));
- charbuf.avail = numRead + charbuf.avail;
- }
- // decode
- int32_t n = decode(start, space);
- //printf("decoded %i\n", n);
- return n;
-}
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/Reader.h b/src/assistant/3rdparty/clucene/src/CLucene/util/Reader.h
deleted file mode 100644
index 6b018b3aa..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/Reader.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_Reader_
-#define _lucene_util_Reader_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "streambase.h"
-#include "stringreader.h"
-#include "fileinputstream.h"
-#include "bufferedstream.h"
-
-CL_NS_DEF(util)
-/**
-* An inline wrapper that reads from Jos van den Oever's jstreams
-*/
-class Reader:LUCENE_BASE {
-typedef jstreams::StreamBase<TCHAR> jsReader;
-public:
- bool deleteReader;
- jsReader* reader;
-
- Reader(jsReader* reader, bool deleteReader){
- this->reader = reader;
- this->deleteReader = deleteReader;
- }
- virtual ~Reader(){
- if ( deleteReader )
- delete reader;
- reader = NULL;
- }
- inline int read(){
- const TCHAR*b;
- int32_t nread = reader->read(b, 1,1);
- if ( nread < -1 ) //if not eof
- _CLTHROWA(CL_ERR_IO,reader->getError() );
- else if ( nread == -1 )
- return -1;
- else
- return b[0];
- }
- /**
- * Read at least 1 character, and as much as is conveniently available
- */
- inline int32_t read(const TCHAR*& start){
- int32_t nread = reader->read(start,1,0);
- if ( nread < -1 ) //if not eof
- _CLTHROWA(CL_ERR_IO,reader->getError());
- else
- return nread;
- }
- inline int32_t read(const TCHAR*& start, int32_t len){
- int32_t nread = reader->read(start, len, len);
- if ( nread < -1 ) //if not eof
- _CLTHROWA(CL_ERR_IO,reader->getError());
- else
- return nread;
- }
- inline int64_t skip(int64_t ntoskip){
- int64_t skipped = reader->skip(ntoskip);
- if ( skipped < 0 )
- _CLTHROWA(CL_ERR_IO,reader->getError());
- else
- return skipped;
- }
- inline int64_t mark(int32_t readAheadlimit){
- int64_t pos = reader->mark(readAheadlimit);
- if ( pos < 0 )
- _CLTHROWA(CL_ERR_IO,reader->getError());
- else
- return pos;
- }
- int64_t reset(int64_t pos){
- int64_t r = reader->reset(pos);
- if ( r < 0 )
- _CLTHROWA(CL_ERR_IO,reader->getError());
- else
- return r;
- }
-};
-
-///A helper class which constructs a the jstreams StringReader.
-class StringReader: public Reader{
-public:
- StringReader ( const TCHAR* value );
- StringReader ( const TCHAR* value, const int32_t length );
- StringReader ( const TCHAR* value, const int32_t length, bool copyData );
- ~StringReader();
-};
-
-/** A very simple inputstreamreader implementation. For a
-* more complete InputStreamReader, use the jstreams version
-* located in the contrib package
-*/
-class SimpleInputStreamReader: public jstreams::BufferedInputStream<TCHAR>{
- int32_t decode(TCHAR* start, int32_t space);
- int encoding;
- enum{
- ASCII=1,
- UTF8=2,
- UCS2_LE=3
- };
- bool finishedDecoding;
- jstreams::StreamBase<char>* input;
- int32_t charsLeft;
-
- jstreams::InputStreamBuffer<char> charbuf;
- int32_t fillBuffer(TCHAR* start, int32_t space);
-public:
- SimpleInputStreamReader(jstreams::StreamBase<char> *i, const char* encoding);
- ~SimpleInputStreamReader();
-};
-
-/**
-* A helper class which constructs a FileReader with a specified
-* simple encodings, or a given inputstreamreader
-*/
-class FileReader: public Reader{
- jstreams::FileInputStream* input;
-public:
- FileReader ( const char* path, const char* enc,
- const int32_t cachelen = 13,
- const int32_t cachebuff = 14 ); //todo: optimise these cache values
- ~FileReader ();
-
- int32_t read(const TCHAR*& start, int32_t _min, int32_t _max);
- int64_t mark(int32_t readlimit);
- int64_t reset(int64_t);
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.cpp
deleted file mode 100644
index b5f1ca238..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "StringBuffer.h"
-#include "Misc.h"
-
-CL_NS_DEF(util)
-
- StringBuffer::StringBuffer(TCHAR* buf,int32_t maxlen, const bool consumeBuffer){
- buffer = buf;
- bufferLength = maxlen;
- bufferOwner = !consumeBuffer;
- len = 0;
- }
- StringBuffer::StringBuffer(){
- //Func - Constructor. Allocates a buffer with the default length.
- //Pre - true
- //Post - buffer of length bufferLength has been allocated
-
- //Initialize
- bufferLength = LUCENE_DEFAULT_TOKEN_BUFFER_SIZE;
- len = 0;
- //Allocate a buffer of length bufferLength
- buffer = _CL_NEWARRAY(TCHAR,bufferLength);
- bufferOwner = true;
- }
-
- StringBuffer::StringBuffer(const int32_t initSize){
- //Func - Constructor. Allocates a buffer of length initSize + 1
- //Pre - initSize > 0
- //Post - A buffer has been allocated of length initSize + 1
-
- //Initialize the bufferLength to initSize + 1 The +1 is for the terminator '\0'
- bufferLength = initSize + 1;
- len = 0;
- //Allocate a buffer of length bufferLength
- buffer = _CL_NEWARRAY(TCHAR,bufferLength);
- bufferOwner = true;
- }
-
- StringBuffer::StringBuffer(const TCHAR* value){
- //Func - Constructor.
- // Creates an instance of Stringbuffer containing a copy of the string value
- //Pre - value != NULL
- //Post - An instance of StringBuffer has been created containing the copy of the string value
-
- //Initialize the length of the string to be stored in buffer
- len = (int32_t) _tcslen(value);
-
- //Calculate the space occupied in buffer by a copy of value
- const int32_t occupiedLength = len + 1;
-
- // Minimum allocated buffer length is LUCENE_DEFAULT_TOKEN_BUFFER_SIZE.
- bufferLength = (occupiedLength >= LUCENE_DEFAULT_TOKEN_BUFFER_SIZE
- ? occupiedLength : LUCENE_DEFAULT_TOKEN_BUFFER_SIZE);
-
- //Allocate a buffer of length bufferLength
- buffer = _CL_NEWARRAY(TCHAR,bufferLength);
- bufferOwner = true;
- //Copy the string value into buffer
- _tcsncpy(buffer, value, occupiedLength);
- //Assert that the buffer has been terminated at the end of the string
- CND_PRECONDITION (buffer[len] == '\0', "Buffer was not correctly terminated");
- }
-
- StringBuffer::~StringBuffer() {
- // Func - Destructor
- // Pre - true
- // Post - Instanc has been destroyed
-
- if( bufferOwner ){
- _CLDELETE_CARRAY(buffer);
- }else
- buffer = NULL;
- }
- void StringBuffer::clear(){
- //Func - Clears the Stringbuffer and resets it to it default empty state
- //Pre - true
- //Post - pre(buffer) has been destroyed and a new one has been allocated
-
- //Destroy the current buffer if present
- _CLDELETE_CARRAY(buffer);
-
- //Initialize
- len = 0;
- bufferLength = LUCENE_DEFAULT_TOKEN_BUFFER_SIZE;
- //Allocate a buffer of length bufferLength
- buffer = _CL_NEWARRAY(TCHAR,bufferLength);
- }
-
- void StringBuffer::appendChar(const TCHAR character) {
- //Func - Appends a single character
- //Pre - true
- //Post - The character has been appended to the string in the buffer
-
- //Check if the current buffer length is sufficient to have the string value appended
- if (len + 1 > bufferLength){
- //Have the size of the current string buffer increased because it is too small
- growBuffer(len + 1);
- }
- //Put character at position len which is the end of the string in the buffer
- //Note that this action might overwrite the terminator of the string '\0', which
- //is kind of tricky
- buffer[len] = character;
- //Increase the len by to represent the correct length of the string in the buffer
- len++;
- }
-
- void StringBuffer::append(const TCHAR* value) {
- //Func - Appends a copy of the string value
- //Pre - value != NULL
- //Post - value has been copied and appended to the string in buffer
-
- append(value, _tcslen(value));
- }
- void StringBuffer::append(const TCHAR* value, size_t appendedLength) {
- //Func - Appends a copy of the string value
- //Pre - value != NULL
- // appendedLength contains the length of the string value which is to be appended
- //Post - value has been copied and appended to the string in buffer
-
- //Check if the current buffer length is sufficient to have the string value appended
- if (len + appendedLength + 1 > bufferLength){
- //Have the size of the current string buffer increased because it is too small
- growBuffer(len + appendedLength + 1);
- }
-
- //Copy the string value into the buffer at postion len
- _tcsncpy(buffer + len, value, appendedLength);
-
- //Add the length of the copied string to len to reflect the new length of the string in
- //the buffer (Note: len is not the bufferlength!)
- len += appendedLength;
- }
-
- void StringBuffer::appendInt(const int32_t value) {
- //Func - Appends an integer (after conversion to a character string)
- //Pre - true
- //Post - The converted integer value has been appended to the string in buffer
-
- //instantiate a buffer of 30 charactes for the conversion of the integer
- TCHAR buf[30];
- //Convert the integer value to a string buf using the radix 10 (duh)
- _i64tot(value, buf, 10);
- //Have the converted integer now stored in buf appended to the string in buffer
- append(buf);
- }
-
- void StringBuffer::appendFloat(const qreal value, const int32_t digits){
- //Func - Appends a qreal (after conversion to a character string)
- //Pre - digits > 0. Indicates the minimum number of characters printed
- //Post - The converted qreal value has been appended to the string in buffer
-
- //using sprintf("%f" was not reliable on other plaforms... we use a custom float convertor
- //bvk: also, using sprintf and %f seems excessivelly slow
- if(digits>8)
- _CLTHROWA(CL_ERR_IllegalArgument,"Too many digits...");
-
- //the maximum number of characters that int64 will hold is 23. so we need 23*2+2
- TCHAR buf[48]; //the buffer to hold
- int64_t v = (int64_t)value; //the integer value of the float
- _i64tot(v,buf,10); //add the whole number
-
- size_t len = 99-_tcslen(buf); //how many digits we have to work with?
- size_t dig = len< (size_t)digits ? len : digits;
- if ( dig > 0 ){
- _tcscat(buf,_T(".")); //add a decimal point
-
- int64_t remi=(int64_t)((value-v)*pow((qreal)10,(qreal)(dig+1))); //take the remainder and make a whole number
- if ( remi<0 ) remi*=-1;
- int64_t remadj=remi/10;
- if ( remi-(remadj*10) >=5 )
- remadj++; //adjust remainder
-
- // add as many zeros as necessary between the decimal point and the
- // significant part of the number. Fixes a bug when trying to print
- // numbers that have zeros right after the decimal point
- if (remadj) {
- int32_t numZeros = dig - (int32_t)log10((qreal)remadj) - 1;
- while(numZeros-- > 0)
- _tcscat(buf,_T("0")); //add a zero before the decimal point
- }
-
- _i64tot(remadj,buf+_tcslen(buf),10); //add the remainder
- }
-
- append(buf);
- }
-
- void StringBuffer::prepend(const TCHAR* value){
- //Func - Puts a copy of the string value infront of the current string in the StringBuffer
- //Pre - value != NULL
- //Post - The string in pre(buffer) has been shifted n positions where n equals the length of value.
- // The string value was then copied to the beginning of stringbuffer
-
- prepend(value, _tcslen(value));
- }
-
- void StringBuffer::prepend(const TCHAR* value, const size_t prependedLength) {
- //Func - Puts a copy of the string value in front of the string in the StringBuffer
- //Pre - value != NULL
- // prependedLength contains the length of the string value which is to be prepended
- //Post - A copy of the string value is has been in front of the string in buffer
- //todo: something is wrong with this code, i'm sure... it only grows (and therefore moves if the buffer is to small)
- //Check if the current buffer length is sufficient to have the string value prepended
- if (prependedLength + len + 1 > bufferLength){
- //Have the size of the current string buffer increased because it is too small
- //Because prependedLength is passed as the second argument to growBuffer,
- //growBuffer will have left the first prependedLength characters empty
- //when it recopied buffer during reallocation.
- growBuffer(prependedLength + len + 1, prependedLength);
- }
-
- //Copy the string value into the buffer at postion 0
- _tcsncpy(buffer, value, prependedLength);
- //Add the length of the copied string to len to reflect the new length of the string in
- //the buffer (Note: len is not the bufferlength!)
- len += prependedLength;
- }
-
- int32_t StringBuffer::length() const{
- //Func - Returns the length of the string in the StringBuffer
- //Pre - true
- //Post - The length len of the string in the buffer has been returned
-
- return len;
- }
- TCHAR* StringBuffer::toString(){
- //Func - Returns a copy of the current string in the StringBuffer sized equal to the length of the string
- // in the StringBuffer.
- //Pre - true
- //Post - The copied string has been returned
-
- //Instantiate a buffer equal to the length len + 1
- TCHAR* ret = _CL_NEWARRAY(TCHAR,len + 1);
- if (ret){
- //Copy the string in buffer
- _tcsncpy(ret, buffer, len);
- //terminate the string
- ret[len] = '\0';
- }
- //return the the copy
- return ret;
- }
- TCHAR* StringBuffer::getBuffer() {
- //Func - '\0' terminates the buffer and returns its pointer
- //Pre - true
- //Post - buffer has been '\0' terminated and returned
-
- // Check if the current buffer is '\0' terminated
- if (len == bufferLength){
- //Make space for terminator, if necessary.
- growBuffer(len + 1);
- }
- //'\0' buffer so it can be returned properly
- buffer[len] = '\0';
-
- return buffer;
- }
-
- void StringBuffer::reserve(const int32_t size){
- if ( bufferLength >= size )
- return;
- bufferLength = size;
-
- //Allocate a new buffer of length bufferLength
- TCHAR* tmp = _CL_NEWARRAY(TCHAR,bufferLength);
- _tcsncpy(tmp, buffer, len);
- tmp[len] = '\0';
-
- //destroy the old buffer
- if (buffer){
- _CLDELETE_CARRAY(buffer);
- }
- //Assign the new buffer tmp to buffer
- buffer = tmp;
- }
-
- void StringBuffer::growBuffer(const int32_t minLength) {
- //Func - Has the buffer grown to a minimum length of minLength or bigger
- //Pre - minLength >= len + 1
- //Post - The buffer has been grown to a minimum length of minLength or bigger
-
- growBuffer(minLength, 0);
- }
- void StringBuffer::growBuffer(const int32_t minLength, const int32_t skippingNInitialChars) {
- //Func - Has the buffer grown to a minimum length of minLength or bigger and shifts the
- // current string in buffer by skippingNInitialChars forward
- //Pre - After growth, must have at least enough room for contents + terminator so
- // minLength >= skippingNInitialChars + len + 1
- // skippingNInitialChars >= 0
- //Post - The buffer has been grown to a minimum length of minLength or bigger and
- // if skippingNInitialChars > 0, the contents of the buffer has beeen shifted
- // forward by skippingNInitialChars positions as the buffer is reallocated,
- // leaving the first skippingNInitialChars uninitialized (presumably to be
- // filled immediately thereafter by the caller).
-
- CND_PRECONDITION (skippingNInitialChars >= 0, "skippingNInitialChars is less than zero");
- CND_PRECONDITION (minLength >= skippingNInitialChars + len + 1,"skippingNInitialChars is not large enough");
-
- //More aggressive growth strategy to offset smaller default buffer size:
- if ( !bufferOwner ){
- if ( bufferLength<minLength )
- _CLTHROWA(CL_ERR_IllegalArgument,"[StringBuffer::grow] un-owned buffer could not be grown");
- return;
- }
-
- bufferLength *= 2;
- //Check that bufferLength is bigger than minLength
- if (bufferLength < minLength){
- //Have bufferLength become minLength because it still was too small
- bufferLength = minLength;
- }
-
- //Allocate a new buffer of length bufferLength
- TCHAR* tmp = _CL_NEWARRAY(TCHAR,bufferLength);
- //The old buffer might not have been null-terminated, so we _tcsncpy
- //only len bytes, not len+1 bytes (the latter might read one char off the
- //end of the old buffer), then apply the terminator to the new buffer.
- _tcsncpy(tmp + skippingNInitialChars, buffer, len);
- tmp[skippingNInitialChars + len] = '\0';
-
- //destroy the old buffer
- if (buffer){
- _CLDELETE_CARRAY(buffer);
- }
- //Assign the new buffer tmp to buffer
- buffer = tmp;
- }
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.h b/src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.h
deleted file mode 100644
index 505b57594..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/StringBuffer.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_StringBuffer_
-#define _lucene_util_StringBuffer_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-
-CL_NS_DEF(util)
- class StringBuffer:LUCENE_BASE{
- public:
- ///Constructor. Allocates a buffer with the default length.
- StringBuffer();
- ///Constructor. Allocates a buffer of length initSize + 1
- StringBuffer(const int32_t initSize);
- ///Constructor. Creates an instance of Stringbuffer containing a copy of
- ///the string value
- StringBuffer(const TCHAR* value);
- ///Constructs a StringBuffer using another buffer. The StringBuffer can
- ///the be used to easily manipulate the buffer.
- StringBuffer(TCHAR* buf,int32_t maxlen, const bool consumeBuffer);
- ///Destructor
- ~StringBuffer();
- ///Clears the Stringbuffer and resets it to it default empty state
- void clear();
-
- ///Appends a single character
- void appendChar(const TCHAR chr);
- ///Appends a copy of the string value
- void append(const TCHAR* value);
- ///Appends a copy of the string value
- void append(const TCHAR* value, size_t appendedLength);
- ///Appends an integer (after conversion to a character string)
- void appendInt(const int32_t value);
- ///Appends a qreal (after conversion to a character string)
- void appendFloat(const qreal value, const int32_t digits);
- ///Puts a copy of the string value in front of the current string in the StringBuffer
- void prepend(const TCHAR* value);
- ///Puts a copy of the string value in front of the current string in the StringBuffer
- void prepend(const TCHAR* value, size_t prependedLength);
-
- ///Contains the length of string in the StringBuffer
- ///Public so that analyzers can edit the length directly
- int32_t len;
- ///Returns the length of the string in the StringBuffer
- int32_t length() const;
- ///Returns a copy of the current string in the StringBuffer
- TCHAR* toString();
- ///Returns a null terminated reference to the StringBuffer's text
- TCHAR* getBuffer();
-
-
- ///reserve a minimum amount of data for the buffer.
- ///no change made if the buffer is already longer than length
- void reserve(const int32_t length);
- private:
- ///A buffer that contains strings
- TCHAR* buffer;
- ///The length of the buffer
- int32_t bufferLength;
- bool bufferOwner;
-
- ///Has the buffer grown to a minimum length of minLength or bigger
- void growBuffer(const int32_t minLength);
- ///Has the buffer grown to a minimum length of minLength or bigger and shifts the
- ///current string in buffer by skippingNInitialChars forward
- void growBuffer(const int32_t minLength, const int32_t skippingNInitialChars);
-
- };
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.cpp
deleted file mode 100644
index cb7a889d1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "StringIntern.h"
-CL_NS_DEF(util)
-
- __wcsintrntype::iterator wblank;
- bool blanksinitd=false;
- __wcsintrntype CLStringIntern::stringPool(true);
- __strintrntype CLStringIntern::stringaPool(true);
- DEFINE_MUTEX(CLStringIntern::THIS_LOCK)
-
- void CLStringIntern::shutdown(){
- #ifdef _DEBUG
- SCOPED_LOCK_MUTEX(THIS_LOCK)
- if ( stringaPool.size() > 0 ){
- printf("ERROR: stringaPool still contains intern'd strings (refcounts):\n");
- __strintrntype::iterator itr = stringaPool.begin();
- while ( itr != stringaPool.end() ){
- printf(" %s (%d)\n",(itr->first), (itr->second));
- ++itr;
- }
- }
-
- if ( stringPool.size() > 0 ){
- printf("ERROR: stringPool still contains intern'd strings (refcounts):\n");
- __wcsintrntype::iterator itr = stringPool.begin();
- while ( itr != stringPool.end() ){
- _tprintf(_T(" %s (%d)\n"),(itr->first), (itr->second));
- ++itr;
- }
- }
- #endif
- }
-
- const TCHAR* CLStringIntern::intern(const TCHAR* str CL_FILELINEPARAM){
- if ( str == NULL )
- return NULL;
- if ( str[0] == 0 )
- return LUCENE_BLANK_STRING;
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- __wcsintrntype::iterator itr = stringPool.find(str);
- if ( itr==stringPool.end() ){
-#ifdef _UCS2
- TCHAR* ret = lucenewcsdup(str CL_FILELINEREF);
-#else
- TCHAR* ret = lucenestrdup(str CL_FILELINEREF);
-#endif
- stringPool[ret]= 1;
- return ret;
- }else{
- (itr->second)++;
- return itr->first;
- }
- }
-
- bool CLStringIntern::unintern(const TCHAR* str){
- if ( str == NULL )
- return false;
- if ( str[0] == 0 )
- return false;
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- __wcsintrntype::iterator itr = stringPool.find(str);
- if ( itr != stringPool.end() ){
- if ( (itr->second) == 1 ){
- stringPool.removeitr(itr);
- return true;
- }else
- (itr->second)--;
- }
- return false;
- }
-
- const char* CLStringIntern::internA(const char* str CL_FILELINEPARAM){
- if ( str == NULL )
- return NULL;
- if ( str[0] == 0 )
- return _LUCENE_BLANK_ASTRING;
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- __strintrntype::iterator itr = stringaPool.find(str);
- if ( itr==stringaPool.end() ){
- char* ret = lucenestrdup(str CL_FILELINE);
- stringaPool[ret] = 1;
- return ret;
- }else{
- (itr->second)++;
- return itr->first;
- }
- }
-
- bool CLStringIntern::uninternA(const char* str){
- if ( str == NULL )
- return false;
- if ( str[0] == 0 )
- return false;
-
- SCOPED_LOCK_MUTEX(THIS_LOCK)
-
- __strintrntype::iterator itr = stringaPool.find(str);
- if ( itr!=stringaPool.end() ){
- if ( (itr->second) == 1 ){
- stringaPool.removeitr(itr);
- return true;
- }else
- (itr->second)--;
- }
- return false;
- }
-
- /* removed because of multi-threading problems...
- __wcsintrntype::iterator CLStringIntern::internitr(const TCHAR* str CL_FILELINEPARAM){
- if ( str[0] == 0 ){
- if ( !blanksinitd ){
- CLStringIntern::stringPool.put(LUCENE_BLANK_STRING,1);
- wblank=stringPool.find(str);
- blanksinitd=true;
- }
- return wblank;
- }
- __wcsintrntype::iterator itr = stringPool.find(str);
- if (itr==stringPool.end()){
-#ifdef _UCS2
- TCHAR* ret = lucenewcsdup(str CL_FILELINEREF);
-#else
- TCHAR* ret = lucenestrdup(str CL_FILELINEREF);
-#endif
- stringPool.put(ret,1);
- return stringPool.find(str);
- }else{
- (itr->second)++;
- return itr;
- }
- }
- bool CLStringIntern::uninternitr(__wcsintrntype::iterator itr){
- if ( itr!=stringPool.end() ){
- if ( itr==wblank )
- return false;
- if ( (itr->second) == 1 ){
- stringPool.removeitr(itr);
- return true;
- }else
- (itr->second)--;
- }
- return false;
- }
-*/
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.h b/src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.h
deleted file mode 100644
index ded060c64..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/StringIntern.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_StringIntern_H
-#define _lucene_util_StringIntern_H
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "VoidMap.h"
-CL_NS_DEF(util)
-typedef CL_NS(util)::CLHashMap<const TCHAR*,int,CL_NS(util)::Compare::TChar,CL_NS(util)::Equals::TChar,CL_NS(util)::Deletor::tcArray, CL_NS(util)::Deletor::DummyInt32 > __wcsintrntype;
-typedef CL_NS(util)::CLHashMap<const char*,int,CL_NS(util)::Compare::Char,CL_NS(util)::Equals::Char,CL_NS(util)::Deletor::acArray, CL_NS(util)::Deletor::DummyInt32 > __strintrntype;
-
- /** Functions for intern'ing strings. This
- * is a process of pooling strings thus using less memory,
- * and furthermore allows intern'd strings to be directly
- * compared:
- * string1==string2, rather than _tcscmp(string1,string2)
- */
- class CLStringIntern{
- static __wcsintrntype stringPool;
- static __strintrntype stringaPool;
- STATIC_DEFINE_MUTEX(THIS_LOCK)
- public:
- /**
- * Internalise the specified string.
- * \return Returns a pointer to the internalised string
- */
- static const char* internA(const char* str CL_FILELINEPARAM);
- /**
- * Uninternalise the specified string. Decreases
- * the reference count and frees the string if
- * reference count is zero
- * \returns true if string was destroyed, otherwise false
- */
- static bool uninternA(const char* str);
-
- /**
- * Internalise the specified string.
- * \return Returns a pointer to the internalised string
- */
- static const TCHAR* intern(const TCHAR* str CL_FILELINEPARAM);
-
- /**
- * Uninternalise the specified string. Decreases
- * the reference count and frees the string if
- * reference count is zero
- * \returns true if string was destroyed, otherwise false
- */
- static bool unintern(const TCHAR* str);
-
- static void shutdown();
- };
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.cpp
deleted file mode 100644
index a54c86916..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-#include "CLucene/LuceneThreads.h"
-#include "ThreadLocal.h"
-
-CL_NS_DEF(util)
-
-DEFINE_MUTEX(ThreadLocalBase::ThreadLocalBase_THIS_LOCK)
-
-ThreadLocalBase::ShutdownHooksType ThreadLocalBase::shutdownHooks(false);
-ThreadLocalBase::ThreadLocalsType ThreadLocalBase::threadLocals(false,false);
-
-ThreadLocalBase::ThreadLocalBase(){
-}
-ThreadLocalBase::~ThreadLocalBase(){
-}
-
-void ThreadLocalBase::UnregisterCurrentThread(){
- _LUCENE_THREADID_TYPE id = _LUCENE_CURRTHREADID;
- SCOPED_LOCK_MUTEX(ThreadLocalBase_THIS_LOCK)
-
- ThreadLocalsType::iterator itr = threadLocals.lower_bound(id);
- ThreadLocalsType::iterator end = threadLocals.upper_bound(id);
- while ( itr != end ){
- itr->second->setNull();
- ++itr;
- }
-}
-void ThreadLocalBase::shutdown(){
- SCOPED_LOCK_MUTEX(ThreadLocalBase_THIS_LOCK)
-
- ThreadLocalsType::iterator itr = threadLocals.begin();
- while ( itr != threadLocals.end() ){
- itr->second->setNull();
- ++itr;
- }
-
- ShutdownHooksType::iterator itr2 = shutdownHooks.begin();
- while ( itr2 != shutdownHooks.end() ){
- ShutdownHook* hook = *itr2;
- hook(false);
- }
-}
-void ThreadLocalBase::registerShutdownHook(ShutdownHook* hook){
- SCOPED_LOCK_MUTEX(ThreadLocalBase_THIS_LOCK)
- shutdownHooks.insert(hook);
-}
-
-
-CL_NS_END
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.h b/src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.h
deleted file mode 100644
index f7dc62ab8..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/ThreadLocal.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_ThreadLocal_H
-#define _lucene_util_ThreadLocal_H
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "CLucene/util/VoidMap.h"
-
-CL_NS_DEF(util)
-
-class ThreadLocalBase: LUCENE_BASE{
-public:
- /**
- * A hook called when CLucene is starting or shutting down,
- * this can be used for setting up and tearing down static
- * variables
- */
- typedef void ShutdownHook(bool startup);
-
-protected:
- STATIC_DEFINE_MUTEX(ThreadLocalBase_THIS_LOCK)
- typedef CL_NS(util)::CLMultiMap<_LUCENE_THREADID_TYPE, ThreadLocalBase*,
- CL_NS(util)::CLuceneThreadIdCompare,
- CL_NS(util)::Deletor::ConstNullVal<_LUCENE_THREADID_TYPE>,
- CL_NS(util)::Deletor::ConstNullVal<ThreadLocalBase*> > ThreadLocalsType;
- static ThreadLocalsType threadLocals;
- //todo: using http://en.wikipedia.org/wiki/Thread-local_storage#Pthreads_implementation
- //would work better... but lots of testing would be needed first...
- typedef CL_NS(util)::CLSetList<ShutdownHook*,
- CL_NS(util)::Compare::Void<ShutdownHook>,
- CL_NS(util)::Deletor::ConstNullVal<ShutdownHook*> > ShutdownHooksType;
- static ShutdownHooksType shutdownHooks;
-
- ThreadLocalBase();
-public:
- virtual ~ThreadLocalBase();
-
- /**
- * Call this function to clear the local thread data for this
- * ThreadLocal. Calling set(NULL) does the same thing, except
- * this function is virtual and can be called without knowing
- * the template.
- */
- virtual void setNull() = 0;
-
- /**
- * If you want to clean up thread specific memory, then you should
- * make sure this thread is called when the thread is not going to be used
- * again. This will clean up threadlocal data which can contain quite a lot
- * of data, so if you are creating lots of new threads, then it is a good idea
- * to use this function, otherwise there will be many memory leaks.
- */
- static void UnregisterCurrentThread();
-
- /**
- * Call this function to shutdown CLucene
- */
- static void shutdown();
-
- /**
- * Add this function to the shutdown hook list. This function will be called
- * when CLucene is shutdown.
- */
- static void registerShutdownHook(ShutdownHook* hook);
-};
-
-template<typename T,typename _deletor>
-class ThreadLocal: public ThreadLocalBase{
- typedef CL_NS(util)::CLSet<_LUCENE_THREADID_TYPE, T,
- CL_NS(util)::CLuceneThreadIdCompare,
- CL_NS(util)::Deletor::ConstNullVal<_LUCENE_THREADID_TYPE>,
- _deletor > LocalsType;
- LocalsType locals;
- DEFINE_MUTEX(locals_LOCK)
-public:
- ThreadLocal();
- ~ThreadLocal();
- T get();
- void setNull();
- void set(T t);
-};
-
-template<typename T,typename _deletor>
-ThreadLocal<T,_deletor>::ThreadLocal():
- locals(false,true)
-{
- //add this object to the base's list of threadlocals to be
- //notified in case of UnregisterThread()
- _LUCENE_THREADID_TYPE id = _LUCENE_CURRTHREADID;
- SCOPED_LOCK_MUTEX(ThreadLocalBase_THIS_LOCK)
- threadLocals.insert( CL_NS_STD(pair)<const _LUCENE_THREADID_TYPE, ThreadLocalBase*>(id, this) );
-}
-
-template<typename T,typename _deletor>
-ThreadLocal<T,_deletor>::~ThreadLocal(){
- //remove this object to the base's list of threadlocals
- _LUCENE_THREADID_TYPE id = _LUCENE_CURRTHREADID;
- SCOPED_LOCK_MUTEX(ThreadLocalBase_THIS_LOCK)
-
- //remove all the thread local data for this object
- locals.clear();
-
- //remove this object from the ThreadLocalBase threadLocal list
- ThreadLocalsType::iterator itr = threadLocals.lower_bound(id);
- ThreadLocalsType::iterator end = threadLocals.upper_bound(id);
- while ( itr != end ){
- if ( itr->second == this){
- threadLocals.erase(itr);
- break;
- }
- ++itr;
- }
-}
-
-template<typename T,typename _deletor>
-T ThreadLocal<T,_deletor>::get(){
- return locals.get(_LUCENE_CURRTHREADID);
-}
-
-template<typename T,typename _deletor>
-void ThreadLocal<T,_deletor>::setNull(){
- set(NULL);
-}
-
-template<typename T,typename _deletor>
-void ThreadLocal<T,_deletor>::set(T t){
- _LUCENE_THREADID_TYPE id = _LUCENE_CURRTHREADID;
- locals.remove(id);
- if ( t != NULL )
- locals.insert( CL_NS_STD(pair)<const _LUCENE_THREADID_TYPE,T>(id, t) );
-}
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/VoidList.h b/src/assistant/3rdparty/clucene/src/CLucene/util/VoidList.h
deleted file mode 100644
index b31baba8a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/VoidList.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_VoidList_
-#define _lucene_util_VoidList_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#include "Equators.h"
-
-CL_NS_DEF(util)
-
-/**
-* A template to encapsulate various list type classes
-* @internal
-*/
-template<typename _kt,typename base,typename _valueDeletor>
-class __CLList:public base,LUCENE_BASE {
-private:
- bool dv;
-public:
- DEFINE_MUTEX(THIS_LOCK)
-
- typedef typename base::const_iterator const_iterator;
- typedef typename base::iterator iterator;
-
- virtual ~__CLList(){
- clear();
- }
-
- __CLList ( const bool deleteValue ):
- dv(deleteValue)
- {
- }
-
- void setDoDelete(bool val){ dv=val; }
-
- //sets array to the contents of this array.
- //array must be size+1, otherwise memory may be overwritten
- void toArray(_kt* into) const{
- int i=0;
- for ( const_iterator itr=base::begin();itr!=base::end();itr++ ){
- into[i] = *itr;
- i++;
- }
- into[i] = NULL;
- }
-
- void set(int32_t i, _kt val) {
- if ( dv )
- _valueDeletor::doDelete((*this)[i]);
- (*this)[i] = val;
- }
-
- //todo: check this
- void delete_back(){
- if ( base::size() > 0 ){
- iterator itr = base::end();
- if ( itr != base::begin())
- itr --;
- _kt key = *itr;
- base::erase(itr);
- if ( dv )
- _valueDeletor::doDelete(key);
- }
- }
-
- void delete_front(){
- if ( base::size() > 0 ){
- iterator itr = base::begin();
- _kt key = *itr;
- base::erase(itr);
- if ( dv )
- _valueDeletor::doDelete(key);
- }
- }
-
- void clear(){
- if ( dv ){
- iterator itr = base::begin();
- while ( itr != base::end() ){
- _valueDeletor::doDelete(*itr);
- ++itr;
- }
- }
- base::clear();
- }
-
- void remove(int32_t i, bool dontDelete=false){
- iterator itr=base::begin();
- itr+=i;
- _kt key = *itr;
- base::erase( itr );
- if ( dv && !dontDelete )
- _valueDeletor::doDelete(key);
- }
- void remove(iterator itr, bool dontDelete=false){
- _kt key = *itr;
- base::erase( itr );
- if ( dv && !dontDelete )
- _valueDeletor::doDelete(key);
- }
-
-};
-
-//growable arrays of Objects (like a collection or list)
-//a list, so can contain duplicates
-//it grows in chunks... todo: check jlucene for initial size of array, and growfactors
-template<typename _kt, typename _valueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLVector:public __CLList<_kt, CL_NS_STD(vector)<_kt> , _valueDeletor>
-{
-public:
- CLVector ( const bool deleteValue=true ):
- __CLList<_kt, CL_NS_STD(vector)<_kt> , _valueDeletor>(deleteValue)
- {
- }
-};
-
-//An array-backed implementation of the List interface
-//a list, so can contain duplicates
-//*** a very simple list - use <valarray>
-//(This class is roughly equivalent to Vector, except that it is unsynchronized.)
-#define CLArrayList CLVector
-#define CLHashSet CLHashList
-
-//implementation of the List interface, provides access to the first and last list elements in O(1)
-//no comparator is required... and so can contain duplicates
-//a simple list with no comparator
-//*** a very simple list - use <list>
-#ifdef LUCENE_DISABLE_HASHING
- #define CLHashList CLSetList
-#else
-
-template<typename _kt,
- typename _Comparator=CL_NS(util)::Compare::TChar,
- typename _valueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLHashList:public __CLList<_kt, CL_NS_HASHING(hash_set)<_kt,_Comparator> , _valueDeletor>
-{
-public:
- CLHashList ( const bool deleteValue=true ):
- __CLList<_kt, CL_NS_HASHING(hash_set)<_kt,_Comparator> , _valueDeletor>(deleteValue)
- {
- }
-};
-#endif
-
-template<typename _kt, typename _valueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLLinkedList:public __CLList<_kt, CL_NS_STD(list)<_kt> , _valueDeletor>
-{
-public:
- CLLinkedList ( const bool deleteValue=true ):
- __CLList<_kt, CL_NS_STD(list)<_kt> , _valueDeletor>(deleteValue)
- {
- }
-};
-template<typename _kt,
- typename _Comparator=CL_NS(util)::Compare::TChar,
- typename _valueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLSetList:public __CLList<_kt, CL_NS_STD(set)<_kt,_Comparator> , _valueDeletor>
-{
-public:
- CLSetList ( const bool deleteValue=true ):
- __CLList<_kt, CL_NS_STD(set)<_kt,_Comparator> , _valueDeletor>(deleteValue)
- {
- }
-};
-
-CL_NS_END
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/VoidMap.h b/src/assistant/3rdparty/clucene/src/CLucene/util/VoidMap.h
deleted file mode 100644
index 9e23e03aa..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/VoidMap.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef _lucene_util_VoidMap_
-#define _lucene_util_VoidMap_
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-
-CL_NS_DEF(util)
-
-/**
-* A template to encapsulate various map type classes
-* @internal
-*/
-template<typename _kt, typename _vt,
- typename base,
- typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
- typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
-class __CLMap: public base, LUCENE_BASE {
-private:
- bool dk;
- bool dv;
-public:
- DEFINE_MUTEX(THIS_LOCK)
-
- typedef typename base::iterator iterator;
- typedef typename base::const_iterator const_iterator;
- typedef CL_NS_STD(pair)<_kt, _vt> _pair;
-
- ///Default constructor for the __CLMap
- __CLMap ():
- dk(true),
- dv(true)
- {
- }
-
- ///Deconstructor for the __CLMap
- ~__CLMap (){
- clear();
- }
-
- void setDeleteKey(bool val){ dk = val; }
- void setDeleteValue(bool val){ dv = val; }
-
- ///Construct the VoidMap and set the deleteTypes to the specified values
- ///\param deleteKey if true then the key variable is deleted when an object is deleted
- ///\param keyDelType delete the key variable using the specified type
- ///\param deleteValue if true then the value variable is deleted when an object is deleted
- ///\param valueDelType delete the value variable using the specified type
- /*__CLMap ( const bool deleteKey, const bool deleteValue ):
- dk(deleteKey),
- dv(deleteValue)
- {
- }*/
-
- ///checks to see if the specified key exists
- ///\param k the key to check for
- ///\returns true if the key exists
- bool exists(_kt k)const{
- const_iterator itr = base::find(k);
- bool ret = itr!=base::end();
- return ret;
- }
-
- ///put the specified pair into the map. remove any old items first
- ///\param k the key
- ///\param v the value
- void put(_kt k,_vt v){
- //todo: check if this is always right!
- //must should look through code, for
- //cases where map is not unique!!!
- if ( dk || dv )
- remove(k);
-
- //todo: replacing the old item might be quicker...
-
- base::insert(_pair(k,v));
- }
-
-
- ///using a non-const key, get a non-const value
- _vt get( _kt k) const {
- const_iterator itr = base::find(k);
- if ( itr==base::end() )
- return _vt();
- else
- return itr->second;
- }
- ///using a non-const key, get the actual key
- _kt getKey( _kt k) const {
- const_iterator itr = base::find(k);
- if ( itr==base::end() )
- return _kt();
- else
- return itr->first;
- }
-
- void removeitr (iterator itr, const bool dontDeleteKey = false, const bool dontDeleteValue = false){
- //delete key&val first. This prevents potential loops (deleting object removes itself)
- _kt key = itr->first;
- _vt val = itr->second;
- base::erase(itr);
-
- //keys & vals need to be deleted after erase, because the hashvalue is still needed
- if ( dk && !dontDeleteKey )
- _KeyDeletor::doDelete(key);
- if ( dv && !dontDeleteValue )
- _ValueDeletor::doDelete(val);
- }
- ///delete and optionally delete the specified key and associated value
- void remove(_kt key, const bool dontDeleteKey = false, const bool dontDeleteValue = false){
- iterator itr = base::find(key);
- if ( itr!=base::end() )
- removeitr(itr,dontDeleteKey,dontDeleteValue);
- }
-
- ///clear all keys and values in the map
- void clear(){
- if ( dk || dv ){
- iterator itr = base::begin();
- while ( itr!=base::end() ){
- #ifdef _CL_HAVE_EXT_HASH_MAP
- removeitr(itr);
- itr = base::begin();
-
- #else
- if ( dk )
- _KeyDeletor::doDelete(itr->first);
- if ( dv )
- _ValueDeletor::doDelete(itr->second);
- ++itr;
-
- #endif
- }
- }
- base::clear();
- }
-};
-
-// makes no guarantees as to the order of the map
-// cannot contain duplicate keys; each key can map to at most one value
-#define CLHashtable CLHashMap
-
-#if defined(_CL_HAVE_GOOGLE_DENSE_HASH_MAP)
-//do nothing
-#elif defined(LUCENE_DISABLE_HASHING)
-
- //a CLSet with CLHashMap traits
-template<typename _kt, typename _vt,
- typename CL_Compare,
- typename _EqualDummy,
- typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
- typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLHashMap:public __CLMap<_kt,_vt,
- CL_NS_STD(map)<_kt,_vt, CL_Compare>,
- _KeyDeletor,_ValueDeletor>
-{
- typedef typename CL_NS_STD(map)<_kt,_vt,CL_Compare> _base;
- typedef __CLMap<_kt, _vt, CL_NS_STD(map)<_kt,_vt, CL_Compare>,
- _KeyDeletor,_ValueDeletor> _this;
-public:
- CLHashMap ( const bool deleteKey=false, const bool deleteValue=false )
- {
- _this::setDeleteKey(deleteKey);
- _this::setDeleteValue(deleteValue);
- }
-};
-#elif defined(_CL_HAVE_EXT_HASH_MAP)
- //ext/hash_map syntax
-//HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized
-template<typename _kt, typename _vt,
- typename _Hasher,
- typename _Equals,
- typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
- typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLHashMap:public __CLMap<_kt,_vt,
- CL_NS_HASHING(hash_map)<_kt,_vt, _Hasher,_Equals>,
- _KeyDeletor,_ValueDeletor>
-{
- typedef __CLMap<_kt,_vt, CL_NS_HASHING(hash_map)<_kt,_vt, _Hasher,_Equals>,
- _KeyDeletor,_ValueDeletor> _this;
-public:
- CLHashMap ( const bool deleteKey=false, const bool deleteValue=false )
- {
- _this::setDeleteKey(deleteKey);
- _this::setDeleteValue(deleteValue);
- }
-};
-
-#else
-//HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized
-template<typename _kt, typename _vt,
- typename _Hasher,
- typename _Equals,
- typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
- typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLHashMap:public __CLMap<_kt,_vt,
- CL_NS_HASHING(hash_map)<_kt,_vt, _Hasher>,
- _KeyDeletor,_ValueDeletor>
-{
- typedef __CLMap<_kt,_vt, CL_NS_HASHING(hash_map)<_kt,_vt, _Hasher>,
- _KeyDeletor,_ValueDeletor> _this;
-public:
- CLHashMap ( const bool deleteKey=false, const bool deleteValue=false )
- {
- _this::setDeleteKey(deleteKey);
- _this::setDeleteValue(deleteValue);
- }
-};
-#endif
-
-//A collection that contains no duplicates
-//does not guarantee that the order will remain constant over time
-template<typename _kt, typename _vt,
- typename CL_Compare,
- typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
- typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLSet:public __CLMap<_kt,_vt,
- CL_NS_STD(map)<_kt,_vt, CL_Compare>,
- _KeyDeletor,_ValueDeletor>
-{
- typedef typename CL_NS_STD(map)<_kt,_vt,CL_Compare> _base;
- typedef __CLMap<_kt, _vt, CL_NS_STD(map)<_kt,_vt, CL_Compare>,
- _KeyDeletor,_ValueDeletor> _this;
-public:
- CLSet ( const bool deleteKey=false, const bool deleteValue=false )
- {
- _this::setDeleteKey(deleteKey);
- _this::setDeleteValue(deleteValue);
- }
-};
-
-
-//A collection that can contains duplicates
-template<typename _kt, typename _vt,
- typename CL_Compare,
- typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
- typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
-class CLMultiMap:public __CLMap<_kt,_vt,
- CL_NS_STD(multimap)<_kt,_vt>,
- _KeyDeletor,_ValueDeletor>
-{
- typedef typename CL_NS_STD(multimap)<_kt,_vt> _base;
- typedef __CLMap<_kt, _vt, CL_NS_STD(multimap)<_kt,_vt>,
- _KeyDeletor,_ValueDeletor> _this;
-public:
- CLMultiMap ( const bool deleteKey=false, const bool deleteValue=false )
- {
- _this::setDeleteKey(deleteKey);
- _this::setDeleteValue(deleteValue);
- }
-};
-
-
-//*** need to create a class that allows duplicates - use <set>
-//#define CLSet __CLMap
-CL_NS_END
-
-#ifdef _CL_HAVE_GOOGLE_DENSE_HASH_MAP
-#include "GoogleSparseMap.h"
-#endif
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/bufferedstream.h b/src/assistant/3rdparty/clucene/src/CLucene/util/bufferedstream.h
deleted file mode 100644
index d905955b1..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/bufferedstream.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Jos van den Oever
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-/* This file is part of Strigi Desktop Search
- *
- * Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef BUFFEREDSTREAM_H
-#define BUFFEREDSTREAM_H
-
-#include "streambase.h"
-#include "inputstreambuffer.h"
-
-#include <cassert>
-#include <stdio.h>
-
-namespace jstreams {
-
-template <class T>
-class BufferedInputStream : public StreamBase<T> {
-private:
- bool finishedWritingToBuffer;
- InputStreamBuffer<T> buffer;
-
- void writeToBuffer(int32_t minsize);
- int32_t read_(const T*& start, int32_t min, int32_t max);
-protected:
- /**
- * This function must be implemented by the subclasses.
- * It should write a maximum of @p space characters at the buffer
- * position pointed to by @p start. If no more data is available due to
- * end of file, -1 should be returned. If an error occurs, the status
- * should be set to Error, an error message should be set and the function
- * must return -1.
- **/
- virtual int32_t fillBuffer(T* start, int32_t space) = 0;
- // this function might be useful if you want to reuse a bufferedstream
- void resetBuffer() {printf("implement 'resetBuffer'\n");}
- BufferedInputStream<T>();
-public:
- int32_t read(const T*& start, int32_t min, int32_t max);
- int64_t reset(int64_t);
- virtual int64_t skip(int64_t ntoskip);
-};
-
-template <class T>
-BufferedInputStream<T>::BufferedInputStream() {
- finishedWritingToBuffer = false;
-}
-
-template <class T>
-void
-BufferedInputStream<T>::writeToBuffer(int32_t ntoread) {
- int32_t missing = ntoread - buffer.avail;
- int32_t nwritten = 0;
- while (missing > 0 && nwritten >= 0) {
- int32_t space;
- space = buffer.makeSpace(missing);
- T* start = buffer.readPos + buffer.avail;
- nwritten = fillBuffer(start, space);
- assert(StreamBase<T>::status != Eof);
- if (nwritten > 0) {
- buffer.avail += nwritten;
- missing = ntoread - buffer.avail;
- }
- }
- if (nwritten < 0) {
- finishedWritingToBuffer = true;
- }
-}
-template <class T>
-int32_t
-BufferedInputStream<T>::read(const T*& start, int32_t min, int32_t max) {
- if (StreamBase<T>::status == Error) return -2;
- if (StreamBase<T>::status == Eof) return -1;
-
- // do we need to read data into the buffer?
- if (!finishedWritingToBuffer && min > buffer.avail) {
- // do we have enough space in the buffer?
- writeToBuffer(min);
- if (StreamBase<T>::status == Error) return -2;
- }
-
- int32_t nread = buffer.read(start, max);
-
- BufferedInputStream<T>::position += nread;
- if (BufferedInputStream<T>::position > BufferedInputStream<T>::size
- && BufferedInputStream<T>::size > 0) {
- // error: we read more than was specified in size
- // this is an error because all dependent code might have been labouring
- // under a misapprehension
- BufferedInputStream<T>::status = Error;
- BufferedInputStream<T>::error = "Stream is longer than specified.";
- nread = -2;
- } else if (BufferedInputStream<T>::status == Ok && buffer.avail == 0
- && finishedWritingToBuffer) {
- BufferedInputStream<T>::status = Eof;
- if (BufferedInputStream<T>::size == -1) {
- BufferedInputStream<T>::size = BufferedInputStream<T>::position;
- }
- // save one call to read() by already returning -1 if no data is there
- if (nread == 0) nread = -1;
- }
- return nread;
-}
-template <class T>
-int64_t
-BufferedInputStream<T>::reset(int64_t newpos) {
- if (StreamBase<T>::status == Error) return -2;
- // check to see if we have this position
- int64_t d = BufferedInputStream<T>::position - newpos;
- if (buffer.readPos - d >= buffer.start && -d < buffer.avail) {
- BufferedInputStream<T>::position -= d;
- buffer.avail += (int32_t)d;
- buffer.readPos -= d;
- StreamBase<T>::status = Ok;
- }
- return StreamBase<T>::position;
-}
-template <class T>
-int64_t
-BufferedInputStream<T>::skip(int64_t ntoskip) {
- const T *begin;
- int32_t nread;
- int64_t skipped = 0;
- while (ntoskip) {
- int32_t step = (int32_t)((ntoskip > buffer.size) ?buffer.size :ntoskip);
- nread = read(begin, 1, step);
- if (nread <= 0) {
- return skipped;
- }
- ntoskip -= nread;
- skipped += nread;
- }
- return skipped;
-}
-}
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/dirent.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/dirent.cpp
deleted file mode 100644
index 3c5c54200..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/dirent.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Matt J. Weinstein
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#include "CLucene/StdHeader.h"
-
-#if !defined(_CL_HAVE_DIRENT_H) && !defined(_CL_HAVE_SYS_NDIR_H) && !defined(_CL_HAVE_SYS_DIR_H) && !defined(_CL_HAVE_NDIR_H)
-#include "dirent.h"
-
-DIR *
-opendir (const char *szPath)
-{
- DIR *nd;
- char szFullPath[CL_MAX_PATH];
-
- errno = 0;
-
- if (!szPath)
- {
- errno = EFAULT;
- return NULL;
- }
-
- if (szPath[0] == '\0')
- {
- errno = ENOTDIR;
- return NULL;
- }
-
- /* Attempt to determine if the given path really is a directory. */
- struct _stat rcs;
- if ( _stat(szPath,&rcs) == -1)
- {
- /* call GetLastError for more error info */
- errno = ENOENT;
- return NULL;
- }
- if (!(rcs.st_mode & _S_IFDIR))
- {
- /* Error, entry exists but not a directory. */
- errno = ENOTDIR;
- return NULL;
- }
-
- /* Make an absolute pathname. */
- _realpath(szPath,szFullPath);
-
- /* Allocate enough space to store DIR structure and the complete
- * directory path given. */
- //nd = (DIR *) malloc (sizeof (DIR) + _tcslen (szFullPath) + _tcslen (DIRENT_SLASH) +
- // _tcslen (DIRENT_SEARCH_SUFFIX)+1);
- nd = new DIR;
-
- if (!nd)
- {
- /* Error, out of memory. */
- errno = ENOMEM;
- return NULL;
- }
-
- /* Create the search expression. */
- strcpy (nd->dd_name, szFullPath);
-
- /* Add on a slash if the path does not end with one. */
- if (nd->dd_name[0] != '\0' &&
- nd->dd_name[strlen (nd->dd_name) - 1] != '/' &&
- nd->dd_name[strlen (nd->dd_name) - 1] != '\\')
- {
- strcat (nd->dd_name, DIRENT_SLASH);
- }
-
- /* Add on the search pattern */
- strcat (nd->dd_name, DIRENT_SEARCH_SUFFIX);
-
- /* Initialize handle to -1 so that a premature closedir doesn't try
- * to call _findclose on it. */
- nd->dd_handle = -1;
-
- /* Initialize the status. */
- nd->dd_stat = 0;
-
- /* Initialize the dirent structure. ino and reclen are invalid under
- * Win32, and name simply points at the appropriate part of the
- * findfirst_t structure. */
- //nd->dd_dir.d_ino = 0;
- //nd->dd_dir.d_reclen = 0;
- nd->dd_dir.d_namlen = 0;
- nd->dd_dir.d_name = nd->dd_dta.name;
-
- return nd;
-}
-
-
-struct dirent * readdir (DIR * dirp)
-{
- errno = 0;
-
- /* Check for valid DIR struct. */
- if (!dirp)
- {
- errno = EFAULT;
- return NULL;
- }
-
- if (dirp->dd_dir.d_name != dirp->dd_dta.name)
- {
- /* The structure does not seem to be set up correctly. */
- errno = EINVAL;
- return NULL;
- }
-
- bool bCallFindNext = true;
-
- if (dirp->dd_stat < 0)
- {
- /* We have already returned all files in the directory
- * (or the structure has an invalid dd_stat). */
- return NULL;
- }
- else if (dirp->dd_stat == 0)
- {
- /* We haven't started the search yet. */
- /* Start the search */
- dirp->dd_handle = _findfirst (dirp->dd_name, &(dirp->dd_dta));
-
- if (dirp->dd_handle == -1)
- {
- /* Whoops! Seems there are no files in that
- * directory. */
- dirp->dd_stat = -1;
- }
- else
- {
- dirp->dd_stat = 1;
- }
-
- /* Dont call _findnext first time. */
- bCallFindNext = false;
- }
-
- while (dirp->dd_stat > 0)
- {
- if (bCallFindNext)
- {
- /* Get the next search entry. */
- if (_findnext (dirp->dd_handle, &(dirp->dd_dta)))
- {
- /* We are off the end or otherwise error. */
- _findclose (dirp->dd_handle);
- dirp->dd_handle = -1;
- dirp->dd_stat = -1;
- return NULL;
- }
- else
- {
- /* Update the status to indicate the correct
- * number. */
- dirp->dd_stat++;
- }
- }
-
- /* Successfully got an entry. Everything about the file is
- * already appropriately filled in except the length of the
- * file name. */
- dirp->dd_dir.d_namlen = strlen (dirp->dd_dir.d_name);
-
- bool bThisFolderOrUpFolder = dirp->dd_dir.d_name[0] == '.' &&
- (dirp->dd_dir.d_name[1] == 0 || (dirp->dd_dir.d_name[1] == '.' && dirp->dd_dir.d_name[2] == 0));
-
- if (!bThisFolderOrUpFolder)
- {
- struct _stat buf;
- char buffer[CL_MAX_DIR];
- size_t bl = strlen(dirp->dd_name)-strlen(DIRENT_SEARCH_SUFFIX);
- strncpy(buffer,dirp->dd_name,bl);
- buffer[bl]=0;
- strcat(buffer, dirp->dd_dir.d_name);
- if ( _stat(buffer,&buf) == 0 )
- {
- /* Finally we have a valid entry. */
- return &dirp->dd_dir;
- }
- }
-
- /* Allow to find next file. */
- bCallFindNext = true;
- }
-
- return NULL;
-}
-
-
-
-int32_t
-closedir (DIR * dirp)
-{
- int32_t rc;
-
- errno = 0;
- rc = 0;
-
- if (!dirp)
- {
- errno = EFAULT;
- return -1;
- }
-
- if (dirp->dd_handle != -1)
- {
- rc = _findclose (dirp->dd_handle);
- }
-
- /* Delete the dir structure. */
- _CLVDELETE(dirp);
-
- return rc;
-}
-#endif //HAVE_DIRENT_H
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/dirent.h b/src/assistant/3rdparty/clucene/src/CLucene/util/dirent.h
deleted file mode 100644
index 71cd34c0a..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/dirent.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Matt J. Weinstein
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-#ifndef lucene_util_dirent_H
-#define lucene_util_dirent_H
-
-#if defined(_LUCENE_PRAGMA_ONCE)
-# pragma once
-#endif
-
-#if !defined(_CL_HAVE_DIRENT_H) && !defined(_CL_HAVE_SYS_NDIR_H) && !defined(_CL_HAVE_SYS_DIR_H) && !defined(_CL_HAVE_NDIR_H)
-
-/**
-\unit
- * dirent.c
- *
- * Derived from DIRLIB.C by Matt J. Weinstein
- * This note appears in the DIRLIB.H
- * DIRLIB.H by M. J. Weinstein Released to public domain 1-Jan-89
- *
- * Updated by Jeremy Bettis <jeremy@hksys.com>
- * Significantly revised and rewinddir, seekdir and telldir added by Colin
- * Cut down again & changed by Ben van Klinken
- * Peters <colin@fu.is.saga-u.ac.jp>
- *
- */
-
-/** dirent structure - used by the dirent.h directory iteration functions */
-struct dirent
-{
- unsigned short d_namlen; /* Length of name in d_name. */
- char *d_name; /* File name. */
-};
-
-/** DIR structure - used by the dirent.h directory iteration functions*/
-struct DIR
-{
- /** disk transfer area for this dir */
- struct _finddata_t dd_dta;
-
- /* dirent struct to return from dir (NOTE: this makes this thread
- * safe as long as only one thread uses a particular DIR struct at
- * a time) */
- struct dirent dd_dir;
-
- /** _findnext handle */
- intptr_t dd_handle;
-
- /**
- * Status of search:
- * 0 = not started yet (next entry to read is first entry)
- * -1 = off the end
- * positive = 0 based index of next entry
- */
- int32_t dd_stat;
-
- /** given path for dir with search pattern (struct is extended) */
- char dd_name[CL_MAX_DIR];
-
-};
-
-#define DIRENT_SEARCH_SUFFIX "*"
-#define DIRENT_SLASH PATH_DELIMITERA
-
-
-/**
-* Returns a pointer to a DIR structure appropriately filled in to begin
-* searching a directory.
-*/
-DIR* opendir (const char* filespec);
-
-/**
-* Return a pointer to a dirent structure filled with the information on the
-* next entry in the directory.
-*/
-struct dirent* readdir (DIR* dir);
-
-/**
-* Frees up resources allocated by opendir.
-*/
-int32_t closedir (DIR* dir);
-
-
-#elif defined (_CL_HAVE_DIRENT_H)
-# include <dirent.h>
-# define NAMLEN(dirent) strlen((dirent)->d_name)
-
-#else
-# define dirent direct
-# define NAMLEN(dirent) (dirent)->d_namlen
-# if defined(_CL_HAVE_SYS_NDIR_H)
-# include <sys/ndir.h>
-# endif
-# if defined(_CL_HHAVE_SYS_DIR_H)
-# include <sys/dir.h>
-# endif
-# if defined(_CL_HHAVE_NDIR_H)
-# include <ndir.h>
-# endif
-
-#endif //HAVE_DIRENT_H
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp b/src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp
deleted file mode 100644
index 9125d8478..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Jos van den Oever
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-/* This file is part of Strigi Desktop Search
- *
- * Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#include "jstreamsconfig.h"
-#include "fileinputstream.h"
-
-#ifndef UNDER_CE
-#include <cerrno>
-#endif
-#include <cstring>
-namespace jstreams {
-
-const int32_t FileInputStream::defaultBufferSize = 1048576;
-FileInputStream::FileInputStream(const char *filepath, int32_t buffersize) {
- // try to open the file for reading
- file = fopen(filepath, "rb");
- this->filepath = filepath;
- if (file == 0) {
- // handle error
- error = "Could not read file '";
- error += filepath;
- error += "': ";
-#ifndef UNDER_CE
- error += strerror(errno);
-#endif
- status = Error;
- return;
- }
- // determine file size. if the stream is not seekable, the size will be -1
- fseek(file, 0, SEEK_END);
- size = ftell(file);
- fseek(file, 0, SEEK_SET);
-
- // if the file has size 0, make sure that it's really empty
- // this is useful for filesystems like /proc that report files as size 0
- // for files that do contain content
- if (size == 0) {
- char dummy[1];
- size_t n = fread(dummy, 1, 1, file);
- if (n == 1) {
- size = -1;
- fseek(file, 0, SEEK_SET);
- } else {
- fclose(file);
- file = 0;
- return;
- }
- }
-
- // allocate memory in the buffer
- int32_t bufsize = (size <= buffersize) ?size+1 :buffersize;
- mark(bufsize);
-}
-FileInputStream::~FileInputStream() {
- if (file) {
- if (fclose(file)) {
- // handle error
- error = "Could not close file '" + filepath + "'.";
- }
- }
-}
-int32_t
-FileInputStream::fillBuffer(char* start, int32_t space) {
- if (file == 0) return -1;
- // read into the buffer
- int32_t nwritten = fread(start, 1, space, file);
- // check the file stream status
- if (ferror(file)) {
- error = "Could not read from file '" + filepath + "'.";
- fclose(file);
- file = 0;
- status = Error;
- return -1;
- }
- if (feof(file)) {
- fclose(file);
- file = 0;
- }
- return nwritten;
-}
-}
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.h b/src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.h
deleted file mode 100644
index 144423da8..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/fileinputstream.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Copyright 2003-2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef FILEINPUTSTREAM_H
-#define FILEINPUTSTREAM_H
-
-#include "bufferedstream.h"
-
-namespace jstreams {
-
-class FileInputStream : public BufferedInputStream<char> {
-private:
- FILE *file;
- std::string filepath;
-
-public:
- static const int32_t defaultBufferSize;
- FileInputStream(const char *filepath, int32_t buffersize=defaultBufferSize);
- ~FileInputStream();
- int32_t fillBuffer(char* start, int32_t space);
-};
-
-} // end namespace jstreams
-
-#endif
-
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/inputstreambuffer.h b/src/assistant/3rdparty/clucene/src/CLucene/util/inputstreambuffer.h
deleted file mode 100644
index 873e811cd..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/inputstreambuffer.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Jos van den Oever
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-/* This file is part of Strigi Desktop Search
- *
- * Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INPUTSTREAMBUFFER_H
-#define INPUTSTREAMBUFFER_H
-
-#include <cstdlib>
-
-namespace jstreams {
-
-template <class T>
-class InputStreamBuffer {
-private:
-public:
- T* start;
- int32_t size;
- T* readPos;
- int32_t avail;
-
- InputStreamBuffer();
- ~InputStreamBuffer();
- void setSize(int32_t size);
- int32_t read(const T*& start, int32_t max=0);
-
- /**
- * This function prepares the buffer for a new write.
- * returns the number of available places.
- **/
- int32_t makeSpace(int32_t needed);
-};
-
-template <class T>
-InputStreamBuffer<T>::InputStreamBuffer() {
- readPos = start = 0;
- size = avail = 0;
-}
-template <class T>
-InputStreamBuffer<T>::~InputStreamBuffer() {
- free(start);
-}
-template <class T>
-void
-InputStreamBuffer<T>::setSize(int32_t size) {
- // store pointer information
- int32_t offset = (int32_t)(readPos - start);
-
- // allocate memory in the buffer
- if ( start == 0 )
- start = (T*)malloc(size*sizeof(T));
- else
- start = (T*)realloc(start, size*sizeof(T));
- this->size = size;
-
- // restore pointer information
- readPos = start + offset;
-}
-template <class T>
-int32_t
-InputStreamBuffer<T>::makeSpace(int32_t needed) {
- // determine how much space is available for writing
- int32_t space = size - ((int32_t)(readPos - start)) - avail;
- if (space >= needed) {
- // there's enough space
- return space;
- }
-
- if (avail) {
- if (readPos != start) {
-// printf("moving\n");
- // move data to the start of the buffer
- memmove(start, readPos, avail*sizeof(T));
- space += (int32_t)(readPos - start);
- readPos = start;
- }
- } else {
- // we may start writing at the start of the buffer
- readPos = start;
- space = size;
- }
- if (space >= needed) {
- // there's enough space now
- return space;
- }
-
- // still not enough space, we have to allocate more
-// printf("resize %i %i %i %i %i\n", avail, needed, space, size + needed - space, size);
- setSize(size + needed - space);
- return needed;
-}
-template <class T>
-int32_t
-InputStreamBuffer<T>::read(const T*& start, int32_t max) {
- start = readPos;
- if (max <= 0 || max > avail) {
- max = avail;
- }
- readPos += max;
- avail -= max;
- return max;
-}
-
-} // end namespace jstreams
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/jstreamsconfig.h b/src/assistant/3rdparty/clucene/src/CLucene/util/jstreamsconfig.h
deleted file mode 100644
index 2a6ce9f8d..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/jstreamsconfig.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-
-//this is just a compatibility header for jstreams
-#include "CLucene/StdHeader.h"
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/streambase.h b/src/assistant/3rdparty/clucene/src/CLucene/util/streambase.h
deleted file mode 100644
index c6bf9f12c..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/streambase.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Jos van den Oever
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-*
-* Changes are Copyright (C) 2015 The Qt Company Ltd.
-------------------------------------------------------------------------------*/
-/* This file is part of Strigi Desktop Search
- *
- * Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef STREAMBASE_H
-#define STREAMBASE_H
-
-#include <string>
-
-#if defined(_BUILD_FOR_QT_)
- #include "StdHeader.h"
-#endif
-
-#define INT32MAX 0x7FFFFFFFL
-
-namespace jstreams {
-
-enum StreamStatus { Ok, Eof, Error };
-
-/**
- * @short Base class for stream read access to many different file types.
- *
- * This class is based on the interface java.io.InputStream. It allows
- * for uniform access to streamed resources.
- * The main difference with the java equivalent is a performance improvement.
- * When reading data, data is not copied into a buffer provided by the caller,
- * but a pointer to the read data is provided. This makes this interface
- * especially useful for deriving from it and implementing filterers or
- * transformers.
- */
-// java mapping: long=int64, int=int32, byte=uint8_t
-template <class T>
-class StreamBase {
-protected:
- int64_t size;
- int64_t position;
- std::string error;
- StreamStatus status;
-public:
- StreamBase() :size(-1), position(0), status(Ok){ }
- virtual ~StreamBase(){}
- /**
- * @brief Return a string representation of the last error.
- * If no error has occurred, an empty string is returned.
- **/
- const char* getError() const { return error.c_str(); }
- StreamStatus getStatus() const { return status; }
- /**
- * @brief Get the current position in the stream.
- * The value obtained from this function can be used to reset the stream.
- **/
- int64_t getPosition() const { return position; }
- /**
- * @brief Return the size of the stream.
- * If the size of the stream is unknown, -1
- * is returned. If the end of the stream has been reached the size is
- * always known.
- **/
- int64_t getSize() const { return size; }
- /**
- * @brief Reads characters from the stream and sets \a start to
- * the first character that was read.
- *
- * If @p ntoread is @c 0, then at least one character will be read.
- *
- * @param start Pointer passed by reference that will be set to point to
- * the retrieved array of characters. If the end of the stream
- * is encountered or an error occurs, the value of @p start
- * is undefined.
- * @param min The number of characters to read from the stream.
- * @param max The maximum number of characters to read from the stream.
- * @return the number of characters that were read. If -1 is returned, the
- * end of the stream has been reached. If -2 is returned, an error
- * has occurred.
- **/
- virtual int32_t read(const T*& start, int32_t min, int32_t max) = 0;
- /**
- * Skip @param ntoskip bytes. Unless an error occurs or the end of file is
- * encountered, this amount of bytes is skipped.
- * This function returns new position in the stream.
- **/
- virtual int64_t skip(int64_t ntoskip);
- /**
- * @brief Repositions this stream to given requested position.
- * Reset is guaranteed to work after a successful call to read(),
- * when the new position is in the range of the data returned by read().
- * This means that @p pos must lie between than the position
- * corresponding to the start parameter (x) of the read function
- * and the position corresponding to the last position in the returned
- * buffer (x + nread).
- **/
- virtual int64_t reset(int64_t pos) = 0;
- int64_t mark(int32_t readlimit) {
- int64_t p = getPosition();
- const T* ptr;
- read(ptr, readlimit, -1);
- return reset(p);
- }
-};
-#define SKIPSTEP 1024
-template <class T>
-int64_t
-StreamBase<T>::skip(int64_t ntoskip) {
- const T *begin;
- int32_t nread;
- int64_t skipped = 0;
- while (ntoskip) {
- int32_t step = (int32_t)((ntoskip > SKIPSTEP) ?SKIPSTEP :ntoskip);
- nread = read(begin, 1, step);
- if (nread < -1 ) {
- // an error occurred
- return nread;
- } else if (nread < 1) {
- ntoskip = 0;
- } else {
- skipped += nread;
- ntoskip -= nread;
- }
- }
- return skipped;
-}
-
-} // end namespace jstreams
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/stringreader.h b/src/assistant/3rdparty/clucene/src/CLucene/util/stringreader.h
deleted file mode 100644
index 698d07e37..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/stringreader.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Jos van den Oever
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-/* This file is part of Strigi Desktop Search
- *
- * Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef STRINGREADER_H
-#define STRINGREADER_H
-
-/**
- * Author: Jos van den Oever
- * Ben van Klinken
- **/
-
-
-#include "streambase.h"
-
-namespace jstreams {
-
-template <class T>
-class StringReader : public StreamBase<T> {
-private:
- int64_t markpt;
- T* data;
- bool dataowner;
- StringReader(const StringReader<T>&);
- void operator=(const StringReader<T>&);
-public:
- StringReader(const T* value, int32_t length = -1, bool copy = true);
- ~StringReader();
- int32_t read(const T*& start, int32_t min, int32_t max);
- int64_t skip(int64_t ntoskip);
- int64_t reset(int64_t pos);
-};
-
-typedef StringReader<char> StringInputStream;
-
-template <class T>
-StringReader<T>::StringReader(const T* value, int32_t length, bool copy)
- : markpt(0), dataowner(copy) {
- if (length < 0) {
- length = 0;
- while (value[length] != '\0') {
- length++;
- }
- }
- StreamBase<T>::size = length;
- if (copy) {
- data = new T[length+1];
- size_t s = (size_t)(length*sizeof(T));
- memcpy(data, value, s);
- data[length] = 0;
- } else {
- // casting away const is ok, because we don't write anyway
- data = (T*)value;
- }
-}
-template <class T>
-StringReader<T>::~StringReader() {
- if (dataowner) {
- delete [] data;
- }
-}
-template <class T>
-int32_t
-StringReader<T>::read(const T*& start, int32_t min, int32_t max) {
- int64_t left = StreamBase<T>::size - StreamBase<T>::position;
- if (left == 0) {
- StreamBase<T>::status = Eof;
- return -1;
- }
- if (min < 0) min = 0;
- int32_t nread = (int32_t)((max > left || max < 1) ?left :max);
- start = data + StreamBase<T>::position;
- StreamBase<T>::position += nread;
- if (StreamBase<T>::position == StreamBase<T>::size) {
- StreamBase<T>::status = Eof;
- }
- return nread;
-}
-template <class T>
-int64_t
-StringReader<T>::skip(int64_t ntoskip) {
- const T* start;
- return read(start, ntoskip, ntoskip);
-}
-template <class T>
-int64_t
-StringReader<T>::reset(int64_t newpos) {
- if (newpos < 0) {
- StreamBase<T>::status = Ok;
- StreamBase<T>::position = 0;
- } else if (newpos < StreamBase<T>::size) {
- StreamBase<T>::status = Ok;
- StreamBase<T>::position = newpos;
- } else {
- StreamBase<T>::position = StreamBase<T>::size;
- StreamBase<T>::status = Eof;
- }
- return StreamBase<T>::position;
-}
-
-} // end namespace jstreams
-
-#endif
diff --git a/src/assistant/3rdparty/clucene/src/CLucene/util/subinputstream.h b/src/assistant/3rdparty/clucene/src/CLucene/util/subinputstream.h
deleted file mode 100644
index 8ae3e33c7..000000000
--- a/src/assistant/3rdparty/clucene/src/CLucene/util/subinputstream.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*------------------------------------------------------------------------------
-* Copyright (C) 2003-2006 Jos van den Oever
-*
-* Distributable under the terms of either the Apache License (Version 2.0) or
-* the GNU Lesser General Public License, as specified in the COPYING file.
-------------------------------------------------------------------------------*/
-/* This file is part of Strigi Desktop Search
- *
- * Copyright (C) 2006 Jos van den Oever <jos@vandenoever.info>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef SUBINPUTSTREAM_H
-#define SUBINPUTSTREAM_H
-
-#include "streambase.h"
-
-namespace jstreams {
-
-template<class T>
-class SubInputStream : public StreamBase<T> {
-private:
- const int64_t offset;
- StreamBase<T> *input;
-public:
- SubInputStream(StreamBase<T> *input, int64_t size=-1);
- int32_t read(const T*& start, int32_t min, int32_t max);
- int64_t reset(int64_t newpos);
- int64_t skip(int64_t ntoskip);
-};
-template<class T>
-SubInputStream<T>::SubInputStream(StreamBase<T> *i, int64_t length)
- : offset(i->getPosition()), input(i) {
- assert(length >= -1);
-// printf("substream offset: %lli\n", offset);
- StreamBase<T>::size = length;
-}
-
-template<class T>
-int32_t SubInputStream<T>::read(const T*& start, int32_t min, int32_t max) {
- if (StreamBase<T>::size != -1) {
- const int64_t left = StreamBase<T>::size - StreamBase<T>::position;
- if (left == 0) {
- return -1;
- }
- // restrict the amount of data that can be read
- if (max <= 0 || max > left) {
- max = (int32_t)left;
- }
- if (min > max) min = max;
- if (left < min) min = (int32_t)left;
- }
- int32_t nread = input->read(start, min, max);
- if (nread < -1) {
- fprintf(stderr, "substream too short.\n");
- StreamBase<T>::status = Error;
- StreamBase<T>::error = input->getError();
- } else if (nread < min) {
- if (StreamBase<T>::size == -1) {
- StreamBase<T>::status = Eof;
- if (nread > 0) {
- StreamBase<T>::position += nread;
- StreamBase<T>::size = StreamBase<T>::position;
- }
- } else {
-// fprintf(stderr, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nread %i min %i max %i size %lli\n", nread, min, max, size);
-// fprintf(stderr, "pos %lli parentpos %lli\n", position, input->getPosition());
-// fprintf(stderr, "status: %i error: %s\n", input->getStatus(), input->getError());
- // we expected data but didn't get enough so that's an error
- StreamBase<T>::status = Error;
- StreamBase<T>::error = "Premature end of stream\n";
- nread = -2;
- }
- } else {
- StreamBase<T>::position += nread;
- if (StreamBase<T>::position == StreamBase<T>::size) {
- StreamBase<T>::status = Eof;
- }
- }
- return nread;
-}
-
-template<class T>
-int64_t SubInputStream<T>::reset(int64_t newpos) {
-// fprintf(stderr, "subreset pos: %lli newpos: %lli offset: %lli\n", position,
-// newpos, offset);
- StreamBase<T>::position = input->reset(newpos + offset);
- if (StreamBase<T>::position < offset) {
- printf("###########\n");
- StreamBase<T>::status = Error;
- StreamBase<T>::error = input->getError();
- } else {
- StreamBase<T>::position -= offset;
- StreamBase<T>::status = input->getStatus();
- }
- return StreamBase<T>::position;
-}
-
-template<class T>
-int64_t SubInputStream<T>::skip(int64_t ntoskip) {
-// printf("subskip pos: %lli ntoskip: %lli offset: %lli\n", position, ntoskip, offset);
- if (StreamBase<T>::size == StreamBase<T>::position) {
- StreamBase<T>::status = Eof;
- return -1;
- }
- if (StreamBase<T>::size != -1) {
- const int64_t left = StreamBase<T>::size - StreamBase<T>::position;
- // restrict the amount of data that can be skipped
- if (ntoskip > left) {
- ntoskip = left;
- }
- }
- int64_t skipped = input->skip(ntoskip);
- if (input->getStatus() == Error) {
- StreamBase<T>::status = Error;
- StreamBase<T>::error = input->getError();
- } else {
- StreamBase<T>::position += skipped;
- if (StreamBase<T>::position == StreamBase<T>::size) {
- StreamBase<T>::status = Eof;
- }
- }
- return skipped;
-}
-
-} //end namespace jstreams
-
-#endif
diff --git a/src/assistant/clucene/clucene.pro b/src/assistant/clucene/clucene.pro
deleted file mode 100644
index b5ed7035b..000000000
--- a/src/assistant/clucene/clucene.pro
+++ /dev/null
@@ -1,33 +0,0 @@
-MODULE = clucene
-
-TARGET = QtCLucene
-QT = core
-
-include(fulltextsearch.pri)
-
-CONFIG += warn_off
-contains(QT_CONFIG, reduce_exports) {
- CONFIG += hide_symbols
- # workaround for compiler errors on Ubuntu
- linux*-g++*:DEFINES += _GLIBCXX_EXTERN_TEMPLATE=0
-}
-
-# impossible to disable exceptions in clucene atm
-CONFIG += exceptions
-
-# otherwise mingw headers do not declare common functions like _i64tow
-win32-g++*:QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x
-
-msvc {
- QMAKE_CFLAGS_RELEASE -= -O2
- QMAKE_CXXFLAGS_RELEASE -= -O2
- DEFINES += _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
-}
-
-# the following define could be set globally in case we need it elsewhere
-solaris* {
- DEFINES += Q_SOLARIS_VERSION=$$system(uname -r | sed -e 's/5\\.//')
-}
-
-CONFIG += internal_module
-load(qt_module)
diff --git a/src/assistant/clucene/fulltextsearch.pri b/src/assistant/clucene/fulltextsearch.pri
deleted file mode 100644
index eebfba33a..000000000
--- a/src/assistant/clucene/fulltextsearch.pri
+++ /dev/null
@@ -1,161 +0,0 @@
-DEFINES += _BUILD_FOR_QT_ LUCENE_DISABLE_MEMTRACKING
-win32:DEFINES += _CRT_SECURE_NO_DEPRECATE _MT
-
-CLUCENEDIR = ../3rdparty/clucene/src/CLucene
-
-INCLUDEPATH += . .. \
- $$CLUCENEDIR \
- $$CLUCENEDIR/../ \
- $$CLUCENEDIR/analysis \
- $$CLUCENEDIR/analysis/standard \
- $$CLUCENEDIR/config \
- $$CLUCENEDIR/debug \
- $$CLUCENEDIR/document \
- $$CLUCENEDIR/index \
- $$CLUCENEDIR/queryParser \
- $$CLUCENEDIR/search \
- $$CLUCENEDIR/store \
- $$CLUCENEDIR/util
-
-
-SOURCES += $$CLUCENEDIR/StdHeader.cpp \
- $$CLUCENEDIR/analysis/AnalysisHeader.cpp \
- $$CLUCENEDIR/analysis/Analyzers.cpp \
- $$CLUCENEDIR/config/gunichartables.cpp \
- $$CLUCENEDIR/config/repl_lltot.cpp \
- $$CLUCENEDIR/config/repl_tcscasecmp.cpp \
- $$CLUCENEDIR/config/repl_tcslwr.cpp \
- $$CLUCENEDIR/config/repl_tcstod.cpp \
- $$CLUCENEDIR/config/repl_tcstoll.cpp \
- $$CLUCENEDIR/config/repl_tprintf.cpp \
- $$CLUCENEDIR/config/threads.cpp \
- $$CLUCENEDIR/config/utf8.cpp \
- $$CLUCENEDIR/debug/condition.cpp \
- $$CLUCENEDIR/debug/error.cpp \
- $$CLUCENEDIR/debug/memtracking.cpp \
- $$CLUCENEDIR/document/DateField.cpp \
- $$CLUCENEDIR/document/Document.cpp \
- $$CLUCENEDIR/document/Field.cpp \
- $$CLUCENEDIR/index/CompoundFile.cpp \
- $$CLUCENEDIR/index/DocumentWriter.cpp \
- $$CLUCENEDIR/index/FieldInfos.cpp \
- $$CLUCENEDIR/index/FieldsReader.cpp \
- $$CLUCENEDIR/index/FieldsWriter.cpp \
- $$CLUCENEDIR/index/IndexModifier.cpp \
- $$CLUCENEDIR/index/IndexReader.cpp \
- $$CLUCENEDIR/index/IndexWriter.cpp \
- $$CLUCENEDIR/index/MultiReader.cpp \
- $$CLUCENEDIR/index/SegmentInfos.cpp \
- $$CLUCENEDIR/index/SegmentMergeInfo.cpp \
- $$CLUCENEDIR/index/SegmentMergeQueue.cpp \
- $$CLUCENEDIR/index/SegmentMerger.cpp \
- $$CLUCENEDIR/index/SegmentReader.cpp \
- $$CLUCENEDIR/index/SegmentTermDocs.cpp \
- $$CLUCENEDIR/index/SegmentTermEnum.cpp \
- $$CLUCENEDIR/index/SegmentTermPositions.cpp \
- $$CLUCENEDIR/index/SegmentTermVector.cpp \
- $$CLUCENEDIR/index/Term.cpp \
- $$CLUCENEDIR/index/TermInfo.cpp \
- $$CLUCENEDIR/index/TermInfosReader.cpp \
- $$CLUCENEDIR/index/TermInfosWriter.cpp \
- $$CLUCENEDIR/index/TermVectorReader.cpp \
- $$CLUCENEDIR/index/TermVectorWriter.cpp \
- $$CLUCENEDIR/queryParser/Lexer.cpp \
- $$CLUCENEDIR/queryParser/MultiFieldQueryParser.cpp \
- $$CLUCENEDIR/queryParser/QueryParser.cpp \
- $$CLUCENEDIR/queryParser/QueryParserBase.cpp \
- $$CLUCENEDIR/queryParser/QueryToken.cpp \
- $$CLUCENEDIR/queryParser/TokenList.cpp \
- $$CLUCENEDIR/search/BooleanQuery.cpp \
- $$CLUCENEDIR/search/BooleanScorer.cpp \
- $$CLUCENEDIR/search/CachingWrapperFilter.cpp \
- $$CLUCENEDIR/search/ChainedFilter.cpp \
- $$CLUCENEDIR/search/ConjunctionScorer.cpp \
- $$CLUCENEDIR/search/DateFilter.cpp \
- $$CLUCENEDIR/search/ExactPhraseScorer.cpp \
- $$CLUCENEDIR/search/Explanation.cpp \
- $$CLUCENEDIR/search/FieldCache.cpp \
- $$CLUCENEDIR/search/FieldCacheImpl.cpp \
- $$CLUCENEDIR/search/FieldDocSortedHitQueue.cpp \
- $$CLUCENEDIR/search/FieldSortedHitQueue.cpp \
- $$CLUCENEDIR/search/FilteredTermEnum.cpp \
- $$CLUCENEDIR/search/FuzzyQuery.cpp \
- $$CLUCENEDIR/search/HitQueue.cpp \
- $$CLUCENEDIR/search/Hits.cpp \
- $$CLUCENEDIR/search/IndexSearcher.cpp \
- $$CLUCENEDIR/search/MultiSearcher.cpp \
- $$CLUCENEDIR/search/MultiTermQuery.cpp \
- $$CLUCENEDIR/search/PhrasePositions.cpp \
- $$CLUCENEDIR/search/PhraseQuery.cpp \
- $$CLUCENEDIR/search/PhraseScorer.cpp \
- $$CLUCENEDIR/search/PrefixQuery.cpp \
- $$CLUCENEDIR/search/QueryFilter.cpp \
- $$CLUCENEDIR/search/RangeFilter.cpp \
- $$CLUCENEDIR/search/RangeQuery.cpp \
- $$CLUCENEDIR/search/SearchHeader.cpp \
- $$CLUCENEDIR/search/Similarity.cpp \
- $$CLUCENEDIR/search/SloppyPhraseScorer.cpp \
- $$CLUCENEDIR/search/Sort.cpp \
- $$CLUCENEDIR/search/TermQuery.cpp \
- $$CLUCENEDIR/search/TermScorer.cpp \
- $$CLUCENEDIR/search/WildcardQuery.cpp \
- $$CLUCENEDIR/search/WildcardTermEnum.cpp \
- $$CLUCENEDIR/store/FSDirectory.cpp \
- $$CLUCENEDIR/store/IndexInput.cpp \
- $$CLUCENEDIR/store/IndexOutput.cpp \
- $$CLUCENEDIR/store/Lock.cpp \
- $$CLUCENEDIR/store/MMapInput.cpp \
- $$CLUCENEDIR/store/RAMDirectory.cpp \
- $$CLUCENEDIR/store/TransactionalRAMDirectory.cpp \
- $$CLUCENEDIR/util/BitSet.cpp \
- $$CLUCENEDIR/util/Equators.cpp \
- $$CLUCENEDIR/util/FastCharStream.cpp \
- $$CLUCENEDIR/util/fileinputstream.cpp \
- $$CLUCENEDIR/util/Misc.cpp \
- $$CLUCENEDIR/util/Reader.cpp \
- $$CLUCENEDIR/util/StringBuffer.cpp \
- $$CLUCENEDIR/util/StringIntern.cpp \
- $$CLUCENEDIR/util/ThreadLocal.cpp \
- $$CLUCENEDIR/analysis/standard/StandardAnalyzer.cpp \
- $$CLUCENEDIR/analysis/standard/StandardFilter.cpp \
- $$CLUCENEDIR/analysis/standard/StandardTokenizer.cpp
-
-
-#Header files
-HEADERS += qclucene_global_p.h \
- qclucene-config_p.h \
- qanalyzer_p.h \
- qtokenizer_p.h \
- qtoken_p.h \
- qtokenstream_p.h \
- qdocument_p.h \
- qfield_p.h \
- qindexreader_p.h \
- qindexwriter_p.h \
- qterm_p.h \
- qqueryparser_p.h \
- qfilter_p.h \
- qhits_p.h \
- qsearchable_p.h \
- qsort_p.h \
- qquery_p.h \
- qreader_p.h
-
-
-#Source files
-SOURCES += qanalyzer.cpp \
- qtokenizer.cpp \
- qtoken.cpp \
- qtokenstream.cpp \
- qdocument.cpp \
- qfield.cpp \
- qindexreader.cpp \
- qindexwriter.cpp \
- qterm.cpp \
- qqueryparser.cpp \
- qfilter.cpp \
- qhits.cpp \
- qsearchable.cpp \
- qsort.cpp \
- qquery.cpp \
- qreader.cpp
diff --git a/src/assistant/clucene/license.txt b/src/assistant/clucene/license.txt
deleted file mode 100644
index 75657f7b4..000000000
--- a/src/assistant/clucene/license.txt
+++ /dev/null
@@ -1,503 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-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 and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, 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 library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete 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 distribute a copy of this License along with the
-Library.
-
- 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 Library or any portion
-of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-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 Library, 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 Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you 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.
-
- If distribution of 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 satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be 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.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library 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.
-
- 9. 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 Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-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 with
-this License.
-
- 11. 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 Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library 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 Library.
-
-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.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library 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.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser 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 Library
-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 Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-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
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "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
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. 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 LIBRARY 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
-LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. 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 library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
diff --git a/src/assistant/clucene/qanalyzer.cpp b/src/assistant/clucene/qanalyzer.cpp
deleted file mode 100644
index fd5f063aa..000000000
--- a/src/assistant/clucene/qanalyzer.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qanalyzer_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/analysis/AnalysisHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneAnalyzerPrivate::QCLuceneAnalyzerPrivate()
- : QSharedData()
-{
- analyzer = 0;
- deleteCLuceneAnalyzer = true;
-}
-
-QCLuceneAnalyzerPrivate::QCLuceneAnalyzerPrivate(const QCLuceneAnalyzerPrivate &other)
- : QSharedData()
-{
- analyzer = _CL_POINTER(other.analyzer);
- deleteCLuceneAnalyzer = other.deleteCLuceneAnalyzer;
-}
-
-QCLuceneAnalyzerPrivate::~QCLuceneAnalyzerPrivate()
-{
- if (deleteCLuceneAnalyzer)
- _CLDECDELETE(analyzer);
-}
-
-
-QCLuceneAnalyzer::QCLuceneAnalyzer()
- : d(new QCLuceneAnalyzerPrivate())
-{
- //nothing todo, private
-}
-
-QCLuceneAnalyzer::~QCLuceneAnalyzer()
-{
- // nothing todo
-}
-
-qint32 QCLuceneAnalyzer::positionIncrementGap(const QString &fieldName) const
-{
- Q_UNUSED(fieldName);
- return 0;
-}
-
-QCLuceneTokenStream QCLuceneAnalyzer::tokenStream(const QString &fieldName,
- const QCLuceneReader &reader) const
-{
- TCHAR *fName = QStringToTChar(fieldName);
- QCLuceneTokenStream tokenStream;
- tokenStream.d->tokenStream = d->analyzer->tokenStream(fName, reader.d->reader);
- delete [] fName;
-
- return tokenStream;
-}
-
-
-QCLuceneStandardAnalyzer::QCLuceneStandardAnalyzer()
- : QCLuceneAnalyzer()
-{
- d->analyzer = new lucene::analysis::standard::StandardAnalyzer();
-}
-
-QCLuceneStandardAnalyzer::~QCLuceneStandardAnalyzer()
-{
- // nothing todo
-}
-
-QCLuceneStandardAnalyzer::QCLuceneStandardAnalyzer(const QStringList &stopWords)
-{
- const TCHAR **tArray = new const TCHAR*[stopWords.count() +1];
-
- for(int i = 0; i < stopWords.count(); ++i) {
- TCHAR *stopWord = QStringToTChar(stopWords.at(i));
- tArray[i] = STRDUP_TtoT(stopWord);
- delete [] stopWord;
- }
- tArray[stopWords.count()] = 0;
-
- d->analyzer = new lucene::analysis::standard::StandardAnalyzer(tArray);
-
- for (int i = 0; i < stopWords.count(); ++i)
- delete [] tArray[i];
-
- delete [] tArray;
-}
-
-
-QCLuceneWhitespaceAnalyzer::QCLuceneWhitespaceAnalyzer()
- : QCLuceneAnalyzer()
-{
- d->analyzer = new lucene::analysis::WhitespaceAnalyzer();
-}
-
-QCLuceneWhitespaceAnalyzer::~QCLuceneWhitespaceAnalyzer()
-{
- // nothing todo
-}
-
-
-QCLuceneSimpleAnalyzer::QCLuceneSimpleAnalyzer()
- : QCLuceneAnalyzer()
-{
- d->analyzer = new lucene::analysis::SimpleAnalyzer();
-}
-
-QCLuceneSimpleAnalyzer::~QCLuceneSimpleAnalyzer()
-{
- // nothing todo
-}
-
-
-QCLuceneStopAnalyzer::QCLuceneStopAnalyzer()
- : QCLuceneAnalyzer()
-{
- d->analyzer = new lucene::analysis::StopAnalyzer();
-}
-
-QCLuceneStopAnalyzer::~QCLuceneStopAnalyzer()
-{
- // nothing todo
-}
-
-QCLuceneStopAnalyzer::QCLuceneStopAnalyzer(const QStringList &stopWords)
- : QCLuceneAnalyzer()
-{
- const TCHAR **tArray = new const TCHAR*[stopWords.count() +1];
-
- for(int i = 0; i < stopWords.count(); ++i) {
- TCHAR *stopWord = QStringToTChar(stopWords.at(i));
- tArray[i] = STRDUP_TtoT(stopWord);
- delete [] stopWord;
- }
- tArray[stopWords.count()] = 0;
-
- d->analyzer = new lucene::analysis::StopAnalyzer(tArray);
-
- for (int i = 0; i < stopWords.count(); ++i)
- delete [] tArray[i];
-
- delete [] tArray;
-}
-
-QStringList QCLuceneStopAnalyzer::englishStopWords() const
-{
- QStringList stopWordList;
-
- const TCHAR** stopWords = lucene::analysis::StopAnalyzer::ENGLISH_STOP_WORDS;
- for (qint32 i = 0; stopWords[i] != 0; ++i)
- stopWordList.append(TCharToQString(stopWords[i]));
-
- return stopWordList;
-}
-
-
-QCLuceneKeywordAnalyzer::QCLuceneKeywordAnalyzer()
- : QCLuceneAnalyzer()
-{
- d->analyzer = new lucene::analysis::KeywordAnalyzer();
-}
-
-QCLuceneKeywordAnalyzer::~QCLuceneKeywordAnalyzer()
-{
- // nothing todo
-}
-
-
-QCLucenePerFieldAnalyzerWrapper::QCLucenePerFieldAnalyzerWrapper(
- QCLuceneAnalyzer *defaultAnalyzer)
- : QCLuceneAnalyzer()
-{
- d->analyzer = new
- lucene::analysis::PerFieldAnalyzerWrapper(defaultAnalyzer->d->analyzer);
-
- analyzers.append(defaultAnalyzer);
- defaultAnalyzer->d->deleteCLuceneAnalyzer = false;
-}
-
-QCLucenePerFieldAnalyzerWrapper::~QCLucenePerFieldAnalyzerWrapper()
-{
- qDeleteAll(analyzers);
-}
-
-void QCLucenePerFieldAnalyzerWrapper::addAnalyzer(const QString &fieldName,
- QCLuceneAnalyzer *analyzer)
-{
- lucene::analysis::PerFieldAnalyzerWrapper *analyzerWrapper =
- static_cast<lucene::analysis::PerFieldAnalyzerWrapper*> (d->analyzer);
-
- if (analyzerWrapper == 0)
- return;
-
- analyzers.append(analyzer);
- analyzer->d->deleteCLuceneAnalyzer = false;
-
- TCHAR *fName = QStringToTChar(fieldName);
- analyzerWrapper->addAnalyzer(fName, analyzer->d->analyzer);
- delete [] fName;
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qanalyzer_p.h b/src/assistant/clucene/qanalyzer_p.h
deleted file mode 100644
index 850ccbe26..000000000
--- a/src/assistant/clucene/qanalyzer_p.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QANALYZER_P_H
-#define QANALYZER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qreader_p.h"
-#include "qtokenstream_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QList>
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(analysis)
- class Analyzer;
-CL_NS_END
-CL_NS_USE(analysis)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneIndexWriter;
-class QCLuceneQueryParser;
-class QCLuceneStopAnalyzer;
-class QCLuceneSimpleAnalyzer;
-class QCLuceneKeywordAnalyzer;
-class QCLuceneStandardAnalyzer;
-class QCLuceneWhitespaceAnalyzer;
-class QCLucenePerFieldAnalyzerWrapper;
-
-class Q_CLUCENE_EXPORT QCLuceneAnalyzerPrivate : public QSharedData
-{
-public:
- QCLuceneAnalyzerPrivate();
- QCLuceneAnalyzerPrivate(const QCLuceneAnalyzerPrivate &other);
-
- ~QCLuceneAnalyzerPrivate();
-
- Analyzer *analyzer;
- bool deleteCLuceneAnalyzer;
-
-private:
- QCLuceneAnalyzerPrivate &operator=(const QCLuceneAnalyzerPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneAnalyzer
-{
-public:
- virtual ~QCLuceneAnalyzer();
-
- qint32 positionIncrementGap(const QString &fieldName) const;
- QCLuceneTokenStream tokenStream(const QString &fieldName,
- const QCLuceneReader &reader) const;
-
-protected:
- friend class QCLuceneIndexWriter;
- friend class QCLuceneQueryParser;
- friend class QCLuceneStopAnalyzer;
- friend class QCLuceneSimpleAnalyzer;
- friend class QCLuceneKeywordAnalyzer;
- friend class QCLuceneStandardAnalyzer;
- friend class QCLuceneWhitespaceAnalyzer;
- friend class QCLucenePerFieldAnalyzerWrapper;
- QSharedDataPointer<QCLuceneAnalyzerPrivate> d;
-
-private:
- QCLuceneAnalyzer();
-};
-
-class Q_CLUCENE_EXPORT QCLuceneStandardAnalyzer : public QCLuceneAnalyzer
-{
-public:
- QCLuceneStandardAnalyzer();
- QCLuceneStandardAnalyzer(const QStringList &stopWords);
-
- ~QCLuceneStandardAnalyzer();
-};
-
-class Q_CLUCENE_EXPORT QCLuceneWhitespaceAnalyzer : public QCLuceneAnalyzer
-{
-public:
- QCLuceneWhitespaceAnalyzer();
- ~QCLuceneWhitespaceAnalyzer();
-};
-
-class Q_CLUCENE_EXPORT QCLuceneSimpleAnalyzer : public QCLuceneAnalyzer
-{
-public:
- QCLuceneSimpleAnalyzer();
- ~QCLuceneSimpleAnalyzer();
-};
-
-class Q_CLUCENE_EXPORT QCLuceneStopAnalyzer : public QCLuceneAnalyzer
-{
-public:
- QCLuceneStopAnalyzer();
- QCLuceneStopAnalyzer(const QStringList &stopWords);
-
- ~QCLuceneStopAnalyzer();
-
- QStringList englishStopWords() const;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneKeywordAnalyzer : public QCLuceneAnalyzer
-{
-public:
- QCLuceneKeywordAnalyzer();
- ~QCLuceneKeywordAnalyzer();
-};
-
-class Q_CLUCENE_EXPORT QCLucenePerFieldAnalyzerWrapper : public QCLuceneAnalyzer
-{
-public:
- QCLucenePerFieldAnalyzerWrapper(QCLuceneAnalyzer *defaultAnalyzer);
- ~QCLucenePerFieldAnalyzerWrapper();
-
- void addAnalyzer(const QString &fieldName, QCLuceneAnalyzer *analyzer);
-
-private:
- QList<QCLuceneAnalyzer*> analyzers;
-};
-
-QT_END_NAMESPACE
-
-#endif // QANALYZER_P_H
diff --git a/src/assistant/clucene/qclucene-config_p.h b/src/assistant/clucene/qclucene-config_p.h
deleted file mode 100644
index 781bec75e..000000000
--- a/src/assistant/clucene/qclucene-config_p.h
+++ /dev/null
@@ -1,586 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QCLUCENE_CONFIG_P_H
-#define QCLUCENE_CONFIG_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtCore/qglobal.h>
-
-#ifdef Q_OS_ANDROID
-# include <android/api-level.h>
-#endif
-
-#ifndef _SRC_CLUCENE_CLUCENE_CONFIG_H
-#define _SRC_CLUCENE_CLUCENE_CONFIG_H 1
-
-/*
-src/CLucene/clucene-config.h.
-Generated
-automatically
-at
-end
-of
-configure.
-*/
-/* config.h.tmp. Generated by configure. */
-/* config.h.tmp.in. Generated from configure.ac by autoheader. */
-
-/* Disable multithreading */
-/* #undef _CL_DISABLE_MULTITHREADING */
-
-/* Define to 1 if you have the <algorithm> header file. */
-#ifndef _CL_HAVE_ALGORITHM
-#define _CL_HAVE_ALGORITHM 1
-#endif
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#ifndef _CL_HAVE_CTYPE_H
-#define _CL_HAVE_CTYPE_H 1
-#endif
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-#ifndef _CL_HAVE_DIRENT_H
-#define _CL_HAVE_DIRENT_H 1
-#endif
-
-#if !defined (__MINGW32__)
- /* Define to 1 if you have the <dlfcn.h> header file. */
-# ifndef _CL_HAVE_DLFCN_H
-# define _CL_HAVE_DLFCN_H 1
-# endif
-#endif
-
-/* Define to 1 if you have the <errno.h> header file. */
-#ifndef _CL_HAVE_ERRNO_H
-#define _CL_HAVE_ERRNO_H 1
-#endif
-
-#if !defined(__SUNPRO_CC) && !defined(__SUNPRO_C)
- /* Define to 1 if you have the <ext/hash_map> header file. */
-# ifndef _CL_HAVE_EXT_HASH_MAP
-# define _CL_HAVE_EXT_HASH_MAP 1
-# endif
-
- /* Define to 1 if you have the <ext/hash_set> header file. */
-# ifndef _CL_HAVE_EXT_HASH_SET
-# define _CL_HAVE_EXT_HASH_SET 1
-# endif
-#endif
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#ifndef _CL_HAVE_FCNTL_H
-#define _CL_HAVE_FCNTL_H 1
-#endif
-
-#if !defined(__xlC__) && !defined(__xlc__) && !defined (__MINGW32__) && \
- !defined(__HP_aCC) && !defined(__SUNPRO_C) && !defined(__SUNPRO_CC) || \
- defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x550) || (defined(__HP_aCC) && defined(__ia64))
- /* Define to 1 if the system has the type `float_t'. */
-# ifndef _CL_HAVE_FLOAT_T
-# define _CL_HAVE_FLOAT_T 1
-# endif
-#endif
-
-/* Define to 1 if you have the <functional> header file. */
-#ifndef _CL_HAVE_FUNCTIONAL
-#define _CL_HAVE_FUNCTIONAL 1
-#endif
-
-/* Does not support new float byte<->float conversions */
-#ifndef _CL_HAVE_FUNCTIONING_FLOAT_BYTE
-#define _CL_HAVE_FUNCTIONING_FLOAT_BYTE
-#endif
-
-/* Define to 1 if you have the `getpagesize' function. */
-#ifndef _CL_HAVE_GETPAGESIZE
-#define _CL_HAVE_GETPAGESIZE 1
-#endif
-
-/* Define to 1 if you have the <hash_map> header file. */
-/* #undef _CL_HAVE_HASH_MAP */
-
-/* Define to 1 if you have the <hash_set> header file. */
-/* #undef _CL_HAVE_HASH_SET */
-
-/* Define to 1 if the system has the type `intptr_t'. */
-#ifndef _CL_HAVE_INTPTR_T
-#define _CL_HAVE_INTPTR_T 1
-#endif
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#ifndef _CL_HAVE_INTTYPES_H
-#define _CL_HAVE_INTTYPES_H 1
-#endif
-
-/* Define to 1 if you have the <list> header file. */
-#ifndef _CL_HAVE_LIST
-#define _CL_HAVE_LIST 1
-#endif
-
-/* Define to 1 if you have the `lltoa' function. */
-/* #undef _CL_HAVE_LLTOA */
-
-#if defined(__MINGW32__)
- /* Define to 1 if you have the `lltow' function. */
-# ifndef _CL_HAVE_LLTOW
-# define _CL_HAVE_LLTOW 1
-# endif
-#endif
-
-#if !defined(__SUNPRO_CC) && !defined(__SUNPRO_C) && !defined(__xlC__) && !defined(__xlc__)
- /* Define to 1 if long double works and has more range or precision than double. */
-# ifndef _CL_HAVE_LONG_DOUBLE
-# define _CL_HAVE_LONG_DOUBLE 1
-# endif
-#endif
-
-/* Define to 1 if you have the <map> header file. */
-#ifndef _CL_HAVE_MAP
-#define _CL_HAVE_MAP 1
-#endif
-
-/* Define to 1 if you have the <math.h> header file. */
-#ifndef _CL_HAVE_MATH_H
-#define _CL_HAVE_MATH_H 1
-#endif
-
-/* Define to 1 if you have the <memory.h> header file. */
-#ifndef _CL_HAVE_MEMORY_H
-#define _CL_HAVE_MEMORY_H 1
-#endif
-
-#if !defined(__MINGW32__) && !defined(__HP_aCC) && !defined(__xlC__) && !defined(__xlc__)
- /* Define to 1 if you have a working `mmap' system call. */
-# ifndef _CL_HAVE_MMAP
-# define _CL_HAVE_MMAP 1
-# endif
-#endif
-
-/* define if the compiler implements namespaces */
-#ifndef _CL_HAVE_NAMESPACES
-#define _CL_HAVE_NAMESPACES
-#endif
-
-#if defined(__SUNPRO_CC) || defined(__SUNPRO_C) || defined(__HP_aCC) || defined(__xlC__) || defined(__xlc__)
- /* Define if you have the nanosleep function */
-# ifndef _CL_HAVE_NANOSLEEP
-# define _CL_HAVE_NANOSLEEP 1
-# endif
-#endif
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-/* #undef _CL_HAVE_NDIR_H */
-
-/* Does not support new float byte<->float conversions */
-/* #undef _CL_HAVE_NO_FLOAT_BYTE */
-
-/* Does not support try/catch blocks */
-/* #undef _CL_HAVE_NO_FUNCTION_TRY_BLOCKS */
-
-/* Define to 1 if you have the `printf' function. */
-#ifndef _CL_HAVE_PRINTF
-#define _CL_HAVE_PRINTF 1
-#endif
-
-#if !defined(__MINGW32__)
- /* Define if you have POSIX threads libraries and header files. */
-# ifndef _CL_HAVE_PTHREAD
-# define _CL_HAVE_PTHREAD 1
-# endif
-#endif
-
-/* Define if recursive pthread mutexes are available */
-/* #undef _CL_HAVE_PTHREAD_MUTEX_RECURSIVE */
-
-/* Define to 1 if you have the <set> header file. */
-#ifndef _CL_HAVE_SET
-#define _CL_HAVE_SET 1
-#endif
-
-/* Define to 1 if you have the `snprintf' function. */
-#ifndef _CL_HAVE_SNPRINTF
-#define _CL_HAVE_SNPRINTF 1
-#endif
-
-/* Defined if the snprintf overflow test fails */
-/* #undef _CL_HAVE_SNPRINTF_BUG */
-
-/* Define to 1 if you have the `snwprintf' function. */
-/* #undef _CL_HAVE_SNWPRINTF */
-
-#if !defined(__HP_aCC) && !defined(__SUNPRO_CC) && !defined(__SUNPRO_C)
- /* define if the compiler supports ISO C++ standard library */
-# ifndef _CL_HAVE_STD
-# define _CL_HAVE_STD
-# endif
-#endif
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#ifndef _CL_HAVE_STDARG_H
-#define _CL_HAVE_STDARG_H 1
-#endif
-
-/* x */
-#ifndef _CL_HAVE_STDEXCEPT
-#define _CL_HAVE_STDEXCEPT
-#endif
-
-#if !defined(__SUNPRO_CC) && !defined(__SUNPRO_C) && !defined(__HP_aCC) && \
- !defined(__xlC__) && !defined(__xlc__)
- /* Define to 1 if you have the <stdint.h> header file. */
-# ifndef _CL_HAVE_STDINT_H
-# define _CL_HAVE_STDINT_H 1
-# endif
-#endif
-
-#if !defined(__HP_aCC)
- /* Define to 1 if you have the <stdlib.h> header file. */
-# ifndef _CL_HAVE_STDLIB_H
-# define _CL_HAVE_STDLIB_H 1
-# endif
-
- /* define if the compiler supports Standard Template Library */
-# ifndef _CL_HAVE_STL
-# define _CL_HAVE_STL
-# endif
-#endif
-
-/* Define to 1 if you have the <strings.h> header file. */
-#ifndef _CL_HAVE_STRINGS_H
-#define _CL_HAVE_STRINGS_H 1
-#endif
-
-/* Define to 1 if you have the <string.h> header file. */
-#ifndef _CL_HAVE_STRING_H
-#define _CL_HAVE_STRING_H 1
-#endif
-
-/* Define to 1 if you have the `strlwr' function. */
-/* #undef _CL_HAVE_STRLWR */
-
-/* Define to 1 if you have the `strtoll' function. */
-/* #undef _CL_HAVE_STRTOLL */
-
-/* Define to 1 if you have the `strupr' function. */
-/* #undef _CL_HAVE_STRUPR */
-
-/* Defined if the swprintf test fails */
-#ifndef _CL_HAVE_SWPRINTF_BUG
-#define _CL_HAVE_SWPRINTF_BUG
-#endif
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
- */
-/* #undef _CL_HAVE_SYS_DIR_H */
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
- */
-/* #undef _CL_HAVE_SYS_NDIR_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#ifndef _CL_HAVE_SYS_STAT_H
-#define _CL_HAVE_SYS_STAT_H 1
-#endif
-
-/* Define to 1 if you have the <sys/timeb.h> header file. */
-#if !defined(__OpenBSD__) && !defined(__ANDROID_API__) || __ANDROID_API__ < 21
-# ifndef _CL_HAVE_SYS_TIMEB_H
-# define _CL_HAVE_SYS_TIMEB_H 1
-# endif
-#endif
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#ifndef _CL_HAVE_SYS_TYPES_H
-#define _CL_HAVE_SYS_TYPES_H 1
-#endif
-
-#if defined(__MINGW32__)
- /* Define to 1 if you have the <tchar.h> header file. */
- # ifndef _CL_HAVE_TCHAR_H
- # define _CL_HAVE_TCHAR_H 1
- # endif
-#endif
-
-#if defined(__MINGW32__) || defined(__SUNPRO_CC) || defined(__SUNPRO_C)
- /* Define to 1 if you have the `tell' function. */
-# ifndef _CL_HAVE_TELL
-# define _CL_HAVE_TELL 1
-# endif
-#endif
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#ifndef _CL_HAVE_UNISTD_H
-#define _CL_HAVE_UNISTD_H 1
-#endif
-
-/* Define to 1 if you have the <vector> header file. */
-#ifndef _CL_HAVE_VECTOR
-#define _CL_HAVE_VECTOR 1
-#endif
-
-/* Define to 1 if you have the `vsnwprintf' function. */
-/* #undef _CL_HAVE_VSNWPRINTF */
-
-/* Define to 1 if you have the <wchar.h> header file. */
-#ifndef _CL_HAVE_WCHAR_H
-#define _CL_HAVE_WCHAR_H 1
-#endif
-
-/* Define to 1 if the system has the type `wchar_t'. */
-#ifndef _CL_HAVE_WCHAR_T
-#define _CL_HAVE_WCHAR_T 1
-#endif
-
-#if !defined(__SUNPRO_CC) && !defined(__SUNPRO_C) && !defined(__MINGW32__) && \
- !defined(Q_OS_MAC) && !defined(__HP_aCC)
- /* Define to 1 if you have the `wcscasecmp' function. */
-# ifndef _CL_HAVE_WCSCASECMP
-# define _CL_HAVE_WCSCASECMP 1
-# endif
-#endif
-
-/* Define to 1 if you have the `wcscat' function. */
-#ifndef _CL_HAVE_WCSCAT
-#define _CL_HAVE_WCSCAT 1
-#endif
-
-/* Define to 1 if you have the `wcschr' function. */
-#ifndef _CL_HAVE_WCSCHR
-#define _CL_HAVE_WCSCHR 1
-#endif
-
-/* Define to 1 if you have the `wcscmp' function. */
-#ifndef _CL_HAVE_WCSCMP
-#define _CL_HAVE_WCSCMP 1
-#endif
-
-/* Define to 1 if you have the `wcscpy' function. */
-#ifndef _CL_HAVE_WCSCPY
-#define _CL_HAVE_WCSCPY 1
-#endif
-
-/* Define to 1 if you have the `wcscspn' function. */
-#ifndef _CL_HAVE_WCSCSPN
-#define _CL_HAVE_WCSCSPN 1
-#endif
-
-#if defined(__MINGW32__)
- /* Define to 1 if you have the `wcsicmp' function. */
-# ifndef _CL_HAVE_WCSICMP
-# define _CL_HAVE_WCSICMP 1
-# endif
-#endif
-
-/* Define to 1 if you have the `wcslen' function. */
-#ifndef _CL_HAVE_WCSLEN
-#define _CL_HAVE_WCSLEN 1
-#endif
-
-/* Define to 1 if you have the `wcsncmp' function. */
-#ifndef _CL_HAVE_WCSNCMP
-#define _CL_HAVE_WCSNCMP 1
-#endif
-
-/* Define to 1 if you have the `wcsncpy' function. */
-#ifndef _CL_HAVE_WCSNCPY
-#define _CL_HAVE_WCSNCPY 1
-#endif
-
-/* Define to 1 if you have the `wcsstr' function. */
-#ifndef _CL_HAVE_WCSSTR
-#define _CL_HAVE_WCSSTR 1
-#endif
-
-/* Define to 1 if you have the `wcstod' function. */
-#ifndef _CL_HAVE_WCSTOD
-#define _CL_HAVE_WCSTOD 1
-#endif
-
-#if !defined(__SUNPRO_CC) && !defined(__SUNPRO_C) && !defined(__HP_aCC) && !defined(Q_OS_ANDROID)
- /* Define to 1 if you have the `wcstoll' function. */
-# ifndef _CL_HAVE_WCSTOLL
-# define _CL_HAVE_WCSTOLL 1
-# endif
-#endif
-
-#if defined(__MINGW32__)
- /* Define to 1 if you have the `wcsupr' function. */
-# ifndef _CL_HAVE_WCSUPR
-# define _CL_HAVE_WCSUPR 1
-# endif
-#endif
-
-#if defined(__SUNPRO_CC) || defined(__SUNPRO_C) || defined(__HP_aCC)
- /* Define to 1 if you have a functioning <wchar.h> header file. */
-# ifndef _CL_HAVE_WCTYPE_H
-# define _CL_HAVE_WCTYPE_H
-# endif
-#endif
-
-/* Define to 1 if you have the `wprintf' function. */
-/* #undef _CL_HAVE_WPRINTF */
-
-#if defined(__MINGW32__)
- /* Define to 1 if you have the `_filelength' function. */
-# ifndef _CL_HAVE__FILELENGTH
-# define _CL_HAVE__FILELENGTH 1
-# endif
-#endif
-
-/* How to define a static const in a class */
-#ifndef LUCENE_STATIC_CONSTANT_SYNTAX
-#define LUCENE_STATIC_CONSTANT_SYNTAX 1
-#endif
-
-/* Name of package */
-#ifndef _CL_PACKAGE
-#define _CL_PACKAGE "clucene-core"
-#endif
-
-/* Define to the address where bug reports for this package should be sent. */
-#ifndef _CL_PACKAGE_BUGREPORT
-#define _CL_PACKAGE_BUGREPORT ""
-#endif
-
-/* Define to the full name of this package. */
-#ifndef _CL_PACKAGE_NAME
-#define _CL_PACKAGE_NAME ""
-#endif
-
-/* Define to the full name and version of this package. */
-#ifndef _CL_PACKAGE_STRING
-#define _CL_PACKAGE_STRING ""
-#endif
-
-/* Define to the one symbol short name of this package. */
-#ifndef _CL_PACKAGE_TARNAME
-#define _CL_PACKAGE_TARNAME ""
-#endif
-
-/* Define to the version of this package. */
-#ifndef _CL_PACKAGE_VERSION
-#define _CL_PACKAGE_VERSION ""
-#endif
-
-/* Define to the necessary symbol if this constant uses a non-standard name on
- your system. */
-/* #undef _CL_PTHREAD_CREATE_JOINABLE */
-
-/* The size of a `unsigned char', as computed by sizeof. */
-/* #undef _CL_SIZEOF_UNSIGNED_CHAR */
-
-/* The size of a `unsigned int', as computed by sizeof. */
-/* #undef _CL_SIZEOF_UNSIGNED_INT */
-
-/* The size of a `unsigned long', as computed by sizeof. */
-/* #undef _CL_SIZEOF_UNSIGNED_LONG */
-
-/* The size of a `unsigned long long', as computed by sizeof. */
-/* #undef _CL_SIZEOF_UNSIGNED_LONG_LONG */
-
-/* The size of a `unsigned __int64', as computed by sizeof. */
-/* #undef _CL_SIZEOF_UNSIGNED___INT64 */
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef _CL_STAT_MACROS_BROKEN */
-
-#if !defined(__HP_aCC)
- /* Define to 1 if you have the ANSI C header files. */
-# ifndef _CL_STDC_HEADERS
-# define _CL_STDC_HEADERS 1
-# endif
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-# ifndef _CL_TIME_WITH_SYS_TIME
-# define _CL_TIME_WITH_SYS_TIME 1
-# endif
-#endif
-
-/* Version number of package */
-#ifndef _CL_VERSION
-#define _CL_VERSION "0.9.17"
-#endif
-
-/* Forces into Ascii mode */
-/* #undef _ASCII */
-
-/* Conditional Debugging */
-/* #undef _CL__CND_DEBUG */
-
-/* debugging option */
-/* #undef _DEBUG */
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* If not already defined, then define as a datatype of *exactly* 32 bits. */
-/* #undef uint32_t */
-
-/* If not already defined, then define as a datatype of *exactly* 64 bits. */
-/* #undef uint64_t */
-
-/* If not already defined, then define as a datatype of *exactly* 8 bits. */
-/* #undef uint8_t */
-
-/* once:
-_SRC_CLUCENE_CLUCENE_CONFIG_H
-*/
-#endif
-
-
-#if defined Q_CC_MSVC && _MSC_VER < 1300
-# define LUCENE_NO_STDC_NAMESPACE
-#endif
-
-
-#endif // QCLUCENE_CONFIG_P_H
-
diff --git a/src/assistant/clucene/qclucene_global_p.h b/src/assistant/clucene/qclucene_global_p.h
deleted file mode 100644
index c46311bc9..000000000
--- a/src/assistant/clucene/qclucene_global_p.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QCLUCENE_GLOBAL_P_H
-#define QCLUCENE_GLOBAL_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#if !defined(_MSC_VER)
-# include "qclucene-config_p.h"
-#endif
-
-#include <QtCore/QChar>
-#include <QtCore/QString>
-
-#if !defined(_MSC_VER) && !defined(__MINGW32__) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
-# if !defined(TCHAR)
-# define TCHAR wchar_t
-# endif
-#else
-# include <qt_windows.h>
-#endif
-
-QT_BEGIN_NAMESPACE
-
-#ifdef QT_STATIC
-# define Q_CLUCENE_EXPORT
-#elif defined(QT_BUILD_CLUCENE_LIB)
-# define Q_CLUCENE_EXPORT Q_DECL_EXPORT
-#else
-# define Q_CLUCENE_EXPORT Q_DECL_IMPORT
-#endif
-
-//
-// W A R N I N G
-// -------------
-//
-// adjustments here, need to be done in
-// QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well
-//
-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS)
-
-#elif !defined(DISABLE_NAMESPACE)
-# ifdef QT_NAMESPACE
-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{
-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 {
-
-# define CL_NS_END }}}
-# define CL_NS_END2 }}}}
-
-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub;
-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2;
-
-# define CL_NS(sub) QT_NAMESPACE::lucene::sub
-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2
-# else
-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{
-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 {
-
-# define CL_NS_END }}
-# define CL_NS_END2 }}}
-
-# define CL_NS_USE(sub) using namespace lucene::sub;
-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2;
-
-# define CL_NS(sub) lucene::sub
-# define CL_NS2(sub,sub2) lucene::sub::sub2
-# endif
-#else
-# define CL_NS_DEF(sub)
-# define CL_NS_DEF2(sub, sub2)
-# define CL_NS_END
-# define CL_NS_END2
-# define CL_NS_USE(sub)
-# define CL_NS_USE2(sub,sub2)
-# define CL_NS(sub)
-# define CL_NS2(sub,sub2)
-#endif
-
-namespace QtCLuceneHelpers {
- inline TCHAR* QStringToTChar(const QString &str)
- {
- TCHAR *string = new TCHAR[(str.length() +1) * sizeof(TCHAR)];
- memset(string, 0, (str.length() +1) * sizeof(TCHAR));
- #if defined(UNICODE) || defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
- str.toWCharArray(string);
- #else
- const QByteArray ba = str.toLatin1();
- strcpy(string, ba.constData());
- #endif
- return string;
- }
-
- inline QString TCharToQString(const TCHAR *string)
- {
- #if defined(UNICODE) || defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
- QString retValue = QString::fromWCharArray(string);
- return retValue;
- #else
- return QString(QLatin1String(string));
- #endif
- }
-}
-using namespace QtCLuceneHelpers;
-
-QT_END_NAMESPACE
-
-#endif // QCLUCENE_GLOBAL_P_H
diff --git a/src/assistant/clucene/qdocument.cpp b/src/assistant/clucene/qdocument.cpp
deleted file mode 100644
index e9448931f..000000000
--- a/src/assistant/clucene/qdocument.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qdocument_p.h"
-#include "qreader_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/util/Reader.h>
-#include <CLucene/document/Document.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneDocumentPrivate::QCLuceneDocumentPrivate()
- : QSharedData()
-{
- document = 0;
- deleteCLuceneDocument = true;
-}
-
-QCLuceneDocumentPrivate::QCLuceneDocumentPrivate(const QCLuceneDocumentPrivate &other)
- : QSharedData()
-{
- document = _CL_POINTER(other.document);
- deleteCLuceneDocument = other.deleteCLuceneDocument;
-}
-
-QCLuceneDocumentPrivate::~QCLuceneDocumentPrivate()
-{
- if (deleteCLuceneDocument)
- _CLDECDELETE(document);
-}
-
-
-QCLuceneDocument::QCLuceneDocument()
- : d(new QCLuceneDocumentPrivate())
-{
- // nothing todo
- d->document = new lucene::document::Document();
-}
-
-QCLuceneDocument::~QCLuceneDocument()
-{
- qDeleteAll(fieldList);
- fieldList.clear();
-}
-
-void QCLuceneDocument::add(QCLuceneField *field)
-{
- field->d->deleteCLuceneField = false;
- d->document->add(*field->d->field);
- fieldList.append(field);
-}
-
-QCLuceneField* QCLuceneDocument::getField(const QString &name) const
-{
- for (QCLuceneField *field : qAsConst(fieldList)) {
- if (field->name() == name && field->d->field != 0)
- return field;
- }
-
- QCLuceneField *field = 0;
- TCHAR *fieldName = QStringToTChar(name);
- lucene::document::Field *f = d->document->getField(fieldName);
- if (f) {
- field = new QCLuceneField();
- field->d->field = f;
- fieldList.append(field);
- field->d->deleteCLuceneField = false;
-
- lucene::util::Reader *r = f->readerValue();
- if (r) {
- field->reader->d->reader = r;
- field->reader->d->deleteCLuceneReader = false;
- }
- }
- delete [] fieldName;
-
- return field;
-}
-
-QString QCLuceneDocument::get(const QString &name) const
-{
- QCLuceneField* field = getField(name);
- if (field)
- return field->stringValue();
-
- return QString();
-}
-
-QString QCLuceneDocument::toString() const
-{
- return TCharToQString(d->document->toString());
-}
-
-void QCLuceneDocument::setBoost(qreal boost)
-{
- d->document->setBoost(qreal(boost));
-}
-
-qreal QCLuceneDocument::getBoost() const
-{
- return qreal(d->document->getBoost());
-}
-
-void QCLuceneDocument::removeField(const QString &name)
-{
- TCHAR *fieldName = QStringToTChar(name);
- d->document->removeField(fieldName);
- delete [] fieldName;
-
- QList<QCLuceneField*> tmp;
- lucene::document::DocumentFieldEnumeration *dfe = d->document->fields();
- while (dfe->hasMoreElements()) {
- const lucene::document::Field* f = dfe->nextElement();
- for (QCLuceneField *field : qAsConst(fieldList)) {
- if (f == field->d->field) {
- tmp.append(field);
- break;
- }
- }
- }
- _CLDELETE(dfe);
- fieldList = tmp;
-}
-
-void QCLuceneDocument::removeFields(const QString &name)
-{
- for (qint32 i = fieldList.count() -1; i >= 0; --i) {
- QCLuceneField* field = fieldList.at(i);
- if (field->name() == name)
- delete fieldList.takeAt(i);
- }
-
- TCHAR *fieldName = QStringToTChar(name);
- d->document->removeFields(fieldName);
- delete [] fieldName;
-}
-
-QStringList QCLuceneDocument::getValues(const QString &name) const
-{
- TCHAR *fieldName = QStringToTChar(name);
- TCHAR **values = d->document->getValues(fieldName);
-
- QStringList retValue;
- if (values) {
- for (qint32 i = 0; 0 != values[i]; ++i) {
- retValue.append(TCharToQString((const TCHAR*)values[i]));
- delete [] values[i]; values[i] = 0;
- }
- delete [] values;
- }
-
- delete [] fieldName;
- return retValue;
-}
-
-void QCLuceneDocument::clear()
-{
- d->document->clear();
- qDeleteAll(fieldList);
- fieldList.clear();
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qdocument_p.h b/src/assistant/clucene/qdocument_p.h
deleted file mode 100644
index 14daaf720..000000000
--- a/src/assistant/clucene/qdocument_p.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QDOCUMENT_P_H
-#define QDOCUMENT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qfield_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QList>
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(document)
- class Document;
-CL_NS_END
-CL_NS_USE(document)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneHits;
-class QCLuceneIndexReader;
-class QCLuceneIndexWriter;
-class QCLuceneIndexSearcher;
-class QCLuceneMultiSearcher;
-
-class Q_CLUCENE_EXPORT QCLuceneDocumentPrivate : public QSharedData
-{
-public:
- QCLuceneDocumentPrivate();
- QCLuceneDocumentPrivate(const QCLuceneDocumentPrivate &other);
-
- ~QCLuceneDocumentPrivate();
-
- Document *document;
- bool deleteCLuceneDocument;
-
-private:
- QCLuceneDocumentPrivate &operator=(const QCLuceneDocumentPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneDocument
-{
-public:
- QCLuceneDocument();
- ~QCLuceneDocument();
-
- void add(QCLuceneField *field);
- QCLuceneField* getField(const QString &name) const;
- QString get(const QString &name) const;
- QString toString() const;
- void setBoost(qreal boost);
- qreal getBoost() const;
- void removeField(const QString &name);
- void removeFields(const QString &name);
- QStringList getValues(const QString &name) const;
- void clear();
-
-protected:
- friend class QCLuceneHits;
- friend class QCLuceneIndexReader;
- friend class QCLuceneIndexWriter;
- friend class QCLuceneIndexSearcher;
- friend class QCLuceneMultiSearcher;
- QSharedDataPointer<QCLuceneDocumentPrivate> d;
-
-private:
- mutable QList<QCLuceneField*> fieldList;
-};
-
-QT_END_NAMESPACE
-
-#endif // QDOCUMENT_P_H
diff --git a/src/assistant/clucene/qfield.cpp b/src/assistant/clucene/qfield.cpp
deleted file mode 100644
index 4092aa10c..000000000
--- a/src/assistant/clucene/qfield.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qfield_p.h"
-#include "qreader_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/document/Field.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneFieldPrivate::QCLuceneFieldPrivate()
- : QSharedData()
-{
- field = 0;
- deleteCLuceneField = true;
-}
-
-QCLuceneFieldPrivate::QCLuceneFieldPrivate(const QCLuceneFieldPrivate &other)
- : QSharedData()
-{
- field = _CL_POINTER(other.field);
- deleteCLuceneField = other.deleteCLuceneField;
-}
-
-QCLuceneFieldPrivate::~QCLuceneFieldPrivate()
-{
- if (deleteCLuceneField)
- _CLDECDELETE(field);
-}
-
-
-QCLuceneField::QCLuceneField()
- : d(new QCLuceneFieldPrivate())
- , reader(0)
-{
- // nothing todo
-}
-
-QCLuceneField::QCLuceneField(const QString &name, const QString &value, int configs)
- : d(new QCLuceneFieldPrivate())
- , reader(0)
-{
- TCHAR* fieldName = QStringToTChar(name);
- TCHAR* fieldValue = QStringToTChar(value);
-
- d->field = new lucene::document::Field(fieldName, fieldValue, configs);
-
- delete [] fieldName;
- delete [] fieldValue;
-}
-
-QCLuceneField::QCLuceneField(const QString &name, QCLuceneReader *reader,
- int configs)
- : d(new QCLuceneFieldPrivate())
- , reader(reader)
-{
- TCHAR* fieldName = QStringToTChar(name);
-
- reader->d->deleteCLuceneReader = false; // clucene takes ownership
- d->field = new lucene::document::Field(fieldName, reader->d->reader, configs);
-
- delete [] fieldName;
-}
-
-QCLuceneField::~QCLuceneField()
-{
- delete reader;
-}
-
-QString QCLuceneField::name() const
-{
- return TCharToQString(d->field->name());
-}
-
-QString QCLuceneField::stringValue() const
-{
- return TCharToQString((const TCHAR*)d->field->stringValue());
-}
-
-QCLuceneReader* QCLuceneField::readerValue() const
-{
- return reader;
-}
-
-bool QCLuceneField::isStored() const
-{
- return d->field->isStored();
-}
-
-bool QCLuceneField::isIndexed() const
-{
- return d->field->isIndexed();
-}
-
-bool QCLuceneField::isTokenized() const
-{
- return d->field->isTokenized();
-}
-
-bool QCLuceneField::isCompressed() const
-{
- return d->field->isCompressed();
-}
-
-void QCLuceneField::setConfig(int termVector)
-{
- d->field->setConfig(termVector);
-}
-
-bool QCLuceneField::isTermVectorStored() const
-{
- return d->field->isTermVectorStored();
-}
-
-bool QCLuceneField::isStoreOffsetWithTermVector() const
-{
- return d->field->isStoreOffsetWithTermVector();
-}
-
-bool QCLuceneField::isStorePositionWithTermVector() const
-{
- return d->field->isStorePositionWithTermVector();
-}
-
-qreal QCLuceneField::getBoost() const
-{
- return qreal(d->field->getBoost());
-}
-
-void QCLuceneField::setBoost(qreal value)
-{
- d->field->setBoost(qreal(value));
-}
-
-bool QCLuceneField::isBinary() const
-{
- return d->field->isBinary();
-}
-
-bool QCLuceneField::getOmitNorms() const
-{
- return d->field->getOmitNorms();
-}
-
-void QCLuceneField::setOmitNorms(bool omitNorms)
-{
- d->field->setOmitNorms(omitNorms);
-}
-
-QString QCLuceneField::toString() const
-{
- return TCharToQString(d->field->toString());
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qfield_p.h b/src/assistant/clucene/qfield_p.h
deleted file mode 100644
index 61fe38e32..000000000
--- a/src/assistant/clucene/qfield_p.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QFIELD_P_H
-#define QFIELD_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(document)
- class Field;
-CL_NS_END
-CL_NS_USE(document)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneReader;
-class QCLuceneDocument;
-
-class Q_CLUCENE_EXPORT QCLuceneFieldPrivate : public QSharedData
-{
-public:
- QCLuceneFieldPrivate();
- QCLuceneFieldPrivate(const QCLuceneFieldPrivate &other);
-
- ~QCLuceneFieldPrivate();
-
- Field *field;
- bool deleteCLuceneField;
-
-private:
- QCLuceneFieldPrivate &operator=(const QCLuceneFieldPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneField
-{
-public:
- enum Store {
- STORE_YES = 1,
- STORE_NO = 2,
- STORE_COMPRESS = 4
- };
-
- enum Index {
- INDEX_NO = 16,
- INDEX_TOKENIZED = 32,
- INDEX_UNTOKENIZED = 64,
- INDEX_NONORMS = 128
- };
-
- enum TermVector {
- TERMVECTOR_NO = 256,
- TERMVECTOR_YES = 512,
- TERMVECTOR_WITH_POSITIONS = 1024,
- TERMVECTOR_WITH_OFFSETS = 2048
- };
-
- QCLuceneField(const QString &name, const QString &value, int configs);
- QCLuceneField(const QString &name, QCLuceneReader *reader, int configs);
- ~QCLuceneField();
-
- QString name() const;
- QString stringValue() const;
- QCLuceneReader* readerValue() const;
- bool isStored() const;
- bool isIndexed() const;
- bool isTokenized() const;
- bool isCompressed() const;
- void setConfig(int termVector);
- bool isTermVectorStored() const;
- bool isStoreOffsetWithTermVector() const;
- bool isStorePositionWithTermVector() const;
- qreal getBoost() const;
- void setBoost(qreal value);
- bool isBinary() const;
- bool getOmitNorms() const;
- void setOmitNorms(bool omitNorms);
- QString toString() const;
-
-protected:
- QCLuceneField();
- friend class QCLuceneDocument;
- QSharedDataPointer<QCLuceneFieldPrivate> d;
-
-private:
- QCLuceneReader* reader;
-};
-
-QT_END_NAMESPACE
-
-#endif // QFIELD_P_H
diff --git a/src/assistant/clucene/qfilter.cpp b/src/assistant/clucene/qfilter.cpp
deleted file mode 100644
index 38c71a7c2..000000000
--- a/src/assistant/clucene/qfilter.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qfilter_p.h"
-
-#include <CLucene.h>
-#include <CLucene/search/Filter.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneFilterPrivate::QCLuceneFilterPrivate()
- : QSharedData()
-{
- filter = 0;
- deleteCLuceneFilter = true;
-}
-
-QCLuceneFilterPrivate::QCLuceneFilterPrivate(const QCLuceneFilterPrivate &other)
- : QSharedData()
-{
- filter = _CL_POINTER(other.filter);
- deleteCLuceneFilter = other.deleteCLuceneFilter;
-}
-
-QCLuceneFilterPrivate::~QCLuceneFilterPrivate ()
-{
- if (deleteCLuceneFilter)
- _CLDECDELETE(filter);
-}
-
-
-QCLuceneFilter::QCLuceneFilter()
- : d(new QCLuceneFilterPrivate())
-{
- // nothing todo
-}
-
-QCLuceneFilter::~QCLuceneFilter()
-{
- // nothing todo
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qfilter_p.h b/src/assistant/clucene/qfilter_p.h
deleted file mode 100644
index 48efbf2a1..000000000
--- a/src/assistant/clucene/qfilter_p.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QFilter_P_H
-#define QFilter_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qclucene_global_p.h"
-
-#include <QtCore/QSharedData>
-#include <QtCore/QSharedDataPointer>
-
-CL_NS_DEF(search)
- class Filter;
-CL_NS_END
-CL_NS_USE(search)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneHits;
-class QCLuceneSearcher;
-
-class Q_CLUCENE_EXPORT QCLuceneFilterPrivate : public QSharedData
-{
-public:
- QCLuceneFilterPrivate();
- QCLuceneFilterPrivate(const QCLuceneFilterPrivate &other);
-
- ~QCLuceneFilterPrivate ();
-
- Filter *filter;
- bool deleteCLuceneFilter;
-
-private:
- QCLuceneFilterPrivate &operator=(const QCLuceneFilterPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneFilter
-{
- QCLuceneFilter();
- virtual ~QCLuceneFilter();
-
-protected:
- friend class QCLuceneHits;
- friend class QCLuceneSearcher;
- QSharedDataPointer<QCLuceneFilterPrivate> d;
-};
-
-QT_END_NAMESPACE
-
-#endif // QFilter_P_H
diff --git a/src/assistant/clucene/qhits.cpp b/src/assistant/clucene/qhits.cpp
deleted file mode 100644
index 0a75b417b..000000000
--- a/src/assistant/clucene/qhits.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qhits_p.h"
-#include "qsearchable_p.h"
-
-#include <CLucene.h>
-#include <CLucene/search/SearchHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneHitsPrivate::QCLuceneHitsPrivate()
- : QSharedData()
-{
- hits = 0;
- deleteCLuceneHits = true;
-}
-
-QCLuceneHitsPrivate::QCLuceneHitsPrivate(const QCLuceneHitsPrivate &other)
- : QSharedData()
-{
- hits = _CL_POINTER(other.hits);
- deleteCLuceneHits = other.deleteCLuceneHits;
-}
-
-QCLuceneHitsPrivate::~QCLuceneHitsPrivate()
-{
- if (deleteCLuceneHits)
- _CLDECDELETE(hits);
-}
-
-
-QCLuceneHits::QCLuceneHits(const QCLuceneSearcher &searcher,
- const QCLuceneQuery &query, const QCLuceneFilter &filter)
- : d(new QCLuceneHitsPrivate())
-{
- d->hits = new lucene::search::Hits(searcher.d->searchable, query.d->query,
- filter.d->filter);
-}
-
-QCLuceneHits::QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query,
- const QCLuceneFilter &filter, const QCLuceneSort &sort)
- : d(new QCLuceneHitsPrivate())
-{
- d->hits = new lucene::search::Hits(searcher.d->searchable, query.d->query,
- filter.d->filter, sort.d->sort);
-}
-
-QCLuceneHits::~QCLuceneHits()
-{
- // nothing todo
-}
-
-QCLuceneDocument QCLuceneHits::document(const qint32 index)
-{
- // TODO: check this
- QCLuceneDocument document;
- document.d->deleteCLuceneDocument = false;
- lucene::document::Document &doc = d->hits->doc(int32_t(index));
- document.d->document = &doc;
-
- return document;
-}
-
-qint32 QCLuceneHits::length() const
-{
- return qint32(d->hits->length());
-}
-
-qint32 QCLuceneHits::id(const qint32 index)
-{
- return qint32(d->hits->id(int32_t(index)));
-}
-
-qreal QCLuceneHits::score(const qint32 index)
-{
- return qreal(d->hits->score(int32_t(index)));
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qhits_p.h b/src/assistant/clucene/qhits_p.h
deleted file mode 100644
index 8fe319a36..000000000
--- a/src/assistant/clucene/qhits_p.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QHITS_P_H
-#define QHITS_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qsort_p.h"
-#include "qquery_p.h"
-#include "qfilter_p.h"
-#include "qdocument_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(search)
- class Hits;
-CL_NS_END
-CL_NS_USE(search)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneSearcher;
-
-class Q_CLUCENE_EXPORT QCLuceneHitsPrivate : public QSharedData
-{
-public:
- QCLuceneHitsPrivate();
- QCLuceneHitsPrivate(const QCLuceneHitsPrivate &other);
-
- ~QCLuceneHitsPrivate();
-
- Hits *hits;
- bool deleteCLuceneHits;
-
-private:
- QCLuceneHitsPrivate &operator=(const QCLuceneHitsPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneHits
-{
-public:
- QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query,
- const QCLuceneFilter &filter);
- QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query,
- const QCLuceneFilter &filter, const QCLuceneSort &sort);
- virtual ~QCLuceneHits();
-
- QCLuceneDocument document(const qint32 index);
- qint32 length() const;
- qint32 id(const qint32 index);
- qreal score(const qint32 index);
-
-protected:
- friend class QCLuceneSearcher;
- QSharedDataPointer<QCLuceneHitsPrivate> d;
-};
-
-QT_END_NAMESPACE
-
-#endif // QHITS_P_H
diff --git a/src/assistant/clucene/qindexreader.cpp b/src/assistant/clucene/qindexreader.cpp
deleted file mode 100644
index 3a97e6c3a..000000000
--- a/src/assistant/clucene/qindexreader.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qindexreader_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/index/IndexReader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneIndexReaderPrivate::QCLuceneIndexReaderPrivate()
- : QSharedData()
-{
- reader = 0;
- deleteCLuceneIndexReader = true;
-}
-
-QCLuceneIndexReaderPrivate::QCLuceneIndexReaderPrivate(const QCLuceneIndexReaderPrivate &other)
- : QSharedData()
-{
- reader = _CL_POINTER(other.reader);
- deleteCLuceneIndexReader = other.deleteCLuceneIndexReader;
-}
-
-QCLuceneIndexReaderPrivate::~QCLuceneIndexReaderPrivate()
-{
- if (deleteCLuceneIndexReader)
- _CLDECDELETE(reader);
-}
-
-
-QCLuceneIndexReader::QCLuceneIndexReader()
- : d(new QCLuceneIndexReaderPrivate())
-{
- // nothing todo, private
-}
-
-QCLuceneIndexReader::~QCLuceneIndexReader()
-{
- // nothing todo
-}
-
-bool QCLuceneIndexReader::isLuceneFile(const QString &filename)
-{
- using namespace lucene::index;
-
- return IndexReader::isLuceneFile(filename);
-}
-
-bool QCLuceneIndexReader::indexExists(const QString &directory)
-{
- using namespace lucene::index;
- return IndexReader::indexExists(directory);
-}
-
-QCLuceneIndexReader QCLuceneIndexReader::open(const QString &path)
-{
- using namespace lucene::index;
-
- QCLuceneIndexReader indexReader;
- indexReader.d->reader = IndexReader::open(path);
-
- return indexReader;
-}
-
-void QCLuceneIndexReader::unlock(const QString &path)
-{
- using namespace lucene::index;
- IndexReader::unlock(path);
-}
-
-bool QCLuceneIndexReader::isLocked(const QString &directory)
-{
- using namespace lucene::index;
- return IndexReader::isLocked(directory);
-}
-
-quint64 QCLuceneIndexReader::lastModified(const QString &directory)
-{
- using namespace lucene::index;
- return quint64(IndexReader::lastModified(directory));
-}
-
-qint64 QCLuceneIndexReader::getCurrentVersion(const QString &directory)
-{
- using namespace lucene::index;
- return qint64(IndexReader::getCurrentVersion(directory));
-}
-
-void QCLuceneIndexReader::close()
-{
- d->reader->close();
-}
-
-bool QCLuceneIndexReader::isCurrent()
-{
- return d->reader->isCurrent();
-}
-
-void QCLuceneIndexReader::undeleteAll()
-{
- d->reader->undeleteAll();
-}
-
-qint64 QCLuceneIndexReader::getVersion()
-{
- return qint64(d->reader->getVersion());
-}
-
-void QCLuceneIndexReader::deleteDocument(qint32 docNum)
-{
- d->reader->deleteDocument(int32_t(docNum));
-}
-
-bool QCLuceneIndexReader::hasNorms(const QString &field)
-{
- TCHAR *fieldName = QStringToTChar(field);
- bool retValue = d->reader->hasNorms(fieldName);
- delete [] fieldName;
-
- return retValue;
-}
-
-qint32 QCLuceneIndexReader::deleteDocuments(const QCLuceneTerm &term)
-{
- return d->reader->deleteDocuments(term.d->term);
-}
-
-bool QCLuceneIndexReader::document(qint32 index, QCLuceneDocument &document)
-{
- if (!document.d->document)
- document.d->document = new lucene::document::Document();
-
- if (d->reader->document(int32_t(index), document.d->document))
- return true;
-
- return false;
-}
-
-void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, qreal value)
-{
- TCHAR *fieldName = QStringToTChar(field);
- d->reader->setNorm(int32_t(doc), fieldName, qreal(value));
- delete [] fieldName;
-}
-
-void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, quint8 value)
-{
- TCHAR *fieldName = QStringToTChar(field);
- d->reader->setNorm(int32_t(doc), fieldName, uint8_t(value));
- delete [] fieldName;
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qindexreader_p.h b/src/assistant/clucene/qindexreader_p.h
deleted file mode 100644
index 3bf82acfc..000000000
--- a/src/assistant/clucene/qindexreader_p.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QINDEXREADER_P_H
-#define QINDEXREADER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qterm_p.h"
-#include "qdocument_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QList>
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(index)
- class IndexReader;
-CL_NS_END
-CL_NS_USE(index)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneIndexWriter;
-class QCLuceneIndexSearcher;
-
-class Q_CLUCENE_EXPORT QCLuceneIndexReaderPrivate : public QSharedData
-{
-public:
- QCLuceneIndexReaderPrivate();
- QCLuceneIndexReaderPrivate(const QCLuceneIndexReaderPrivate &other);
-
- ~QCLuceneIndexReaderPrivate();
-
- IndexReader *reader;
- bool deleteCLuceneIndexReader;
-
-private:
- QCLuceneIndexReaderPrivate &operator=(const QCLuceneIndexReaderPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneIndexReader
-{
-public:
- enum FieldOption {
- ALL = 1,
- INDEXED = 2,
- UNINDEXED = 4,
- INDEXED_WITH_TERMVECTOR = 8,
- INDEXED_NO_TERMVECTOR = 16,
- TERMVECTOR = 32,
- TERMVECTOR_WITH_POSITION = 64,
- TERMVECTOR_WITH_OFFSET = 128,
- TERMVECTOR_WITH_POSITION_OFFSET = 256
- };
-
- virtual ~QCLuceneIndexReader();
-
- static bool isLuceneFile(const QString &filename);
- static bool indexExists(const QString &directory);
- static QCLuceneIndexReader open(const QString &path);
-
- static void unlock(const QString &path);
- static bool isLocked(const QString &directory);
-
- static quint64 lastModified(const QString &directory);
- static qint64 getCurrentVersion(const QString &directory);
-
- void close();
- bool isCurrent();
- void undeleteAll();
- qint64 getVersion();
- void deleteDocument(qint32 docNum);
- bool hasNorms(const QString &field);
- qint32 deleteDocuments(const QCLuceneTerm &term);
- bool document(qint32 index, QCLuceneDocument &document);
- void setNorm(qint32 doc, const QString &field, qreal value);
- void setNorm(qint32 doc, const QString &field, quint8 value);
-
-protected:
- friend class QCLuceneIndexWriter;
- friend class QCLuceneIndexSearcher;
- QSharedDataPointer<QCLuceneIndexReaderPrivate> d;
-
-private:
- QCLuceneIndexReader();
-};
-
-QT_END_NAMESPACE
-
-#endif // QINDEXREADER_P_H
diff --git a/src/assistant/clucene/qindexwriter.cpp b/src/assistant/clucene/qindexwriter.cpp
deleted file mode 100644
index cfbf43aec..000000000
--- a/src/assistant/clucene/qindexwriter.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qindexwriter_p.h"
-#include "qindexreader_p.h"
-
-#include <CLucene.h>
-#include <CLucene/index/IndexWriter.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneIndexWriterPrivate::QCLuceneIndexWriterPrivate()
- : QSharedData()
-{
- writer = 0;
- deleteCLuceneIndexWriter = true;
-}
-
-QCLuceneIndexWriterPrivate::QCLuceneIndexWriterPrivate(const QCLuceneIndexWriterPrivate &other)
- : QSharedData()
-{
- writer = _CL_POINTER(other.writer);
- deleteCLuceneIndexWriter = other.deleteCLuceneIndexWriter;
-}
-
-QCLuceneIndexWriterPrivate::~QCLuceneIndexWriterPrivate()
-{
- if (deleteCLuceneIndexWriter)
- _CLDECDELETE(writer);
-}
-
-
-QCLuceneIndexWriter::QCLuceneIndexWriter(const QString &path,
- QCLuceneAnalyzer &analyzer,
- bool create, bool closeDir)
- : d(new QCLuceneIndexWriterPrivate())
- , analyzer(analyzer)
-{
- d->writer = new lucene::index::IndexWriter(path,
- analyzer.d->analyzer, create, closeDir);
-}
-
-QCLuceneIndexWriter::~QCLuceneIndexWriter()
-{
- // nothing todo
-}
-
-void QCLuceneIndexWriter::close()
-{
- d->writer->close();
-}
-
-void QCLuceneIndexWriter::optimize()
-{
- d->writer->optimize();
-}
-
-qint32 QCLuceneIndexWriter::docCount()
-{
- return qint32(d->writer->docCount());
-}
-
-QCLuceneAnalyzer QCLuceneIndexWriter::getAnalyzer()
-{
- return analyzer;
-}
-
-void QCLuceneIndexWriter::addIndexes(const QList<QCLuceneIndexReader*> &readers)
-{
- using namespace lucene::index;
- IndexReader** readerArray = new IndexReader*[readers.count()];
-
- for (int i = 0; i < readers.count(); ++i)
- readerArray[i] = (readers.at(i))->d->reader;
-
- d->writer->addIndexes(readerArray);
- delete [] readerArray;
-}
-
-void QCLuceneIndexWriter::addDocument(QCLuceneDocument &doc,
- QCLuceneAnalyzer &analyzer)
-{
- if (doc.d->document)
- d->writer->addDocument(doc.d->document, analyzer.d->analyzer);
-}
-
-qint32 QCLuceneIndexWriter::getMaxFieldLength() const
-{
- return qint32(d->writer->getMaxFieldLength());
-}
-
-void QCLuceneIndexWriter::setMaxFieldLength(qint32 value)
-{
- d->writer->setMaxFieldLength(int32_t(value));
-}
-
-qint32 QCLuceneIndexWriter::getMaxBufferedDocs() const
-{
- return qint32(d->writer->getMaxBufferedDocs());
-}
-
-void QCLuceneIndexWriter::setMaxBufferedDocs(qint32 value)
-{
- d->writer->setMaxBufferedDocs(int32_t(value));
-}
-
-qint64 QCLuceneIndexWriter::getWriteLockTimeout() const
-{
- return qint64(d->writer->getWriteLockTimeout());
-}
-
-void QCLuceneIndexWriter::setWriteLockTimeout(qint64 writeLockTimeout)
-{
- d->writer->setWriteLockTimeout(int64_t(writeLockTimeout));
-}
-
-qint64 QCLuceneIndexWriter::getCommitLockTimeout() const
-{
- return qint64(d->writer->getCommitLockTimeout());
-}
-
-void QCLuceneIndexWriter::setCommitLockTimeout(qint64 commitLockTimeout)
-{
- d->writer->setCommitLockTimeout(int64_t(commitLockTimeout));
-}
-
-qint32 QCLuceneIndexWriter::getMergeFactor() const
-{
- return qint32(d->writer->getMergeFactor());
-}
-
-void QCLuceneIndexWriter::setMergeFactor(qint32 value)
-{
- d->writer->setMergeFactor(int32_t(value));
-}
-
-qint32 QCLuceneIndexWriter::getTermIndexInterval() const
-{
- return qint32(d->writer->getTermIndexInterval());
-}
-
-void QCLuceneIndexWriter::setTermIndexInterval(qint32 interval)
-{
- d->writer->setTermIndexInterval(int32_t(interval));
-}
-
-qint32 QCLuceneIndexWriter::getMinMergeDocs() const
-{
- return qint32(d->writer->getMinMergeDocs());
-}
-
-void QCLuceneIndexWriter::setMinMergeDocs(qint32 value)
-{
- d->writer->setMinMergeDocs(int32_t(value));
-}
-
-qint32 QCLuceneIndexWriter::getMaxMergeDocs() const
-{
- return qint32(d->writer->getMaxMergeDocs());
-}
-
-void QCLuceneIndexWriter::setMaxMergeDocs(qint32 value)
-{
- d->writer->setMaxMergeDocs(int32_t(value));
-}
-
-bool QCLuceneIndexWriter::getUseCompoundFile() const
-{
- return d->writer->getUseCompoundFile();
-}
-
-void QCLuceneIndexWriter::setUseCompoundFile(bool value)
-{
- d->writer->setUseCompoundFile(value);
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qindexwriter_p.h b/src/assistant/clucene/qindexwriter_p.h
deleted file mode 100644
index 0d172b601..000000000
--- a/src/assistant/clucene/qindexwriter_p.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QINDEXWRITER_P_H
-#define QINDEXWRITER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qanalyzer_p.h"
-#include "qdocument_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(index)
- class IndexWriter;
-CL_NS_END
-CL_NS_USE(index)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneIndexReader;
-
-class Q_CLUCENE_EXPORT QCLuceneIndexWriterPrivate : public QSharedData
-{
-public:
- QCLuceneIndexWriterPrivate();
- QCLuceneIndexWriterPrivate(const QCLuceneIndexWriterPrivate &other);
-
- ~QCLuceneIndexWriterPrivate();
-
- IndexWriter *writer;
- bool deleteCLuceneIndexWriter;
-
-private:
- QCLuceneIndexWriterPrivate &operator=(const QCLuceneIndexWriterPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneIndexWriter
-{
-public:
- enum {
- DEFAULT_MERGE_FACTOR = 10,
- COMMIT_LOCK_TIMEOUT = 10000,
- DEFAULT_MAX_BUFFERED_DOCS = 10,
- DEFAULT_MAX_FIELD_LENGTH = 10000,
- DEFAULT_TERM_INDEX_INTERVAL = 128,
- DEFAULT_MAX_MERGE_DOCS = 0x7FFFFFFFL
- };
-
- QCLuceneIndexWriter(const QString &path, QCLuceneAnalyzer &analyzer,
- bool create, bool closeDir = true);
- virtual ~QCLuceneIndexWriter();
-
- void close();
- void optimize();
- qint32 docCount();
- QCLuceneAnalyzer getAnalyzer();
-
- void addIndexes(const QList<QCLuceneIndexReader*> &readers);
- void addDocument(QCLuceneDocument &doc, QCLuceneAnalyzer &analyzer);
-
- qint32 getMaxFieldLength() const;
- void setMaxFieldLength(qint32 value);
-
- qint32 getMaxBufferedDocs() const;
- void setMaxBufferedDocs(qint32 value);
-
- qint64 getWriteLockTimeout() const;
- void setWriteLockTimeout(qint64 writeLockTimeout);
-
- qint64 getCommitLockTimeout() const;
- void setCommitLockTimeout(qint64 commitLockTimeout);
-
- qint32 getMergeFactor() const;
- void setMergeFactor(qint32 value);
-
- qint32 getTermIndexInterval() const;
- void setTermIndexInterval(qint32 interval);
-
- qint32 getMinMergeDocs() const;
- void setMinMergeDocs(qint32 value);
-
- qint32 getMaxMergeDocs() const;
- void setMaxMergeDocs(qint32 value);
-
- bool getUseCompoundFile() const;
- void setUseCompoundFile(bool value);
-
-protected:
- QSharedDataPointer<QCLuceneIndexWriterPrivate> d;
-
-private:
- QCLuceneAnalyzer analyzer;
-};
-
-QT_END_NAMESPACE
-
-#endif // QINDEXWRITER_P_H
diff --git a/src/assistant/clucene/qquery.cpp b/src/assistant/clucene/qquery.cpp
deleted file mode 100644
index 8acd120af..000000000
--- a/src/assistant/clucene/qquery.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qquery_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/search/PhraseQuery.h>
-#include <CLucene/search/SearchHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneQueryPrivate::QCLuceneQueryPrivate()
- : QSharedData()
-{
- query = 0;
- deleteCLuceneQuery = true;
-}
-
-QCLuceneQueryPrivate::QCLuceneQueryPrivate(const QCLuceneQueryPrivate &other)
- : QSharedData()
-{
- query = _CL_POINTER(other.query);
- deleteCLuceneQuery = other.deleteCLuceneQuery;
-}
-
-QCLuceneQueryPrivate::~QCLuceneQueryPrivate()
-{
- if (deleteCLuceneQuery)
- _CLDECDELETE(query);
-}
-
-
-QCLuceneQuery::QCLuceneQuery()
- : d(new QCLuceneQueryPrivate())
-{
- // nothing todo, private
-}
-
-QCLuceneQuery::~QCLuceneQuery()
-{
- // nothing todo
-}
-
-void QCLuceneQuery::setBoost(qreal boost)
-{
- d->query->setBoost(qreal(boost));
-}
-
-qreal QCLuceneQuery::getBoost() const
-{
- return qreal(d->query->getBoost());
-}
-
-QString QCLuceneQuery::getQueryName() const
-{
- return TCharToQString(d->query->getQueryName());
-}
-
-bool QCLuceneQuery::instanceOf(const QString &other) const
-{
- if (other == getQueryName())
- return true;
-
- return false;
-}
-
-QString QCLuceneQuery::toString(const QString &field) const
-{
- TCHAR *fieldName = QStringToTChar(field);
- QString retValue = TCharToQString(d->query->toString(fieldName));
- delete [] fieldName;
-
- return retValue;
-}
-
-quint32 QCLuceneQuery::hashCode() const
-{
- return quint32(d->query->hashCode());
-}
-
-QString QCLuceneQuery::toString() const
-{
- return TCharToQString(d->query->toString());
-}
-
-bool QCLuceneQuery::equals(const QCLuceneQuery &other) const
-{
- return d->query->equals(other.d->query);
-}
-
-
-QCLucenePrefixQuery::QCLucenePrefixQuery(const QCLuceneTerm &prefix)
- : QCLuceneQuery()
- , prefix(prefix)
-{
- d->query = new lucene::search::PrefixQuery(prefix.d->term);
-}
-
-QCLucenePrefixQuery::~QCLucenePrefixQuery()
-{
- // nothing todo
-}
-
-QString QCLucenePrefixQuery::getClassName()
-{
- return TCharToQString(lucene::search::PrefixQuery::getClassName());
-}
-
-QCLuceneTerm QCLucenePrefixQuery::getPrefix() const
-{
- return prefix;
-}
-
-
-QCLuceneRangeQuery::QCLuceneRangeQuery(const QCLuceneTerm &lowerTerm,
- const QCLuceneTerm &upperTerm,
- bool inclusive)
- : QCLuceneQuery()
- , lowerTerm(lowerTerm)
- , upperTerm(upperTerm)
-{
- d->query = new lucene::search::RangeQuery(lowerTerm.d->term,
- upperTerm.d->term, inclusive);
-}
-
-QCLuceneRangeQuery::~QCLuceneRangeQuery()
-{
- // nothing todo
-}
-
-QString QCLuceneRangeQuery::getClassName()
-{
- return TCharToQString(lucene::search::RangeQuery::getClassName());
-}
-
-QCLuceneTerm QCLuceneRangeQuery::getLowerTerm() const
-{
- return lowerTerm;
-}
-
-QCLuceneTerm QCLuceneRangeQuery::getUpperTerm() const
-{
- return upperTerm;
-}
-
-bool QCLuceneRangeQuery::isInclusive() const
-{
- lucene::search::RangeQuery *query =
- static_cast<lucene::search::RangeQuery*> (d->query);
-
- if (query == 0)
- return false;
-
- return query->isInclusive();
-}
-
-QString QCLuceneRangeQuery::getField() const
-{
- lucene::search::RangeQuery *query =
- static_cast<lucene::search::RangeQuery*> (d->query);
-
- if (query == 0)
- return QString();
-
- return TCharToQString(query->getField());
-}
-
-
-QCLuceneTermQuery::QCLuceneTermQuery(const QCLuceneTerm &term)
- : QCLuceneQuery()
- , term(term)
-{
- d->query = new lucene::search::TermQuery(term.d->term);
-}
-
-QCLuceneTermQuery::~QCLuceneTermQuery()
-{
- // nothing todo
-}
-
-QString QCLuceneTermQuery::getClassName()
-{
- return TCharToQString(lucene::search::TermQuery::getClassName());
-}
-
-QCLuceneTerm QCLuceneTermQuery::getTerm() const
-{
- return term;
-}
-
-
-QCLuceneBooleanQuery::QCLuceneBooleanQuery()
- : QCLuceneQuery()
-{
- d->query = new lucene::search::BooleanQuery();
-}
-
-QCLuceneBooleanQuery::~QCLuceneBooleanQuery()
-{
- qDeleteAll(queries);
-}
-
-QString QCLuceneBooleanQuery::getClassName()
-{
- return TCharToQString(lucene::search::BooleanQuery::getClassName());
-}
-
-quint32 QCLuceneBooleanQuery::getClauseCount() const
-{
- lucene::search::BooleanQuery *query =
- static_cast<lucene::search::BooleanQuery*> (d->query);
-
- if (query == 0)
- return 1024;
-
- return quint32(query->getClauseCount());
-}
-
-quint32 QCLuceneBooleanQuery::getMaxClauseCount() const
-{
- lucene::search::BooleanQuery *query =
- static_cast<lucene::search::BooleanQuery*> (d->query);
-
- if (query == 0)
- return 1024;
-
- return quint32(query->getMaxClauseCount());
-}
-
-void QCLuceneBooleanQuery::setMaxClauseCount(quint32 maxClauseCount)
-{
- lucene::search::BooleanQuery *query =
- static_cast<lucene::search::BooleanQuery*> (d->query);
-
- if (query == 0)
- return;
-
- query->setMaxClauseCount(size_t(maxClauseCount));
-}
-
-void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool required, bool prohibited)
-{
- add(query, false, required, prohibited);
-}
-
-void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool delQuery,
- bool required, bool prohibited)
-{
- lucene::search::BooleanQuery *booleanQuery =
- static_cast<lucene::search::BooleanQuery*> (d->query);
-
- if (booleanQuery == 0)
- return;
-
- booleanQuery->add(query->d->query, delQuery, required, prohibited);
-
- if (delQuery) {
- queries.append(query);
- query->d->deleteCLuceneQuery = false;
- }
-}
-
-
-QCLucenePhraseQuery::QCLucenePhraseQuery()
- : QCLuceneQuery()
-{
- d->query = new lucene::search::PhraseQuery();
-}
-
-QCLucenePhraseQuery::~QCLucenePhraseQuery()
-{
- termList.clear();
-}
-
-QString QCLucenePhraseQuery::getClassName()
-{
- return TCharToQString(lucene::search::RangeQuery::getClassName());
-}
-
-qint32 QCLucenePhraseQuery::getSlop() const
-{
- lucene::search::PhraseQuery *phraseQuery =
- static_cast<lucene::search::PhraseQuery*> (d->query);
-
- if (phraseQuery == 0)
- return 0;
-
- return qint32(phraseQuery->getSlop());
-}
-
-void QCLucenePhraseQuery::setSlop(const qint32 slop)
-{
- lucene::search::PhraseQuery *phraseQuery =
- static_cast<lucene::search::PhraseQuery*> (d->query);
-
- if (phraseQuery == 0)
- return;
-
- phraseQuery->setSlop(int32_t(slop));
-}
-
-void QCLucenePhraseQuery::addTerm(const QCLuceneTerm &term)
-{
- lucene::search::PhraseQuery *phraseQuery =
- static_cast<lucene::search::PhraseQuery*> (d->query);
-
- if (phraseQuery == 0)
- return;
-
- termList.append(term);
- phraseQuery->add(term.d->term);
-}
-
-void QCLucenePhraseQuery::addTerm(const QCLuceneTerm &term, qint32 position)
-{
- lucene::search::PhraseQuery *phraseQuery =
- static_cast<lucene::search::PhraseQuery*> (d->query);
-
- if (phraseQuery == 0)
- return;
-
- termList.insert(position, term);
- phraseQuery->add(term.d->term, int32_t(position));
-
-}
-
-QString QCLucenePhraseQuery::getFieldName() const
-{
- lucene::search::PhraseQuery *phraseQuery =
- static_cast<lucene::search::PhraseQuery*> (d->query);
-
- if (phraseQuery == 0)
- return QString();
-
- return TCharToQString(phraseQuery->getFieldName());
-}
-
-QList<QCLuceneTerm> QCLucenePhraseQuery::getTerms() const
-{
- return termList;
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qquery_p.h b/src/assistant/clucene/qquery_p.h
deleted file mode 100644
index bcf528e3c..000000000
--- a/src/assistant/clucene/qquery_p.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QQUERY_P_H
-#define QQUERY_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qterm_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QList>
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(search)
- class Query;
-CL_NS_END
-CL_NS_USE(search)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneHits;
-class QCLuceneTermQuery;
-class QCLuceneRangeQuery;
-class QCLuceneQueryParser;
-class QCLucenePrefixQuery;
-class QCLuceneBooleanQuery;
-class QCLucenePhraseQuery;
-
-class Q_CLUCENE_EXPORT QCLuceneQueryPrivate : public QSharedData
-{
-public:
- QCLuceneQueryPrivate();
- QCLuceneQueryPrivate(const QCLuceneQueryPrivate &other);
-
- ~QCLuceneQueryPrivate();
-
- Query *query;
- bool deleteCLuceneQuery;
-
-private:
- QCLuceneQueryPrivate &operator=(const QCLuceneQueryPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneQuery
-{
-public:
- virtual ~QCLuceneQuery();
-
- void setBoost(qreal boost);
- qreal getBoost() const;
- QString getQueryName() const;
- bool instanceOf(const QString &other) const;
- QString toString(const QString &field) const;
- quint32 hashCode() const;
- QString toString() const;
- bool equals(const QCLuceneQuery &other) const;
-
-protected:
- friend class QCLuceneHits;
- friend class QCLuceneTermQuery;
- friend class QCLuceneRangeQuery;
- friend class QCLucenePrefixQuery;
- friend class QCLuceneQueryParser;
- friend class QCLuceneBooleanQuery;
- friend class QCLucenePhraseQuery;
- QSharedDataPointer<QCLuceneQueryPrivate> d;
-
-private:
- QCLuceneQuery();
-};
-
-class Q_CLUCENE_EXPORT QCLucenePrefixQuery : public QCLuceneQuery
-{
-public:
- QCLucenePrefixQuery(const QCLuceneTerm &prefix);
- ~QCLucenePrefixQuery();
-
- static QString getClassName();
-
- QCLuceneTerm getPrefix() const;
-
-private:
- QCLuceneTerm prefix;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneRangeQuery : public QCLuceneQuery
-{
-public:
- QCLuceneRangeQuery(const QCLuceneTerm &lowerTerm,
- const QCLuceneTerm &upperTerm, bool inclusive);
- ~QCLuceneRangeQuery();
-
- static QString getClassName();
-
- QCLuceneTerm getLowerTerm() const;
- QCLuceneTerm getUpperTerm() const;
-
- bool isInclusive() const;
- QString getField() const;
-
-private:
- QCLuceneTerm lowerTerm;
- QCLuceneTerm upperTerm;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneTermQuery : public QCLuceneQuery
-{
-public:
- QCLuceneTermQuery(const QCLuceneTerm &term);
- ~QCLuceneTermQuery();
-
- static QString getClassName();
-
- QCLuceneTerm getTerm() const;
-
-private:
- QCLuceneTerm term;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneBooleanQuery : public QCLuceneQuery
-{
-public:
- QCLuceneBooleanQuery();
- ~QCLuceneBooleanQuery();
-
- static QString getClassName();
-
- quint32 getClauseCount() const;
- quint32 getMaxClauseCount() const;
- void setMaxClauseCount(quint32 maxClauseCount);
-
- void add(QCLuceneQuery *query, bool required, bool prohibited);
- void add(QCLuceneQuery *query, bool delQuery, bool required, bool prohibited);
-
-private:
- QList<QCLuceneQuery*> queries;
-};
-
-class Q_CLUCENE_EXPORT QCLucenePhraseQuery : public QCLuceneQuery
-{
-public:
- QCLucenePhraseQuery();
- ~QCLucenePhraseQuery();
-
- static QString getClassName();
-
- qint32 getSlop() const;
- void setSlop(const qint32 slop);
-
- void addTerm(const QCLuceneTerm &term);
- void addTerm(const QCLuceneTerm &term, qint32 position);
-
- QString getFieldName() const;
- QList<QCLuceneTerm> getTerms() const;
-
-private:
- QList<QCLuceneTerm> termList;
-};
-
-QT_END_NAMESPACE
-
-#endif // QQUERY_P_H
diff --git a/src/assistant/clucene/qqueryparser.cpp b/src/assistant/clucene/qqueryparser.cpp
deleted file mode 100644
index 5789945a6..000000000
--- a/src/assistant/clucene/qqueryparser.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtPositioning module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qqueryparser_p.h"
-#include "qquery_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/queryParser/QueryParser.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneQueryParserPrivate::QCLuceneQueryParserPrivate()
- : QSharedData()
-{
- queryParser = 0;
- deleteCLuceneQueryParser = true;
-}
-
-QCLuceneQueryParserPrivate::QCLuceneQueryParserPrivate(const QCLuceneQueryParserPrivate &other)
- : QSharedData()
-{
- queryParser = _CL_POINTER(other.queryParser);
- deleteCLuceneQueryParser = other.deleteCLuceneQueryParser;
-}
-
-QCLuceneQueryParserPrivate::~QCLuceneQueryParserPrivate()
-{
- if (deleteCLuceneQueryParser)
- _CLDECDELETE(queryParser);
-}
-
-
-QCLuceneQueryParser::QCLuceneQueryParser(const QString &field,
- QCLuceneAnalyzer &analyzer)
- : d(new QCLuceneQueryParserPrivate())
- , field(field)
- , analyzer(analyzer)
-{
- TCHAR *fieldName = QStringToTChar(field);
-
- d->queryParser = new lucene::queryParser::QueryParser(fieldName,
- analyzer.d->analyzer);
-
- delete [] fieldName;
-}
-
-QCLuceneQueryParser::~QCLuceneQueryParser()
-{
- // nothing todo
-}
-
-QCLuceneQuery* QCLuceneQueryParser::parse(const QString &query)
-{
- TCHAR *string = QStringToTChar(query);
-
- QCLuceneQuery *retValue = 0;
- lucene::search::Query* q = d->queryParser->parse(string);
- if (q) {
- retValue = new QCLuceneQuery();
- retValue->d->query = q;
- }
-
- delete [] string;
- return retValue;
-}
-
-QCLuceneQuery* QCLuceneQueryParser::parse(QCLuceneReader &reader)
-{
- QCLuceneQuery *retValue = 0;
- lucene::search::Query* q = d->queryParser->parse(reader.d->reader);
- if (q) {
- retValue = new QCLuceneQuery();
- retValue->d->query = q;
- }
-
- return retValue;
-}
-
-QCLuceneQuery* QCLuceneQueryParser::parse(const QString &query, const QString &field,
- QCLuceneAnalyzer &analyzer)
-{
- QCLuceneQueryParser parser(field, analyzer);
- return parser.parse(query);
-}
-
-QCLuceneAnalyzer QCLuceneQueryParser::getAnalyzer()
-{
- return analyzer;
-}
-
-QString QCLuceneQueryParser::getField()
-{
- return field;
-}
-
-
-QCLuceneMultiFieldQueryParser::QCLuceneMultiFieldQueryParser(
- const QStringList &fieldList, QCLuceneAnalyzer &analyzer)
- : QCLuceneQueryParser(QString(), analyzer)
-{
- Q_UNUSED(fieldList)
-}
-
-QCLuceneMultiFieldQueryParser::~QCLuceneMultiFieldQueryParser()
-{
- // nothing todo
-}
-
-QCLuceneQuery* QCLuceneMultiFieldQueryParser::parse(const QString &query,
- const QStringList &fieldList,
- QCLuceneAnalyzer &analyzer)
-{
- QCLuceneBooleanQuery *retValue = new QCLuceneBooleanQuery();
- for (const QString &field : fieldList) {
- QCLuceneQuery *q = QCLuceneQueryParser::parse(query, field, analyzer);
- if (!q) {
- delete retValue;
- retValue = 0; break;
- } else {
- retValue->add(q, true, false, false);
- }
- }
-
- return retValue;
-}
-
-QCLuceneQuery* QCLuceneMultiFieldQueryParser::parse(const QString &query,
- const QStringList &fieldList,
- QList<FieldFlags> flags,
- QCLuceneAnalyzer &analyzer)
-{
- QCLuceneBooleanQuery *retValue = new QCLuceneBooleanQuery();
- qint32 i = 0;
- for (const QString &field : fieldList) {
- QCLuceneQuery *q = QCLuceneQueryParser::parse(query, field, analyzer);
- if (q) {
- qint32 flag = flags.at(i);
- switch (flag) {
- case QCLuceneMultiFieldQueryParser::REQUIRED_FIELD: {
- retValue->add(q, true, true, false);
- } break;
-
- case QCLuceneMultiFieldQueryParser::PROHIBITED_FIELD: {
- retValue->add(q, true, false, true);
- } break;
-
- default: {
- retValue->add(q, true, false, false);
- } break;
- }
-
- ++i;
- } else {
- delete retValue;
- retValue = 0; break;
- }
- }
- return retValue;
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qqueryparser_p.h b/src/assistant/clucene/qqueryparser_p.h
deleted file mode 100644
index 5cec001bf..000000000
--- a/src/assistant/clucene/qqueryparser_p.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QQUERYPARSER_P_H
-#define QQUERYPARSER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qreader_p.h"
-#include "qanalyzer_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(queryParser)
- class QueryParser;
-CL_NS_END
-CL_NS_USE(queryParser)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneQuery;
-class QCLuceneMultiFieldQueryParser;
-
-class Q_CLUCENE_EXPORT QCLuceneQueryParserPrivate : public QSharedData
-{
-public:
- QCLuceneQueryParserPrivate();
- QCLuceneQueryParserPrivate(const QCLuceneQueryParserPrivate &other);
-
- ~QCLuceneQueryParserPrivate();
-
- QueryParser *queryParser;
- bool deleteCLuceneQueryParser;
-
-private:
- QCLuceneQueryParserPrivate &operator=(const QCLuceneQueryParserPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneQueryParser
-{
-public:
- QCLuceneQueryParser(const QString &field, QCLuceneAnalyzer &analyzer);
- virtual ~QCLuceneQueryParser();
-
- QCLuceneQuery* parse(const QString &query);
- QCLuceneQuery* parse(QCLuceneReader &reader);
- static QCLuceneQuery* parse(const QString &query, const QString &field,
- QCLuceneAnalyzer &analyzer);
- QCLuceneAnalyzer getAnalyzer();
- QString getField();
-
-protected:
- friend class QCLuceneMultiFieldQueryParser;
- QSharedDataPointer<QCLuceneQueryParserPrivate> d;
-
-private:
- QString field;
- QCLuceneAnalyzer analyzer;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneMultiFieldQueryParser : public QCLuceneQueryParser
-{
-public:
- enum FieldFlags {
- NORMAL_FIELD = 0,
- REQUIRED_FIELD = 1,
- PROHIBITED_FIELD = 2
- };
-
- QCLuceneMultiFieldQueryParser(const QStringList &fieldList,
- QCLuceneAnalyzer &analyzer);
- ~QCLuceneMultiFieldQueryParser();
-
- static QCLuceneQuery *parse(const QString &query, const QStringList &fieldList,
- QCLuceneAnalyzer &analyzer);
- static QCLuceneQuery *parse(const QString &query, const QStringList &fieldList,
- QList<FieldFlags> flags, QCLuceneAnalyzer &analyzer);
-};
-
-QT_END_NAMESPACE
-
-#endif // QQUERYPARSER_P_H
diff --git a/src/assistant/clucene/qreader.cpp b/src/assistant/clucene/qreader.cpp
deleted file mode 100644
index 89547a871..000000000
--- a/src/assistant/clucene/qreader.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qreader_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/util/Reader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneReaderPrivate::QCLuceneReaderPrivate()
- : QSharedData()
-{
- reader = 0;
- deleteCLuceneReader = true;
-}
-
-QCLuceneReaderPrivate::QCLuceneReaderPrivate(const QCLuceneReaderPrivate &other)
- : QSharedData()
-{
- reader = _CL_POINTER(other.reader);
- deleteCLuceneReader = other.deleteCLuceneReader;
-}
-
-QCLuceneReaderPrivate::~QCLuceneReaderPrivate()
-{
- if (deleteCLuceneReader)
- _CLDECDELETE(reader);
-}
-
-QCLuceneReader::QCLuceneReader()
- : d(new QCLuceneReaderPrivate())
-{
- // nothing todo
-}
-
-QCLuceneReader::~QCLuceneReader()
-{
- // nothing todo
-}
-
-
-QCLuceneStringReader::QCLuceneStringReader(const QString &value)
- : QCLuceneReader()
- , string(QStringToTChar(value))
-{
- d->reader = new lucene::util::StringReader(string);
-}
-
-QCLuceneStringReader::QCLuceneStringReader(const QString &value, qint32 length)
- : QCLuceneReader()
- , string(QStringToTChar(value))
-{
- d->reader = new lucene::util::StringReader(string, int32_t(length));
-}
-
-QCLuceneStringReader::QCLuceneStringReader(const QString &value, qint32 length,
- bool copyData)
- : QCLuceneReader()
- , string(QStringToTChar(value))
-{
- d->reader = new lucene::util::StringReader(string, int32_t(length), copyData);
-}
-
-QCLuceneStringReader::~QCLuceneStringReader()
-{
- delete [] string;
-}
-
-
-QCLuceneFileReader::QCLuceneFileReader(const QString &path, const QString &encoding,
- qint32 cacheLength, qint32 cacheBuffer)
- : QCLuceneReader()
-{
- const QByteArray tmpPath = path.toLocal8Bit();
- const QByteArray tmpEncoding = encoding.toLatin1();
- d->reader = new lucene::util::FileReader(tmpPath.constData(),
- tmpEncoding.constData(), int32_t(cacheLength), int32_t(cacheBuffer));
-}
-
-QCLuceneFileReader::~QCLuceneFileReader()
-{
- // nothing todo
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qreader_p.h b/src/assistant/clucene/qreader_p.h
deleted file mode 100644
index cb9985f10..000000000
--- a/src/assistant/clucene/qreader_p.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QREADER_P_H
-#define QREADER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(util)
- class Reader;
-CL_NS_END
-CL_NS_USE(util)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneField;
-class QCLuceneAnalyzer;
-class QCLuceneDocument;
-class QCLuceneQueryParser;
-class QCLuceneStandardTokenizer;
-
-class Q_CLUCENE_EXPORT QCLuceneReaderPrivate : public QSharedData
-{
-public:
- QCLuceneReaderPrivate();
- QCLuceneReaderPrivate(const QCLuceneReaderPrivate &other);
-
- ~QCLuceneReaderPrivate();
-
- Reader* reader;
- bool deleteCLuceneReader;
-
-private:
- QCLuceneReaderPrivate &operator=(const QCLuceneReaderPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneReader
-{
-public:
- QCLuceneReader();
- virtual ~QCLuceneReader();
-
-protected:
- friend class QCLuceneField;
- friend class QCLuceneAnalyzer;
- friend class QCLuceneDocument;
- friend class QCLuceneQueryParser;
- friend class QCLuceneStandardTokenizer;
- QSharedDataPointer<QCLuceneReaderPrivate> d;
-};
-
-class QCLuceneStringReader : public QCLuceneReader
-{
-public:
- QCLuceneStringReader(const QString &value);
- QCLuceneStringReader(const QString &value, qint32 length);
- QCLuceneStringReader(const QString &value, qint32 length, bool copyData);
-
- ~QCLuceneStringReader();
-
-private:
- TCHAR *string;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneFileReader : public QCLuceneReader
-{
-public:
- QCLuceneFileReader(const QString &path, const QString &encoding,
- qint32 cacheLength = 13, qint32 cacheBuffer = 14);
- ~QCLuceneFileReader();
-};
-
-QT_END_NAMESPACE
-
-#endif // QREADER_P_H
diff --git a/src/assistant/clucene/qsearchable.cpp b/src/assistant/clucene/qsearchable.cpp
deleted file mode 100644
index 842935a89..000000000
--- a/src/assistant/clucene/qsearchable.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsearchable_p.h"
-
-#include <CLucene.h>
-#include <CLucene/search/SearchHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneSearchablePrivate::QCLuceneSearchablePrivate()
- : QSharedData()
-{
- searchable = 0;
- deleteCLuceneSearchable = true;
-}
-
-QCLuceneSearchablePrivate::QCLuceneSearchablePrivate(const QCLuceneSearchablePrivate &other)
- : QSharedData()
-{
- searchable = _CL_POINTER(other.searchable);
- deleteCLuceneSearchable = other.deleteCLuceneSearchable;
-}
-
-QCLuceneSearchablePrivate::~QCLuceneSearchablePrivate()
-{
- if (deleteCLuceneSearchable)
- _CLDECDELETE(searchable);
-}
-
-
-QCLuceneSearchable::QCLuceneSearchable()
- : d(new QCLuceneSearchablePrivate())
-{
- // nothing todo
-}
-
-QCLuceneSearchable::~QCLuceneSearchable()
-{
- // nothing todo
-}
-
-
-QCLuceneSearcher::QCLuceneSearcher()
- : QCLuceneSearchable()
-{
- // nothing todo
-}
-
-QCLuceneSearcher::~QCLuceneSearcher()
-{
- // nothing todo;
-}
-
-QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query)
-{
- return search(query, QCLuceneFilter());
-}
-
-QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query,
- const QCLuceneFilter &filter)
-{
- return QCLuceneHits(*this, query, filter);
-}
-
-QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query,
- const QCLuceneSort &sort)
-{
- return QCLuceneHits(*this, query, QCLuceneFilter(), sort);
-}
-
-QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query,
- const QCLuceneFilter &filter,
- const QCLuceneSort &sort)
-{
- return QCLuceneHits(*this, query, filter, sort);
-}
-
-
-QCLuceneIndexSearcher::QCLuceneIndexSearcher(const QString &path)
- : QCLuceneSearcher()
-{
- lucene::search::IndexSearcher *searcher =
- new lucene::search::IndexSearcher(path);
-
- reader.d->reader = searcher->getReader();
- reader.d->deleteCLuceneIndexReader = false;
-
- d->searchable = searcher;
-}
-
-QCLuceneIndexSearcher::QCLuceneIndexSearcher(const QCLuceneIndexReader &reader)
- : QCLuceneSearcher()
- , reader(reader)
-{
- d->searchable = new lucene::search::IndexSearcher(reader.d->reader);
-}
-
-QCLuceneIndexSearcher::~QCLuceneIndexSearcher()
-{
- // nothing todo
-}
-
-void QCLuceneIndexSearcher::close()
-{
- d->searchable->close();
-}
-
-qint32 QCLuceneIndexSearcher::maxDoc() const
-{
- return qint32(d->searchable->maxDoc());
-}
-
-QCLuceneIndexReader QCLuceneIndexSearcher::getReader()
-{
- return reader;
-}
-
-bool QCLuceneIndexSearcher::doc(qint32 i, QCLuceneDocument &document)
-{
- return d->searchable->doc(int32_t(i), document.d->document);
-}
-
-
-QCLuceneMultiSearcher::QCLuceneMultiSearcher(const QList<QCLuceneSearchable> searchables)
-: QCLuceneSearcher()
-{
- lucene::search::Searchable** list=
- _CL_NEWARRAY(lucene::search::Searchable*, searchables.count());
-
- d->searchable = new lucene::search::MultiSearcher(list);
-
- _CLDELETE_ARRAY(list);
-}
-
-QCLuceneMultiSearcher::~QCLuceneMultiSearcher()
-{
- // nothing todo
-}
-
-void QCLuceneMultiSearcher::close()
-{
- d->searchable->close();
-}
-
-qint32 QCLuceneMultiSearcher::maxDoc() const
-{
- return qint32(d->searchable->maxDoc());
-}
-
-qint32 QCLuceneMultiSearcher::subDoc(qint32 index) const
-{
- lucene::search::MultiSearcher *searcher =
- static_cast<lucene::search::MultiSearcher*> (d->searchable);
-
- if (searcher == 0)
- return 0;
-
- return qint32(searcher->subDoc(int32_t(index)));
-}
-
-qint32 QCLuceneMultiSearcher::subSearcher(qint32 index) const
-{
- lucene::search::MultiSearcher *searcher =
- static_cast<lucene::search::MultiSearcher*> (d->searchable);
-
- if (searcher == 0)
- return 0;
-
- return qint32(searcher->subSearcher(int32_t(index)));
-}
-
-qint32 QCLuceneMultiSearcher::searcherIndex(qint32 index) const
-{
- lucene::search::MultiSearcher *searcher =
- static_cast<lucene::search::MultiSearcher*> (d->searchable);
-
- if (searcher == 0)
- return 0;
-
- return qint32(searcher->searcherIndex(int32_t(index)));
-}
-
-bool QCLuceneMultiSearcher::doc(qint32 i, QCLuceneDocument &document)
-{
- return d->searchable->doc(int32_t(i), document.d->document);
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qsearchable_p.h b/src/assistant/clucene/qsearchable_p.h
deleted file mode 100644
index 78c915296..000000000
--- a/src/assistant/clucene/qsearchable_p.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSEARCHABLE_P_H
-#define QSEARCHABLE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qhits_p.h"
-#include "qsort_p.h"
-#include "qquery_p.h"
-#include "qfilter_p.h"
-#include "qdocument_p.h"
-#include "qindexreader_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QList>
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(search)
- class Searcher;
-CL_NS_END
-CL_NS_USE(search)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneHits;
-class QCLuceneSearcher;
-class QCLuceneIndexSearcher;
-class QCLuceneMultiSearcher;
-
-class Q_CLUCENE_EXPORT QCLuceneSearchablePrivate : public QSharedData
-{
-public:
- QCLuceneSearchablePrivate();
- QCLuceneSearchablePrivate(const QCLuceneSearchablePrivate &other);
-
- ~QCLuceneSearchablePrivate();
-
- Searcher *searchable;
- bool deleteCLuceneSearchable;
-
-private:
- QCLuceneSearchablePrivate &operator=(const QCLuceneSearchablePrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneSearchable
-{
-public:
- virtual ~QCLuceneSearchable();
-
-protected:
- friend class QCLuceneSearcher;
- friend class QCLuceneIndexSearcher;
- friend class QCLuceneMultiSearcher;
- QSharedDataPointer<QCLuceneSearchablePrivate> d;
-
-private:
- QCLuceneSearchable();
-};
-
-class Q_CLUCENE_EXPORT QCLuceneSearcher : public QCLuceneSearchable
-{
-public:
- QCLuceneSearcher();
- virtual ~QCLuceneSearcher();
-
- QCLuceneHits search(const QCLuceneQuery &query);
- QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneFilter &filter);
- QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneSort &sort);
- QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneFilter &filter,
- const QCLuceneSort &sort);
-
-protected:
- friend class QCLuceneHits;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneIndexSearcher : public QCLuceneSearcher
-{
-public:
- QCLuceneIndexSearcher(const QString &path);
- QCLuceneIndexSearcher(const QCLuceneIndexReader &reader);
- ~QCLuceneIndexSearcher();
-
- void close();
- qint32 maxDoc() const;
- QCLuceneIndexReader getReader();
- bool doc(qint32 i, QCLuceneDocument &document);
-
-private:
- QCLuceneIndexReader reader;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneMultiSearcher : public QCLuceneSearcher
-{
-public:
- QCLuceneMultiSearcher(const QList<QCLuceneSearchable> searchables);
- ~QCLuceneMultiSearcher();
-
- void close();
- qint32 maxDoc() const;
- qint32 subDoc(qint32 index) const;
- qint32 subSearcher(qint32 index) const;
- qint32 searcherIndex(qint32 index) const;
- bool doc(qint32 i, QCLuceneDocument &document);
-};
-
-QT_END_NAMESPACE
-
-#endif // QSEARCHABLE_P_H
diff --git a/src/assistant/clucene/qsort.cpp b/src/assistant/clucene/qsort.cpp
deleted file mode 100644
index 02cf1ffdc..000000000
--- a/src/assistant/clucene/qsort.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsort_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/search/Sort.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneSortPrivate::QCLuceneSortPrivate()
- : QSharedData()
-{
- sort = 0;
- deleteCLuceneSort = true;
-}
-
-QCLuceneSortPrivate::QCLuceneSortPrivate (const QCLuceneSortPrivate &other)
- : QSharedData()
-{
- sort = _CL_POINTER(other.sort);
- deleteCLuceneSort = other.deleteCLuceneSort;
-}
-
-QCLuceneSortPrivate::~QCLuceneSortPrivate()
-{
- if (deleteCLuceneSort)
- _CLDECDELETE(sort);
-}
-
-
-QCLuceneSort::QCLuceneSort()
- : d(new QCLuceneSortPrivate())
-{
- d->sort = new lucene::search::Sort();
-}
-
-QCLuceneSort::QCLuceneSort(const QStringList &fieldNames)
- : d(new QCLuceneSortPrivate())
-{
- d->sort = new lucene::search::Sort();
- setSort(fieldNames);
-}
-
-QCLuceneSort::QCLuceneSort(const QString &field, bool reverse)
- : d(new QCLuceneSortPrivate())
-{
- d->sort = new lucene::search::Sort();
- setSort(field, reverse);
-}
-
-QCLuceneSort::~QCLuceneSort()
-{
- // nothing todo
-}
-
-QString QCLuceneSort::toString() const
-{
- return TCharToQString(d->sort->toString());
-}
-
-void QCLuceneSort::setSort(const QStringList &fieldNames)
-{
- TCHAR **nameArray = new TCHAR*[fieldNames.count()];
- for (int i = 0; i < fieldNames.count(); ++i)
- nameArray[i] = QStringToTChar(fieldNames.at(i));
-
- d->sort->setSort((const TCHAR**)nameArray);
-
- for (int i = 0; i < fieldNames.count(); ++i)
- delete [] nameArray[i];
- delete [] nameArray;
-}
-
-void QCLuceneSort::setSort(const QString &field, bool reverse)
-{
- TCHAR *name = QStringToTChar(field);
- d->sort->setSort(name, reverse);
- delete [] name;
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qsort_p.h b/src/assistant/clucene/qsort_p.h
deleted file mode 100644
index 5755aa468..000000000
--- a/src/assistant/clucene/qsort_p.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSORT_P_H
-#define QSORT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(search)
- class Sort;
-CL_NS_END
-CL_NS_USE(search)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneHits;
-class QCLuceneField;
-
-class Q_CLUCENE_EXPORT QCLuceneSortPrivate : public QSharedData
-{
-public:
- QCLuceneSortPrivate();
- QCLuceneSortPrivate (const QCLuceneSortPrivate &other);
-
- ~QCLuceneSortPrivate();
-
- Sort *sort;
- bool deleteCLuceneSort;
-
-private:
- QCLuceneSortPrivate &operator=(const QCLuceneSortPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneSort
-{
-public:
- QCLuceneSort();
- explicit QCLuceneSort(const QStringList &fieldNames);
- explicit QCLuceneSort(const QString &field, bool reverse = false);
-
- virtual ~QCLuceneSort();
-
- QString toString() const;
- void setSort(const QStringList &fieldNames);
- void setSort(const QString &field, bool reverse = false);
-
-protected:
- friend class QCLuceneHits;
- QSharedDataPointer<QCLuceneSortPrivate> d;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSORT_P_H
diff --git a/src/assistant/clucene/qterm.cpp b/src/assistant/clucene/qterm.cpp
deleted file mode 100644
index f2f7c898b..000000000
--- a/src/assistant/clucene/qterm.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qterm_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/index/IndexReader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneTermPrivate::QCLuceneTermPrivate()
- : QSharedData()
-{
- term = 0;
- deleteCLuceneTerm = true;
-}
-
-QCLuceneTermPrivate::QCLuceneTermPrivate(const QCLuceneTermPrivate &other)
- : QSharedData()
-{
- term = _CL_POINTER(other.term);
- deleteCLuceneTerm = other.deleteCLuceneTerm;
-}
-
-QCLuceneTermPrivate::~QCLuceneTermPrivate()
-{
- if (deleteCLuceneTerm)
- _CLDECDELETE(term);
-}
-
-
-QCLuceneTerm::QCLuceneTerm()
- : d(new QCLuceneTermPrivate())
-{
- d->term = new lucene::index::Term();
-}
-
-QCLuceneTerm::QCLuceneTerm(const QString &field, const QString &text)
- : d(new QCLuceneTermPrivate())
-{
- TCHAR *fieldName = QStringToTChar(field);
- TCHAR *termText = QStringToTChar(text);
-
- d->term = new lucene::index::Term(fieldName, termText);
-
- delete [] fieldName;
- delete [] termText;
-}
-
-QCLuceneTerm::QCLuceneTerm(const QCLuceneTerm &fieldTerm, const QString &text)
- : d(new QCLuceneTermPrivate())
-{
- TCHAR *termText = QStringToTChar(text);
- d->term = new lucene::index::Term(fieldTerm.d->term, termText);
- delete [] termText;
-}
-
-QCLuceneTerm::~QCLuceneTerm()
-{
- // nothing todo
-}
-
-QString QCLuceneTerm::field() const
-{
- return TCharToQString(d->term->field());
-}
-
-QString QCLuceneTerm::text() const
-{
- return TCharToQString(d->term->text());
-}
-
-void QCLuceneTerm::set(const QString &field, const QString &text)
-{
- set(field, text, true);
-}
-
-void QCLuceneTerm::set(const QCLuceneTerm &fieldTerm, const QString &text)
-{
- set(fieldTerm.field(), text, false);
-}
-
-void QCLuceneTerm::set(const QString &field, const QString &text, bool internField)
-{
- TCHAR *fieldName = QStringToTChar(field);
- TCHAR *termText = QStringToTChar(text);
-
- d->term->set(fieldName, termText, internField);
-
- delete [] fieldName;
- delete [] termText;
-}
-
-bool QCLuceneTerm::equals(const QCLuceneTerm &other) const
-{
- return d->term->equals(other.d->term);
-}
-
-qint32 QCLuceneTerm::compareTo(const QCLuceneTerm &other) const
-{
- return quint32(d->term->compareTo(other.d->term));
-}
-
-QString QCLuceneTerm::toString() const
-{
- return TCharToQString(d->term->toString());
-}
-
-quint32 QCLuceneTerm::hashCode() const
-{
- return quint32(d->term->hashCode());
-}
-
-quint32 QCLuceneTerm::textLength() const
-{
- return quint32(d->term->textLength());
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qterm_p.h b/src/assistant/clucene/qterm_p.h
deleted file mode 100644
index b1ed759de..000000000
--- a/src/assistant/clucene/qterm_p.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTERM_P_H
-#define QTERM_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qclucene_global_p.h"
-
-#include <QtCore/QSharedData>
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-
-CL_NS_DEF(index)
- class Term;
-CL_NS_END
-CL_NS_USE(index)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneTermQuery;
-class QCLuceneRangeQuery;
-class QCLucenePrefixQuery;
-class QCLuceneIndexReader;
-class QCLucenePhraseQuery;
-
-class Q_CLUCENE_EXPORT QCLuceneTermPrivate : public QSharedData
-{
-public:
- QCLuceneTermPrivate();
- QCLuceneTermPrivate(const QCLuceneTermPrivate &other);
-
- ~QCLuceneTermPrivate();
-
- Term *term;
- bool deleteCLuceneTerm;
-
-private:
- QCLuceneTermPrivate &operator=(const QCLuceneTermPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneTerm
-{
-public:
- QCLuceneTerm();
- QCLuceneTerm(const QString &field, const QString &text);
- QCLuceneTerm(const QCLuceneTerm &fieldTerm, const QString &text);
-
- virtual ~QCLuceneTerm();
-
- QString field() const;
- QString text() const;
-
- void set(const QString &field, const QString &text);
- void set(const QCLuceneTerm &fieldTerm, const QString &text);
- void set(const QString &field, const QString &text, bool internField);
-
- bool equals(const QCLuceneTerm &other) const;
- qint32 compareTo(const QCLuceneTerm &other) const;
-
- QString toString() const;
- quint32 hashCode() const;
- quint32 textLength() const;
-
-protected:
- friend class QCLuceneTermQuery;
- friend class QCLuceneRangeQuery;
- friend class QCLucenePrefixQuery;
- friend class QCLuceneIndexReader;
- friend class QCLucenePhraseQuery;
- QSharedDataPointer<QCLuceneTermPrivate> d;
-};
-
-QT_END_NAMESPACE
-
-#endif // QTERM_P_H
diff --git a/src/assistant/clucene/qtoken.cpp b/src/assistant/clucene/qtoken.cpp
deleted file mode 100644
index 52b170fe9..000000000
--- a/src/assistant/clucene/qtoken.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtoken_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/analysis/AnalysisHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneTokenPrivate::QCLuceneTokenPrivate()
- : QSharedData()
-{
- token = 0;
- deleteCLuceneToken = true;
-}
-
-QCLuceneTokenPrivate::QCLuceneTokenPrivate(const QCLuceneTokenPrivate &other)
- : QSharedData()
-{
- token = _CL_POINTER(other.token);
- deleteCLuceneToken = other.deleteCLuceneToken;
-}
-
-QCLuceneTokenPrivate::~QCLuceneTokenPrivate()
-{
- if (deleteCLuceneToken)
- _CLDECDELETE(token);
-}
-
-
-QCLuceneToken::QCLuceneToken()
- : d(new QCLuceneTokenPrivate())
- , tokenText(0)
- , tokenType(0)
-{
- d->token = new lucene::analysis::Token();
-}
-
-QCLuceneToken::QCLuceneToken(const QString &text, qint32 startOffset,
- qint32 endOffset, const QString &defaultTyp)
- : d(new QCLuceneTokenPrivate())
- , tokenText(QStringToTChar(text))
- , tokenType(QStringToTChar(defaultTyp))
-{
- d->token = new lucene::analysis::Token(tokenText, int32_t(startOffset),
- int32_t(endOffset), tokenType);
-}
-
-QCLuceneToken::~QCLuceneToken()
-{
- delete [] tokenText;
- delete [] tokenType;
-}
-
-quint32 QCLuceneToken::bufferLength() const
-{
- return quint32(d->token->bufferLength());
-}
-
-void QCLuceneToken::growBuffer(quint32 size)
-{
- d->token->growBuffer(size_t(size));
-}
-
-qint32 QCLuceneToken::positionIncrement() const
-{
- return qint32(d->token->getPositionIncrement());
-}
-
-void QCLuceneToken::setPositionIncrement(qint32 positionIncrement)
-{
- d->token->setPositionIncrement(int32_t(positionIncrement));
-}
-
-QString QCLuceneToken::termText() const
-{
- return TCharToQString(d->token->termText());
-}
-
-void QCLuceneToken::setTermText(const QString &text)
-{
- delete [] tokenText;
- tokenText = QStringToTChar(text);
- d->token->setText(tokenText);
-}
-
-quint32 QCLuceneToken::termTextLength() const
-{
- return quint32(d->token->termTextLength());
-}
-
-void QCLuceneToken::resetTermTextLength() const
-{
- d->token->resetTermTextLen();
-}
-
-qint32 QCLuceneToken::startOffset() const
-{
- return quint32(d->token->startOffset());
-}
-
-void QCLuceneToken::setStartOffset(qint32 value)
-{
- d->token->setStartOffset(int32_t(value));
-}
-
-qint32 QCLuceneToken::endOffset() const
-{
- return quint32(d->token->endOffset());
-}
-
-void QCLuceneToken::setEndOffset(qint32 value)
-{
- d->token->setEndOffset(int32_t(value));
-}
-
-QString QCLuceneToken::type() const
-{
- return TCharToQString(d->token->type());
-}
-
-void QCLuceneToken::setType(const QString &type)
-{
- delete [] tokenType;
- tokenType = QStringToTChar(type);
- d->token->setType(tokenType);
-}
-
-QString QCLuceneToken::toString() const
-{
- return TCharToQString(d->token->toString());
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qtoken_p.h b/src/assistant/clucene/qtoken_p.h
deleted file mode 100644
index eb44e7d38..000000000
--- a/src/assistant/clucene/qtoken_p.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTOKEN_P_H
-#define QTOKEN_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(analysis)
- class Token;
-CL_NS_END
-CL_NS_USE(analysis)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneTokenizer;
-class QCLuceneTokenStream;
-class QCLuceneStandardTokenizer;
-
-class Q_CLUCENE_EXPORT QCLuceneTokenPrivate : public QSharedData
-{
-public:
- QCLuceneTokenPrivate();
- QCLuceneTokenPrivate(const QCLuceneTokenPrivate &other);
-
- ~QCLuceneTokenPrivate();
-
- Token *token;
- bool deleteCLuceneToken;
-
-private:
- QCLuceneTokenPrivate &operator=(const QCLuceneTokenPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneToken
-{
-public:
- QCLuceneToken();
- QCLuceneToken(const QString &text, qint32 startOffset,
- qint32 endOffset, const QString &defaultTyp = QLatin1String("word"));
-
- virtual ~QCLuceneToken();
-
- void set(const QString &text, qint32 startOffset,
- qint32 endOffset, const QString &defaultTyp = QLatin1String("word"));
-
- quint32 bufferLength() const;
- void growBuffer(quint32 size);
-
- qint32 positionIncrement() const;
- void setPositionIncrement(qint32 positionIncrement);
-
- QString termText() const;
- void setTermText(const QString &text);
-
- quint32 termTextLength() const;
- void resetTermTextLength() const;
-
- qint32 startOffset() const;
- void setStartOffset(qint32 value);
-
- qint32 endOffset() const;
- void setEndOffset(qint32 value);
-
- QString type() const;
- void setType(const QString &type);
-
- QString toString() const;
-
-protected:
- friend class QCLuceneTokenizer;
- friend class QCLuceneTokenStream;
- friend class QCLuceneStandardTokenizer;
- QSharedDataPointer<QCLuceneTokenPrivate> d;
-
-private:
- TCHAR *tokenText;
- TCHAR *tokenType;
-};
-
-QT_END_NAMESPACE
-
-#endif // QTOKEN_P_H
diff --git a/src/assistant/clucene/qtokenizer.cpp b/src/assistant/clucene/qtokenizer.cpp
deleted file mode 100644
index 2dacc9bc2..000000000
--- a/src/assistant/clucene/qtokenizer.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtokenizer_p.h"
-#include "qclucene_global_p.h"
-
-#include <CLucene.h>
-#include <CLucene/analysis/AnalysisHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneTokenizer::QCLuceneTokenizer()
- : QCLuceneTokenStream()
-{
- // nothing todo
-}
-
-QCLuceneTokenizer::QCLuceneTokenizer(const QCLuceneReader &reader)
- : QCLuceneTokenStream()
- , reader(reader)
-{
- // nothing todo
-}
-
-QCLuceneTokenizer::~QCLuceneTokenizer()
-{
- close();
-}
-
-void QCLuceneTokenizer::close()
-{
- d->tokenStream->close();
-}
-
-bool QCLuceneTokenizer::next(QCLuceneToken &token)
-{
- return d->tokenStream->next(token.d->token);
-}
-
-
-QCLuceneStandardTokenizer::QCLuceneStandardTokenizer(const QCLuceneReader &reader)
- : QCLuceneTokenizer(reader)
-{
- d->tokenStream =
- new lucene::analysis::standard::StandardTokenizer(reader.d->reader);
-}
-
-QCLuceneStandardTokenizer::~QCLuceneStandardTokenizer()
-{
- // nothing todo
-}
-
-bool QCLuceneStandardTokenizer::readApostrophe(const QString &string,
- QCLuceneToken &token)
-{
- lucene::analysis::standard::StandardTokenizer *stdTokenizer =
- static_cast<lucene::analysis::standard::StandardTokenizer*> (d->tokenStream);
-
- if (stdTokenizer == 0)
- return false;
-
- TCHAR* value = QStringToTChar(string);
- lucene::util::StringBuffer buffer(value);
- bool retValue = stdTokenizer->ReadApostrophe(&buffer, token.d->token);
- delete [] value;
-
- return retValue;
-}
-
-bool QCLuceneStandardTokenizer::readAt(const QString &string, QCLuceneToken &token)
-{
- lucene::analysis::standard::StandardTokenizer *stdTokenizer =
- static_cast<lucene::analysis::standard::StandardTokenizer*> (d->tokenStream);
-
- if (stdTokenizer == 0)
- return false;
-
- TCHAR* value = QStringToTChar(string);
- lucene::util::StringBuffer buffer(value);
- bool retValue = stdTokenizer->ReadAt(&buffer, token.d->token);
- delete [] value;
-
- return retValue;
-}
-
-bool QCLuceneStandardTokenizer::readCompany(const QString &string,
- QCLuceneToken &token)
-{
- lucene::analysis::standard::StandardTokenizer *stdTokenizer =
- static_cast<lucene::analysis::standard::StandardTokenizer*> (d->tokenStream);
-
- if (stdTokenizer == 0)
- return false;
-
- TCHAR* value = QStringToTChar(string);
- lucene::util::StringBuffer buffer(value);
- bool retValue = stdTokenizer->ReadCompany(&buffer, token.d->token);
- delete [] value;
-
- return retValue;
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qtokenizer_p.h b/src/assistant/clucene/qtokenizer_p.h
deleted file mode 100644
index b2fe7acf4..000000000
--- a/src/assistant/clucene/qtokenizer_p.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTOKENIZER_P_H
-#define QTOKENIZER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qtoken_p.h"
-#include "qreader_p.h"
-#include "qtokenstream_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QChar>
-#include <QtCore/QString>
-
-QT_BEGIN_NAMESPACE
-
-class Q_CLUCENE_EXPORT QCLuceneTokenizer : public QCLuceneTokenStream
-{
-public:
- QCLuceneTokenizer(const QCLuceneReader &reader);
- virtual ~QCLuceneTokenizer();
-
- void close();
- bool next(QCLuceneToken &token);
-
-protected:
- friend class QCLuceneStandardTokenizer;
-
-private:
- QCLuceneTokenizer();
- QCLuceneReader reader;
-};
-
-class Q_CLUCENE_EXPORT QCLuceneStandardTokenizer : public QCLuceneTokenizer
-{
-public:
- QCLuceneStandardTokenizer(const QCLuceneReader &reader);
- ~QCLuceneStandardTokenizer();
-
- bool readApostrophe(const QString &string, QCLuceneToken &token);
- bool readAt(const QString &string, QCLuceneToken &token);
- bool readCompany(const QString &string, QCLuceneToken &token);
-};
-
-class QCLuceneCharTokenizer : public QCLuceneTokenizer
-{
-
-};
-
-class QCLuceneLetterTokenizer : public QCLuceneCharTokenizer
-{
-
-};
-
-class QCLuceneLowerCaseTokenizer : public QCLuceneLetterTokenizer
-{
-
-};
-
-class QCLuceneWhitespaceTokenizer : public QCLuceneCharTokenizer
-{
-
-};
-
-class QCLuceneKeywordTokenizer : public QCLuceneTokenizer
-{
-
-};
-
-QT_END_NAMESPACE
-
-#endif // QTOKENIZER_P_H
diff --git a/src/assistant/clucene/qtokenstream.cpp b/src/assistant/clucene/qtokenstream.cpp
deleted file mode 100644
index 0c85cd13f..000000000
--- a/src/assistant/clucene/qtokenstream.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtokenstream_p.h"
-
-#include <CLucene.h>
-#include <CLucene/analysis/AnalysisHeader.h>
-
-QT_BEGIN_NAMESPACE
-
-QCLuceneTokenStreamPrivate::QCLuceneTokenStreamPrivate()
- : QSharedData()
-{
- tokenStream = 0;
- deleteCLuceneTokenStream = true;
-}
-
-QCLuceneTokenStreamPrivate::QCLuceneTokenStreamPrivate(const QCLuceneTokenStreamPrivate &other)
- : QSharedData()
-{
- tokenStream = _CL_POINTER(other.tokenStream);
- deleteCLuceneTokenStream = other.deleteCLuceneTokenStream;
-}
-
-QCLuceneTokenStreamPrivate::~QCLuceneTokenStreamPrivate()
-{
- if (deleteCLuceneTokenStream)
- _CLDECDELETE(tokenStream);
-}
-
-
-QCLuceneTokenStream::QCLuceneTokenStream()
- : d(new QCLuceneTokenStreamPrivate())
-{
- // nothing todo
-}
-
-QCLuceneTokenStream::~QCLuceneTokenStream()
-{
- // nothing todo
-}
-
-void QCLuceneTokenStream::close()
-{
- d->tokenStream->close();
-}
-
-bool QCLuceneTokenStream::next(QCLuceneToken &token)
-{
- return d->tokenStream->next(token.d->token);
-}
-
-QT_END_NAMESPACE
diff --git a/src/assistant/clucene/qtokenstream_p.h b/src/assistant/clucene/qtokenstream_p.h
deleted file mode 100644
index 1b8c22a79..000000000
--- a/src/assistant/clucene/qtokenstream_p.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtTools module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTOKENSTREAM_P_H
-#define QTOKENSTREAM_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of the help generator tools. This header file may change from version
-// to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qtoken_p.h"
-#include "qclucene_global_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedData>
-
-CL_NS_DEF(analysis)
- class TokenStream;
-CL_NS_END
-CL_NS_USE(analysis)
-
-QT_BEGIN_NAMESPACE
-
-class QCLuceneAnalyzer;
-class QCLuceneTokenizer;
-class QCLuceneStopAnalyzer;
-class QCLuceneSimpleAnalyzer;
-class QCLuceneKeywordAnalyzer;
-class QCLuceneStandardAnalyzer;
-class QCLuceneWhitespaceAnalyzer;
-class QCLucenePerFieldAnalyzerWrapper;
-
-class Q_CLUCENE_EXPORT QCLuceneTokenStreamPrivate : public QSharedData
-{
-public:
- QCLuceneTokenStreamPrivate();
- QCLuceneTokenStreamPrivate(const QCLuceneTokenStreamPrivate &other);
-
- ~QCLuceneTokenStreamPrivate();
-
- TokenStream *tokenStream;
- bool deleteCLuceneTokenStream;
-
-private:
- QCLuceneTokenStreamPrivate &operator=(const QCLuceneTokenStreamPrivate &other);
-};
-
-class Q_CLUCENE_EXPORT QCLuceneTokenStream
-{
-public:
- virtual ~QCLuceneTokenStream();
-
- void close();
- bool next(QCLuceneToken &token);
-
-protected:
- friend class QCLuceneAnalyzer;
- friend class QCLuceneTokenizer;
- friend class QCLuceneStopAnalyzer;
- friend class QCLuceneSimpleAnalyzer;
- friend class QCLuceneKeywordAnalyzer;
- friend class QCLuceneStandardAnalyzer;
- friend class QCLuceneWhitespaceAnalyzer;
- friend class QCLucenePerFieldAnalyzerWrapper;
- QSharedDataPointer<QCLuceneTokenStreamPrivate> d;
-
-private:
- QCLuceneTokenStream();
-};
-
-QT_END_NAMESPACE
-
-#endif // QTOKENSTREAM_P_H
diff --git a/src/assistant/help/qhelpcollectionhandler.cpp b/src/assistant/help/qhelpcollectionhandler.cpp
index a1e61c5dd..ec49d045a 100644
--- a/src/assistant/help/qhelpcollectionhandler.cpp
+++ b/src/assistant/help/qhelpcollectionhandler.cpp
@@ -218,7 +218,7 @@ bool QHelpCollectionHandler::copyCollectionFile(const QString &fileName)
m_query.exec(QLatin1String("SELECT Key, Value FROM SettingsTable"));
while (m_query.next()) {
- if (m_query.value(0).toString() == QLatin1String("CluceneSearchNamespaces"))
+ if (m_query.value(0).toString() == QLatin1String("FTS5IndexedNamespaces"))
continue;
copyQuery->prepare(QLatin1String("INSERT INTO SettingsTable VALUES(?, ?)"));
copyQuery->bindValue(0, m_query.value(0).toString());
diff --git a/src/assistant/help/qhelpsearchengine.h b/src/assistant/help/qhelpsearchengine.h
index 15314a65c..3c136a505 100644
--- a/src/assistant/help/qhelpsearchengine.h
+++ b/src/assistant/help/qhelpsearchengine.h
@@ -58,6 +58,8 @@ class QHelpSearchEnginePrivate;
class QHelpSearchResultData;
class QHelpSearchResultWidget;
+// TODO: obsolete it and use just QString for input
+
class QHELP_EXPORT QHelpSearchQuery
{
public: