Doxygen
Loading...
Searching...
No Matches
searchindex.cpp File Reference
#include <ctype.h>
#include <assert.h>
#include <mutex>
#include <map>
#include <unordered_map>
#include "searchindex.h"
#include "config.h"
#include "util.h"
#include "doxygen.h"
#include "language.h"
#include "pagedef.h"
#include "message.h"
#include "groupdef.h"
#include "filedef.h"
#include "portable.h"
Include dependency graph for searchindex.cpp:

Go to the source code of this file.

Functions

static int charsToIndex (const QCString &word)
static void writeInt (std::ostream &f, size_t index)
static void writeString (std::ostream &f, const QCString &s)
static QCString definitionToName (const Definition *ctx)
void initSearchIndexer ()
void finalizeSearchIndexer ()

Variables

const size_t numIndexEntries = 256*256
static std::mutex g_searchIndexMutex

Function Documentation

◆ charsToIndex()

int charsToIndex ( const QCString & word)
static

Definition at line 174 of file searchindex.cpp.

175{
176 if (word.length()<2) return -1;
177
178 // Fast string hashing algorithm
179 //register uint16_t h=0;
180 //const char *k = word;
181 //uint16_t mask=0xfc00;
182 //while ( *k )
183 //{
184 // h = (h&mask)^(h<<6)^(*k++);
185 //}
186 //return h;
187
188 // Simple hashing that allows for substring searching
189 uint32_t c1=static_cast<uint8_t>(word[0]);
190 uint32_t c2=static_cast<uint8_t>(word[1]);
191 return c1*256+c2;
192}
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:166

References QCString::length().

Referenced by SearchIndex::addWordRec().

◆ definitionToName()

QCString definitionToName ( const Definition * ctx)
static

Definition at line 390 of file searchindex.cpp.

391{
392 if (ctx && ctx->definitionType()==Definition::TypeMember)
393 {
394 const MemberDef *md = toMemberDef(ctx);
395 if (md->isFunction())
396 return "function";
397 else if (md->isSlot())
398 return "slot";
399 else if (md->isSignal())
400 return "signal";
401 else if (md->isVariable())
402 return "variable";
403 else if (md->isTypedef())
404 return "typedef";
405 else if (md->isEnumerate())
406 return "enum";
407 else if (md->isEnumValue())
408 return "enumvalue";
409 else if (md->isProperty())
410 return "property";
411 else if (md->isEvent())
412 return "event";
413 else if (md->isRelated() || md->isForeign())
414 return "related";
415 else if (md->isFriend())
416 return "friend";
417 else if (md->isDefine())
418 return "define";
419 }
420 else if (ctx)
421 {
422 switch(ctx->definitionType())
423 {
425 return (toClassDef(ctx))->compoundTypeString();
427 return "file";
429 return "namespace";
431 return "concept";
433 return "group";
435 return "package";
437 return "page";
439 return "dir";
441 return "module";
442 default:
443 break;
444 }
445 }
446 return "unknown";
447}
virtual DefType definitionType() const =0
A model of a class/file/namespace member symbol.
Definition memberdef.h:48
virtual bool isSignal() const =0
virtual bool isFriend() const =0
virtual bool isForeign() const =0
virtual bool isRelated() const =0
virtual bool isTypedef() const =0
virtual bool isSlot() const =0
virtual bool isEvent() const =0
virtual bool isFunction() const =0
virtual bool isDefine() const =0
virtual bool isEnumerate() const =0
virtual bool isVariable() const =0
virtual bool isEnumValue() const =0
virtual bool isProperty() const =0
ClassDef * toClassDef(Definition *d)
MemberDef * toMemberDef(Definition *d)

References Definition::definitionType(), MemberDef::isDefine(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isEvent(), MemberDef::isForeign(), MemberDef::isFriend(), MemberDef::isFunction(), MemberDef::isProperty(), MemberDef::isRelated(), MemberDef::isSignal(), MemberDef::isSlot(), MemberDef::isTypedef(), MemberDef::isVariable(), toClassDef(), toMemberDef(), Definition::TypeClass, Definition::TypeConcept, Definition::TypeDir, Definition::TypeFile, Definition::TypeGroup, Definition::TypeMember, Definition::TypeModule, Definition::TypeNamespace, Definition::TypePackage, and Definition::TypePage.

Referenced by SearchIndexExternal::setCurrentDoc().

◆ finalizeSearchIndexer()

void finalizeSearchIndexer ( )

Cleanup the search indexer

Definition at line 548 of file searchindex.cpp.

549{
551}
static SearchIndexIntf searchIndex
Definition doxygen.h:123

References SearchIndexIntf::Disabled, and Doxygen::searchIndex.

Referenced by generateOutput().

◆ initSearchIndexer()

void initSearchIndexer ( )

Initialize the search indexer

Definition at line 537 of file searchindex.cpp.

538{
539 bool searchEngine = Config_getBool(SEARCHENGINE);
540 bool serverBasedSearch = Config_getBool(SERVER_BASED_SEARCH);
541 bool externalSearch = Config_getBool(EXTERNAL_SEARCH);
542 if (searchEngine && serverBasedSearch)
543 {
545 }
546}
#define Config_getBool(name)
Definition config.h:33

References Config_getBool, SearchIndexIntf::External, SearchIndexIntf::Internal, and Doxygen::searchIndex.

Referenced by parseInput().

◆ writeInt()

void writeInt ( std::ostream & f,
size_t index )
static

Definition at line 241 of file searchindex.cpp.

242{
243 f.put(static_cast<int>((index>>24)&0xff));
244 f.put(static_cast<int>((index>>16)&0xff));
245 f.put(static_cast<int>((index>>8)&0xff));
246 f.put(static_cast<int>(index&0xff));
247}

Referenced by SearchIndex::write().

◆ writeString()

void writeString ( std::ostream & f,
const QCString & s )
static

Definition at line 249 of file searchindex.cpp.

250{
251 size_t l = s.length();
252 for (size_t i=0;i<l;i++) f.put(s[i]);
253 f.put(0);
254}

References QCString::length().

Referenced by SearchIndex::write().

Variable Documentation

◆ g_searchIndexMutex

std::mutex g_searchIndexMutex
static

◆ numIndexEntries

const size_t numIndexEntries = 256*256

Definition at line 47 of file searchindex.cpp.

Referenced by SearchIndex::SearchIndex(), and SearchIndex::write().