Doxygen
Loading...
Searching...
No Matches
dstring.h File Reference
#include <algorithm>
#include <cctype>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ostream>
#include <string>
#include <string_view>
#include "utf8.h"
Include dependency graph for dstring.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  DString
 A String class for use with Doxygen wrapping std::string and adding some additional functionality offered by QCString. More...
struct  std::hash< DString >

Namespaces

namespace  std

Macros

#define ASSERT(x)
#define HAS_IMPLICIT_CAST_TO_PLAIN_C_STRING   0
#define HAS_CHARACTER_APPEND_OPERATOR   1

Typedefs

using JavaCCString = std::basic_string<JAVACC_CHAR_TYPE>

Functions

char * dstrdup (const char *s)
void dstrfree (const char *s)
 Frees the memory allocated using dstrdup().
uint32_t dstrlen (const char *str)
 Returns the length of string str, or 0 if a null pointer is passed.
char * dstrcpy (char *dst, const char *src)
char * dstrncpy (char *dst, const char *src, size_t len)
bool disempty (const char *s)
int dstrcmp (const char *str1, const char *str2)
int dstrncmp (const char *str1, const char *str2, size_t len)
bool disspace (char c)
int dstricmp (const char *str1, const char *str2)
int dstricmp_sort (const char *str1, const char *str2)
int dstrnicmp (const char *str1, const char *str2, size_t len)
bool operator== (const DString &s1, const DString &s2)
bool operator== (const DString &s1, const char *s2)
bool operator== (const char *s1, const DString &s2)
bool operator!= (const DString &s1, const DString &s2)
bool operator!= (const DString &s1, const char *s2)
bool operator!= (const char *s1, const DString &s2)
bool operator< (const DString &s1, const DString &s2)
bool operator< (const DString &s1, const char *s2)
bool operator< (const char *s1, const DString &s2)
bool operator<= (const DString &s1, const char *s2)
bool operator<= (const char *s1, const DString &s2)
bool operator> (const DString &s1, const char *s2)
bool operator> (const char *s1, const DString &s2)
bool operator>= (const DString &s1, const char *s2)
bool operator>= (const char *s1, const DString &s2)
DString operator+ (const DString &s1, const DString &s2)
DString operator+ (const DString &s1, const char *s2)
DString operator+ (const char *s1, const DString &s2)
const char * qPrint (const char *s)
const char * qPrint (const DString &s)
const char * qPrint (const std::string &s)
std::string toStdString (const DString &s)
int dstrcmp (const DString &str1, const char *str2)
int dstrcmp (const char *str1, const DString &str2)
int dstrcmp (const DString &str1, const DString &str2)
int dstricmp (const DString &str1, const char *str2)
int dstricmp (const char *str1, const DString &str2)
int dstricmp (const DString &str1, const DString &str2)
int dstricmp_sort (const DString &str1, const char *str2)
int dstricmp_sort (const char *str1, const DString &str2)
int dstricmp_sort (const DString &str1, const DString &str2)
int dstrnicmp (const DString &str1, const char *str2, size_t len)
int dstrnicmp (const char *str1, const DString &str2, size_t len)
int dstrnicmp (const DString &str1, const DString &str2, size_t len)
DString substitute (const DString &str, const DString &find, const DString &replace)
 substitute all occurrences of src in s by dst
DString substitute (const DString &str, const char *find, const char *replace)
DString substitute (const DString &s, const DString &src, const DString &dst, int skip_seq)
 substitute all occurrences of src in s by dst, but skip each consecutive sequence of src where the number consecutive src matches skip_seq; if skip_seq is negative, skip any number of consecutive src
DString substitute (const DString &s, char srcChar, char dstChar)
std::ostream & operator<< (std::ostream &os, const DString &s)
void swap (DString &s1, DString &s2)
bool isId (int c)
 Returns true if c is a valid character for an identifier.
DString generateMarker (int id)

Macro Definition Documentation

◆ ASSERT

#define ASSERT ( x)
Value:
if ( !(x) )\
fprintf(stderr,"ASSERT: \"%s\" in %s (%d)\n",#x,__FILE__,__LINE__)

Definition at line 28 of file dstring.h.

Referenced by anonymous_namespace{tagreader.cpp}::TagFileParser::addIncludes(), addMembersToMemberGroup(), RTFGenerator::beginRTFDocument(), DirDefImpl::createNewDir(), FTVHelp::decContentsDepth(), DocCite::DocCite(), DocRef::DocRef(), DotInclDepGraph::DotInclDepGraph(), HtmlGenerator::endSection(), ManGenerator::endSection(), generateDEFForMember(), generateXMLForClass(), generateXMLForMember(), DotClassGraph::getBaseName(), DotClassGraph::getImgAltText(), RTFDocVisitor::getListTable(), DotClassGraph::getMapLabel(), DefinitionImpl::getSourceFileBase(), DocPara::handleHtmlEndTag(), DocPara::handleHtmlStartTag(), DocPara::handleXRefItem(), MemberDefImpl::isConstructor(), MemberDefImpl::isDestructor(), MemberDefImpl::isLinkableInProject(), matchArguments2(), MemberList::numDecMembers(), MemberList::numDocMembers(), DocbookDocVisitor::operator()(), HtmlDocVisitor::operator()(), LatexDocVisitor::operator()(), ManDocVisitor::operator()(), RTFDocVisitor::operator()(), XmlDocVisitor::operator()(), DocXRefItem::parse(), parseFilesMultiThreading(), parseFilesSingleThreading(), resolveRef(), setDotFontPath(), setOutput(), HtmlGenerator::startSection(), LatexGenerator::startSection(), ManGenerator::startSection(), RTFGenerator::startSection(), MemberDefImpl::writeDeclaration(), DotNode::writeDEF(), DotNode::writeDocbook(), writeMemberList(), writeObjCMethodCall(), VhdlDocGen::writeVHDLDeclaration(), and DotNode::writeXML().

◆ HAS_CHARACTER_APPEND_OPERATOR

#define HAS_CHARACTER_APPEND_OPERATOR   1

Definition at line 679 of file dstring.h.

◆ HAS_IMPLICIT_CAST_TO_PLAIN_C_STRING

#define HAS_IMPLICIT_CAST_TO_PLAIN_C_STRING   0

Definition at line 640 of file dstring.h.

Typedef Documentation

◆ JavaCCString

using JavaCCString = std::basic_string<JAVACC_CHAR_TYPE>

Definition at line 80 of file dstring.h.

Function Documentation

◆ disempty()

bool disempty ( const char * s)
inline

Definition at line 51 of file dstring.h.

52{ return s==nullptr || *s=='\0'; }

Referenced by dstrcmp(), and dstrncmp().

◆ disspace()

◆ dstrcmp() [1/4]

int dstrcmp ( const char * str1,
const char * str2 )
inline

Definition at line 54 of file dstring.h.

55{ return (str1 && str2) ? strcmp(str1,str2) : // both non-empty
56 (disempty(str1) && disempty(str2)) ? 0 : // both empty
57 disempty(str1) ? -1 : 1; // one empty, other non-empty
58}
bool disempty(const char *s)
Definition dstring.h:51

References disempty().

Referenced by convertMapFile(), dstrcmp(), dstrcmp(), dstrcmp(), dstricmp_sort(), KeywordHash::find(), operator!=(), operator!=(), operator<(), operator<(), operator<(), operator<=(), operator<=(), operator==(), operator==(), operator>(), operator>(), operator>=(), operator>=(), readConfiguration(), startFontClass(), startFontClass(), and startFontClass().

◆ dstrcmp() [2/4]

int dstrcmp ( const char * str1,
const DString & str2 )
inline

Definition at line 814 of file dstring.h.

815{
816 return dstrcmp(str1,str2.data());
817}
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Definition dstring.h:161
int dstrcmp(const char *str1, const char *str2)
Definition dstring.h:54

References DString::data(), and dstrcmp().

◆ dstrcmp() [3/4]

int dstrcmp ( const DString & str1,
const char * str2 )
inline

Definition at line 809 of file dstring.h.

810{
811 return dstrcmp(str1.data(),str2);
812}

References DString::data(), and dstrcmp().

◆ dstrcmp() [4/4]

int dstrcmp ( const DString & str1,
const DString & str2 )
inline

Definition at line 819 of file dstring.h.

820{
821 return dstrcmp(str1.data(),str2.data());
822}

References DString::data(), and dstrcmp().

◆ dstrcpy()

char * dstrcpy ( char * dst,
const char * src )
inline

Definition at line 46 of file dstring.h.

47{ return src ? strcpy(dst, src) : nullptr; }

Referenced by SymbolResolver::Private::getResolvedTypeRec(), substitute(), and substitute().

◆ dstrdup()

char * dstrdup ( const char * s)

Returns a copy of a string s. Note that memory is passed to the caller, use dstrfree() to release.

Definition at line 420 of file dstring.cpp.

421{
422 if ( !str ) return nullptr;
423 char *dst = new char[dstrlen(str)+1];
424 return strcpy( dst, str );
425}
uint32_t dstrlen(const char *str)
Returns the length of string str, or 0 if a null pointer is passed.
Definition dstring.h:43

References dstrlen().

◆ dstrfree()

void dstrfree ( const char * s)

Frees the memory allocated using dstrdup().

Definition at line 427 of file dstring.cpp.

428{
429 delete [](str);
430}

◆ dstricmp() [1/4]

int dstricmp ( const char * str1,
const char * str2 )

Definition at line 440 of file dstring.cpp.

441{
442 if ( !s1 || !s2 )
443 {
444 return s1 == s2 ? 0 : static_cast<int>(s2 - s1);
445 }
446 int res = 0;
447 char c = 0;
448 for ( ; !(res = ((c=toLowerChar(*s1)) - toLowerChar(*s2))); s1++, s2++ )
449 {
450 if ( !c ) // strings are equal
451 {
452 break;
453 }
454 }
455 return res;
456}
char toLowerChar(char c)
Definition dstring.cpp:25

References toLowerChar().

Referenced by compareString(), dstricmp(), dstricmp(), dstricmp(), dstricmp_sort(), VhdlDocGen::findAllArchitectures(), DocGroup::findExistingGroup(), FlowChart::findLabel(), VhdlDocGen::findVhdlClass(), readConfiguration(), stripFromPath(), transcodeCharacterBuffer(), transcodeCharacterStringToUTF8(), FlowChart::writeFlowLinks(), ClassDefImpl::writeIncludeFilesForSlice(), and VhdlDocGen::writeProcedureProto().

◆ dstricmp() [2/4]

int dstricmp ( const char * str1,
const DString & str2 )
inline

Definition at line 829 of file dstring.h.

830{
831 return dstricmp(str1,str2.data());
832}
int dstricmp(const char *str1, const char *str2)
Definition dstring.cpp:440

References DString::data(), and dstricmp().

◆ dstricmp() [3/4]

int dstricmp ( const DString & str1,
const char * str2 )
inline

Definition at line 824 of file dstring.h.

825{
826 return dstricmp(str1.data(),str2);
827}

References DString::data(), and dstricmp().

◆ dstricmp() [4/4]

int dstricmp ( const DString & str1,
const DString & str2 )
inline

Definition at line 834 of file dstring.h.

835{
836 return dstricmp(str1.data(),str2.data());
837}

References DString::data(), and dstricmp().

◆ dstricmp_sort() [1/4]

◆ dstricmp_sort() [2/4]

int dstricmp_sort ( const char * str1,
const DString & str2 )
inline

Definition at line 844 of file dstring.h.

845{
846 return dstricmp_sort(str1,str2.data());
847}
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:71

References DString::data(), and dstricmp_sort().

◆ dstricmp_sort() [3/4]

int dstricmp_sort ( const DString & str1,
const char * str2 )
inline

Definition at line 839 of file dstring.h.

840{
841 return dstricmp_sort(str1.data(),str2);
842}

References DString::data(), and dstricmp_sort().

◆ dstricmp_sort() [4/4]

int dstricmp_sort ( const DString & str1,
const DString & str2 )
inline

Definition at line 849 of file dstring.h.

850{
851 return dstricmp_sort(str1.data(),str2.data());
852}

References DString::data(), and dstricmp_sort().

◆ dstrlen()

uint32_t dstrlen ( const char * str)
inline

Returns the length of string str, or 0 if a null pointer is passed.

Definition at line 43 of file dstring.h.

44{ return str ? static_cast<uint32_t>(strlen(str)) : 0; }

Referenced by DString::contains(), dstrdup(), DocParser::findDocsForMemberOrCompound(), getArg(), DString::insert(), VhdlDocGen::prepareComment(), DString::rfind_insensitive(), selectBlocks(), substituteKeywords(), writeClassTreeInsideNamespaceElement(), writeNamespaceIndex(), and writeNamespaceTreeElement().

◆ dstrncmp()

int dstrncmp ( const char * str1,
const char * str2,
size_t len )
inline

Definition at line 60 of file dstring.h.

61{ return (str1 && str2) ? strncmp(str1,str2,len) : // both non-empty
62 (disempty(str1) && disempty(str2)) ? 0 : // both empty
63 disempty(str1) ? -1 : 1; // one empty other non-empty
64}

References disempty().

Referenced by checkBlocks(), DString::contains(), Markdown::Private::findEmphasisChar(), Markdown::Private::findEndOfLine(), literal_at(), literal_at(), Markdown::Private::processBlocks(), Markdown::Private::processQuotations(), Markdown::Private::processSpecialCommand(), removeIdsAndMarkers(), selectBlocks(), skipToEndMarker(), substitute(), and substituteKeywords().

◆ dstrncpy()

char * dstrncpy ( char * dst,
const char * src,
size_t len )

Definition at line 432 of file dstring.cpp.

433{
434 if ( !src ) return nullptr;
435 strncpy( dst, src, len );
436 if ( len > 0 ) dst[len-1] = '\0';
437 return dst;
438}

◆ dstrnicmp() [1/4]

int dstrnicmp ( const char * str1,
const char * str2,
size_t len )

Definition at line 458 of file dstring.cpp.

459{
460 if ( !s1 || !s2 )
461 {
462 return static_cast<int>(s2 - s1);
463 }
464 for ( ; len--; s1++, s2++ )
465 {
466 char c = toLowerChar(*s1);
467 int res = c-toLowerChar(*s2);
468 if ( res!=0 ) // strings are not equal
469 {
470 return res;
471 }
472 if ( c==0 ) // strings are equal
473 {
474 break;
475 }
476 }
477 return 0;
478}

References toLowerChar().

Referenced by DString::contains(), dstrnicmp(), dstrnicmp(), dstrnicmp(), and DString::rfind_insensitive().

◆ dstrnicmp() [2/4]

int dstrnicmp ( const char * str1,
const DString & str2,
size_t len )
inline

Definition at line 860 of file dstring.h.

861{
862 return dstrnicmp(str1,str2.data(),len);
863}
int dstrnicmp(const char *str1, const char *str2, size_t len)
Definition dstring.cpp:458

References DString::data(), and dstrnicmp().

◆ dstrnicmp() [3/4]

int dstrnicmp ( const DString & str1,
const char * str2,
size_t len )
inline

Definition at line 855 of file dstring.h.

856{
857 return dstrnicmp(str1.data(),str2,len);
858}

References DString::data(), and dstrnicmp().

◆ dstrnicmp() [4/4]

int dstrnicmp ( const DString & str1,
const DString & str2,
size_t len )
inline

Definition at line 865 of file dstring.h.

866{
867 return dstrnicmp(str1.data(),str2.data(),len);
868}

References DString::data(), and dstrnicmp().

◆ generateMarker()

DString generateMarker ( int id)
inline

Returns a place holder for a position in a list. Used for translators to be able to specify different elements orders depending on whether text flows from left to right or visa versa.

Definition at line 908 of file dstring.h.

909{
910 const int maxMarkerStrLen = 20;
911 char result[maxMarkerStrLen];
912 snprintf(result,maxMarkerStrLen,"@%d",id);
913 return result;
914}

Referenced by TranslatorAfrikaans::trWriteList(), TranslatorArabic::trWriteList(), TranslatorArmenian::trWriteList(), TranslatorBrazilian::trWriteList(), TranslatorBulgarian::trWriteList(), TranslatorCatalan::trWriteList(), TranslatorChinese::trWriteList(), TranslatorChinesetraditional::trWriteList(), TranslatorCroatian::trWriteList(), TranslatorCzech::trWriteList(), TranslatorDanish::trWriteList(), TranslatorDutch::trWriteList(), TranslatorEnglish::trWriteList(), TranslatorEsperanto::trWriteList(), TranslatorFinnish::trWriteList(), TranslatorFrench::trWriteList(), TranslatorGerman::trWriteList(), TranslatorGreek::trWriteList(), TranslatorHindi::trWriteList(), TranslatorHungarian::trWriteList(), TranslatorIndonesian::trWriteList(), TranslatorItalian::trWriteList(), TranslatorJapanese::trWriteList(), TranslatorKorean::trWriteList(), TranslatorLatvian::trWriteList(), TranslatorLithuanian::trWriteList(), TranslatorMacedonian::trWriteList(), TranslatorNorwegian::trWriteList(), TranslatorPersian::trWriteList(), TranslatorPolish::trWriteList(), TranslatorPortuguese::trWriteList(), TranslatorRomanian::trWriteList(), TranslatorRussian::trWriteList(), TranslatorSerbian::trWriteList(), TranslatorSerbianCyrillic::trWriteList(), TranslatorSlovak::trWriteList(), TranslatorSlovene::trWriteList(), TranslatorSpanish::trWriteList(), TranslatorSwedish::trWriteList(), TranslatorTurkish::trWriteList(), TranslatorUkrainian::trWriteList(), and TranslatorVietnamese::trWriteList().

◆ isId()

◆ operator!=() [1/3]

bool operator!= ( const char * s1,
const DString & s2 )
inline

Definition at line 737 of file dstring.h.

738{ return dstrcmp(s1,s2.data()) != 0; }

References DString::data(), and dstrcmp().

◆ operator!=() [2/3]

bool operator!= ( const DString & s1,
const char * s2 )
inline

Definition at line 734 of file dstring.h.

735{ return dstrcmp(s1.data(),s2) != 0; }

References DString::data(), and dstrcmp().

◆ operator!=() [3/3]

bool operator!= ( const DString & s1,
const DString & s2 )
inline

Definition at line 731 of file dstring.h.

732{ return s1.str() != s2.str(); }
const std::string & str() const
Definition dstring.h:649

References DString::str().

◆ operator+() [1/3]

DString operator+ ( const char * s1,
const DString & s2 )
inline

Definition at line 780 of file dstring.h.

781{
782 DString tmp(s1);
783 tmp.append(s2);
784 return tmp;
785}
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:88

References DString::append().

◆ operator+() [2/3]

DString operator+ ( const DString & s1,
const char * s2 )
inline

Definition at line 773 of file dstring.h.

774{
775 DString tmp(s1);
776 tmp.append(s2);
777 return tmp;
778}

References DString::append().

◆ operator+() [3/3]

DString operator+ ( const DString & s1,
const DString & s2 )
inline

Definition at line 767 of file dstring.h.

768{
769 return DString(s1.str()+s2.str());
770}

References DString::str().

◆ operator<() [1/3]

bool operator< ( const char * s1,
const DString & s2 )
inline

Definition at line 746 of file dstring.h.

747{ return dstrcmp(s1,s2.data()) < 0; }

References DString::data(), and dstrcmp().

◆ operator<() [2/3]

bool operator< ( const DString & s1,
const char * s2 )
inline

Definition at line 743 of file dstring.h.

744{ return dstrcmp(s1.data(),s2) < 0; }

References DString::data(), and dstrcmp().

◆ operator<() [3/3]

bool operator< ( const DString & s1,
const DString & s2 )
inline

Definition at line 740 of file dstring.h.

741{ return dstrcmp(s1.data(),s2.data()) < 0; }

References DString::data(), and dstrcmp().

◆ operator<<()

std::ostream & operator<< ( std::ostream & os,
const DString & s )
inline

Definition at line 885 of file dstring.h.

886{
887 os << s.str();
888 return os;
889}

References DString::str().

◆ operator<=() [1/2]

bool operator<= ( const char * s1,
const DString & s2 )
inline

Definition at line 752 of file dstring.h.

753{ return dstrcmp(s1,s2.data()) <= 0; }

References DString::data(), and dstrcmp().

◆ operator<=() [2/2]

bool operator<= ( const DString & s1,
const char * s2 )
inline

Definition at line 749 of file dstring.h.

750{ return dstrcmp(s1.data(),s2) <= 0; }

References DString::data(), and dstrcmp().

◆ operator==() [1/3]

bool operator== ( const char * s1,
const DString & s2 )
inline

Definition at line 728 of file dstring.h.

729{ return dstrcmp(s1,s2.data()) == 0; }

References DString::data(), and dstrcmp().

◆ operator==() [2/3]

bool operator== ( const DString & s1,
const char * s2 )
inline

Definition at line 725 of file dstring.h.

726{ return dstrcmp(s1.data(),s2) == 0; }

References DString::data(), and dstrcmp().

◆ operator==() [3/3]

bool operator== ( const DString & s1,
const DString & s2 )
inline

Definition at line 722 of file dstring.h.

723{ return s1.str() == s2.str(); }

References DString::str().

◆ operator>() [1/2]

bool operator> ( const char * s1,
const DString & s2 )
inline

Definition at line 758 of file dstring.h.

759{ return dstrcmp(s1,s2.data()) > 0; }

References DString::data(), and dstrcmp().

◆ operator>() [2/2]

bool operator> ( const DString & s1,
const char * s2 )
inline

Definition at line 755 of file dstring.h.

756{ return dstrcmp(s1.data(),s2) > 0; }

References DString::data(), and dstrcmp().

◆ operator>=() [1/2]

bool operator>= ( const char * s1,
const DString & s2 )
inline

Definition at line 764 of file dstring.h.

765{ return dstrcmp(s1,s2.data()) >= 0; }

References DString::data(), and dstrcmp().

◆ operator>=() [2/2]

bool operator>= ( const DString & s1,
const char * s2 )
inline

Definition at line 761 of file dstring.h.

762{ return dstrcmp(s1.data(),s2) >= 0; }

References DString::data(), and dstrcmp().

◆ qPrint() [1/3]

const char * qPrint ( const char * s)
inline

Definition at line 787 of file dstring.h.

788{
789 if (s) return s; else return "";
790}

Referenced by addIncludeFile(), ModuleDefImpl::addMemberToModule(), addModule(), addSubprogram(), DirDefImpl::addUsesDependency(), addVariable(), addXRefItemToEntry(), buildFileList(), Config::checkAndCorrect(), DocParser::checkArgumentName(), cleanupInlineGraphs(), XMLCodeGenerator::codify(), codifyLines(), convertCppComments(), createCroppedEPS(), createCroppedPDF(), createDVIFile(), createEPSbboxFile(), createPNG(), createPostscriptFile(), createSVGFromPDF(), createSVGFromPDFviaInkscape(), DebugLex::DebugLex(), dumpDocNodeList(), encodeForOutput(), DocParser::errorHandleDefaultToken(), DocParser::findAndCopyImage(), findGlobalMember(), findMemberLink(), DocTokenizer::findSections(), VhdlDocGen::findVhdlClass(), generateClassMemberLink(), generateClassMemberLink(), generateClassOrGlobalLink(), generateClassOrGlobalLink(), generateFunctionLink(), generateFunctionLink(), generateMemberLink(), generatePHPVariableLink(), generateSqlite3ForClass(), generateSqlite3ForFile(), generateSqlite3ForMember(), DotGfxHierarchyTable::getBaseName(), getLink(), getLinkInScope(), handle_warn_as_error(), handleCommentBlock(), DocParser::handleRef(), handleToc(), mergeArguments(), PerlModDocVisitor::operator()(), PerlModDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), PrintDocVisitor::operator()(), ConfigImpl::parse(), DocSecRefList::parse(), LayoutDocManager::parse(), CCodeParser::parseCode(), FortranCodeParser::parseCode(), LexCodeParser::parseCode(), PythonCodeParser::parseCode(), SQLCodeParser::parseCode(), VHDLCodeParser::parseCode(), XMLCodeParser::parseCode(), CommentScanner::parseCommentBlock(), COutlineParser::parseInput(), FortranOutlineParser::parseInput(), LexOutlineParser::parseInput(), parseInput(), PythonOutlineParser::parseInput(), popScope(), FlowChart::printNode(), Markdown::process(), Preprocessor::processFile(), pushBuffer(), pushScope(), readIncludeFile(), DotNode::renumberNodes(), SymbolResolver::resolveSymbol(), runHtmlHelpCompiler(), saveObjCContext(), scanner_abort(), setCallContextForVar(), setClassScope(), setTranslator(), startCodeLine(), stripClassName(), writeDiaGraphFromFile(), DirDefImpl::writeDocumentation(), ClassDiagram::writeFigure(), FileDefImpl::writeIncludedByGraph(), FileDefImpl::writeIncludeGraph(), writeMscGraphFromFile(), writeMultiLineCodeLink(), writeObjCMethodCall(), and DebugLex::~DebugLex().

◆ qPrint() [2/3]

const char * qPrint ( const DString & s)
inline

Definition at line 792 of file dstring.h.

793{
794 if (!s.empty()) return s.data(); else return "";
795}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:152

References DString::data(), and DString::empty().

◆ qPrint() [3/3]

const char * qPrint ( const std::string & s)
inline

Definition at line 797 of file dstring.h.

798{
799 return s.c_str();
800}

◆ substitute() [1/4]

DString substitute ( const DString & s,
char srcChar,
char dstChar )
inline

Definition at line 878 of file dstring.h.

879{
880 std::string ss = s.str();
881 std::replace(ss.begin(),ss.end(),srcChar,dstChar);
882 return DString(ss);
883}

References DString::str().

◆ substitute() [2/4]

DString substitute ( const DString & s,
const DString & src,
const DString & dst,
int skip_seq )

substitute all occurrences of src in s by dst, but skip each consecutive sequence of src where the number consecutive src matches skip_seq; if skip_seq is negative, skip any number of consecutive src

Definition at line 522 of file dstring.cpp.

523{
524 if (s.empty() || src.empty()) return s;
525 const char *p = nullptr, *q = nullptr;
526 size_t srcLen = src.length();
527 size_t dstLen = dst.length();
528 size_t resLen = 0;
529 if (srcLen!=dstLen)
530 {
531 int count = 0;
532 for (p=s.data(); (q=strstr(p,src.data()))!=nullptr; p=q+srcLen) count++;
533 resLen = s.length()+count*(dstLen-srcLen);
534 }
535 else // result has same size as s
536 {
537 resLen = s.length();
538 }
539 DString result(resLen, DString::ExplicitSize);
540 char *r = result.rawData();
541 for (p = s.data(); (q=strstr(p,src.data()))!=nullptr; p=q+srcLen)
542 {
543 // search a consecutive sequence of src
544 int seq = 0, skip = 0;
545 if (skip_seq)
546 {
547 for (const char *n=q+srcLen; dstrncmp(n,src.data(),srcLen)==0; seq=1+skip, n+=srcLen)
548 ++skip; // number of consecutive src after the current one
549
550 // verify the allowed number of consecutive src to skip
551 if (skip_seq > 0 && skip_seq != seq)
552 seq = skip = 0;
553 }
554
555 // skip a consecutive sequence of src when necessary
556 int l = static_cast<int>((q + seq * srcLen)-p);
557 memcpy(r,p,l);
558 r+=l;
559
560 if (skip)
561 {
562 // skip only the consecutive src found after the current one
563 q += skip * srcLen;
564 // the next loop will skip the current src, aka (p=q+srcLen)
565 continue;
566 }
567
568 if (dstLen>0) memcpy(r,dst.data(),dstLen);
569 r+=dstLen;
570 }
571 dstrcpy(r,p);
572 result.resize(strlen(result.data()));
573 //printf("substitute(%s,%s,%s)->%s\n",s,src,dst,result.data());
574 return result;
575}
@ ExplicitSize
Definition dstring.h:135
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:155
char * dstrcpy(char *dst, const char *src)
Definition dstring.h:46
int dstrncmp(const char *str1, const char *str2, size_t len)
Definition dstring.h:60

References DString::data(), dstrcpy(), dstrncmp(), DString::empty(), DString::ExplicitSize, DString::length(), DString::rawData(), and DString::resize().

◆ substitute() [3/4]

DString substitute ( const DString & str,
const char * find,
const char * replace )
inline

Definition at line 872 of file dstring.h.

873{
874 return substitute(str,DString(find),DString(replace));
875}
DString substitute(const DString &str, const DString &find, const DString &replace)
substitute all occurrences of src in s by dst
Definition dstring.cpp:481

References substitute().

◆ substitute() [4/4]

DString substitute ( const DString & str,
const DString & find,
const DString & replace )

substitute all occurrences of src in s by dst

Definition at line 481 of file dstring.cpp.

482{
483 if (s.empty() || src.empty()) return s;
484 const char *q = nullptr, *p = nullptr;
485 size_t srcLen = src.length();
486 size_t dstLen = dst.length();
487 size_t resLen = 0;
488 if (srcLen!=dstLen)
489 {
490 int count = 0;
491 for (p = s.data(); (q=strstr(p,src.data()))!=nullptr; p=q+srcLen) count++;
492 resLen = s.length()+count*(dstLen-srcLen);
493 }
494 else // result has same size as s
495 {
496 resLen = s.length();
497 }
498 DString result(resLen, DString::ExplicitSize);
499 char *r = result.rawData();
500 for (p = s.data(); (q=strstr(p,src.data()))!=nullptr; p=q+srcLen)
501 {
502 int l = static_cast<int>(q-p);
503 memcpy(r,p,l);
504 r+=l;
505
506 if (dstLen>0) memcpy(r,dst.data(),dstLen);
507 r+=dstLen;
508 }
509 if (r)
510 {
511 dstrcpy(r,p);
512 }
513 //printf("substitute(%s,%s,%s)->%s\n",s,src,dst,result.data());
514 return result;
515}

References DString::data(), dstrcpy(), DString::empty(), DString::ExplicitSize, DString::length(), and DString::rawData().

Referenced by abbreviate(), addEnumValuesToEnums(), FlowChart::addFlowChart(), addFrom(), addGlobalFunction(), HtmlHelpIndex::addItem(), MemberDefImpl::addListReference(), addMemberFunction(), addMethodToClass(), addModule(), addPageToContext(), Markdown::Private::addStrEscapeUtf8Nbsp(), addVariable(), addVariableToClass(), buildListOfUsingDecls(), buildNamespaceList(), convertFileId2Var(), Portable::correctPath(), MemberDefImpl::displayDefinition(), findDirDocumentation(), DocParser::findDocsForMemberOrCompound(), findGroupScope(), findMember(), findUsingDeclarations(), findUsingDirectives(), HtmlGenerator::fixSpaces(), format_warn(), generateClassOrGlobalLink(), generateClassOrGlobalLink(), generateJSLink(), generateJSNavTree(), RefList::generatePage(), VhdlDocGen::getClassName(), DocPara::handleStartCode(), HtmlGenerator::init(), linkifyText(), linkToText(), makeDisplayName(), makeDisplayName(), matchExcludedSymbols(), Markdown::process(), Markdown::Private::processLink(), resolveRef(), DotFilePatcher::run(), SearchIndex::setCurrentDoc(), stripIndentation(), substitute(), substituteHtmlKeywords(), substituteLatexKeywords(), Portable::system(), ConfigImpl::takeStartComment(), ConfigImpl::takeStoreRepl(), ConfigImpl::takeUserComment(), unescapeCRef(), validatingParseDoc(), warn_line(), MemberDefImpl::warnIfUndocumented(), writeAlphabeticalClassList(), MemberDefImpl::writeDeclaration(), MemberList::writeDeclarations(), writeDefArgumentList(), writeDefaultLayoutFile(), MemberDefImpl::writeDocumentation(), writeJavaScriptSearchIndex(), HtmlGenerator::writeNavigationPath(), PlantumlManager::writePlantUMLSource(), HtmlGenerator::writeSearchData(), HtmlGenerator::writeSearchPage(), and VhdlDocGen::writeVHDLTypeDocumentation().

◆ swap()

void swap ( DString & s1,
DString & s2 )
inline

Definition at line 891 of file dstring.h.

892{
893 s1.swap(s2);
894}
void swap(DString &other)
Swaps the contents of this string with other.
Definition dstring.h:224

References DString::swap().

◆ toStdString()

std::string toStdString ( const DString & s)
inline

Definition at line 802 of file dstring.h.

803{
804 return s.str();
805}

References DString::str().

Referenced by SectionRefs::add(), expandExpression(), and replaceFunctionMacro().