Doxygen
Loading...
Searching...
No Matches
dstring.h File Reference

#include <src/dstring.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 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 (char c)
 Returns true if c is a valid character for an identifier.
DString generateMarker (int id)

Macro Definition Documentation

◆ HAS_CHARACTER_APPEND_OPERATOR

#define HAS_CHARACTER_APPEND_OPERATOR   1

Definition at line 675 of file dstring.h.

◆ HAS_IMPLICIT_CAST_TO_PLAIN_C_STRING

#define HAS_IMPLICIT_CAST_TO_PLAIN_C_STRING   0

Definition at line 636 of file dstring.h.

Typedef Documentation

◆ JavaCCString

using JavaCCString = std::basic_string<JAVACC_CHAR_TYPE>

Definition at line 76 of file dstring.h.

Function Documentation

◆ disempty()

bool disempty ( const char * s)
inline

Definition at line 47 of file dstring.h.

48{ 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 50 of file dstring.h.

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

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 810 of file dstring.h.

811{
812 return dstrcmp(str1,str2.data());
813}
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:157
int dstrcmp(const char *str1, const char *str2)
Definition dstring.h:50

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

◆ dstrcmp() [3/4]

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

Definition at line 805 of file dstring.h.

806{
807 return dstrcmp(str1.data(),str2);
808}

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

◆ dstrcmp() [4/4]

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

Definition at line 815 of file dstring.h.

816{
817 return dstrcmp(str1.data(),str2.data());
818}

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

◆ dstrcpy()

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

Definition at line 42 of file dstring.h.

43{ 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 424 of file dstring.cpp.

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

References dstrlen().

◆ dstrfree()

void dstrfree ( const char * s)

Frees the memory allocated using dstrdup().

Definition at line 431 of file dstring.cpp.

432{
433 delete [](str);
434}

◆ dstricmp() [1/4]

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

Definition at line 444 of file dstring.cpp.

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

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 825 of file dstring.h.

826{
827 return dstricmp(str1,str2.data());
828}
int dstricmp(const char *str1, const char *str2)
Definition dstring.cpp:444

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

◆ dstricmp() [3/4]

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

Definition at line 820 of file dstring.h.

821{
822 return dstricmp(str1.data(),str2);
823}

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

◆ dstricmp() [4/4]

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

Definition at line 830 of file dstring.h.

831{
832 return dstricmp(str1.data(),str2.data());
833}

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 840 of file dstring.h.

841{
842 return dstricmp_sort(str1,str2.data());
843}
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:67

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

◆ dstricmp_sort() [3/4]

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

Definition at line 835 of file dstring.h.

836{
837 return dstricmp_sort(str1.data(),str2);
838}

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

◆ dstricmp_sort() [4/4]

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

Definition at line 845 of file dstring.h.

846{
847 return dstricmp_sort(str1.data(),str2.data());
848}

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 39 of file dstring.h.

40{ 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 56 of file dstring.h.

57{ return (str1 && str2) ? strncmp(str1,str2,len) : // both non-empty
58 (disempty(str1) && disempty(str2)) ? 0 : // both empty
59 disempty(str1) ? -1 : 1; // one empty other non-empty
60}

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 436 of file dstring.cpp.

437{
438 if ( !src ) return nullptr;
439 strncpy( dst, src, len );
440 if ( len > 0 ) dst[len-1] = '\0';
441 return dst;
442}

◆ dstrnicmp() [1/4]

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

Definition at line 462 of file dstring.cpp.

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

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 856 of file dstring.h.

857{
858 return dstrnicmp(str1,str2.data(),len);
859}
int dstrnicmp(const char *str1, const char *str2, size_t len)
Definition dstring.cpp:462

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

◆ dstrnicmp() [3/4]

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

Definition at line 851 of file dstring.h.

852{
853 return dstrnicmp(str1.data(),str2,len);
854}

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

◆ dstrnicmp() [4/4]

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

Definition at line 861 of file dstring.h.

862{
863 return dstrnicmp(str1.data(),str2.data(),len);
864}

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 904 of file dstring.h.

905{
906 const int maxMarkerStrLen = 20;
907 char result[maxMarkerStrLen];
908 snprintf(result,maxMarkerStrLen,"@%d",id);
909 return result;
910}

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()

bool isId ( char c)
inline

◆ operator!=() [1/3]

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

Definition at line 733 of file dstring.h.

734{ 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 730 of file dstring.h.

731{ 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 727 of file dstring.h.

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

References DString::str().

◆ operator+() [1/3]

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

Definition at line 776 of file dstring.h.

777{
778 DString tmp(s1);
779 tmp.append(s2);
780 return tmp;
781}
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:84

References DString::append().

◆ operator+() [2/3]

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

Definition at line 769 of file dstring.h.

770{
771 DString tmp(s1);
772 tmp.append(s2);
773 return tmp;
774}

References DString::append().

◆ operator+() [3/3]

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

Definition at line 763 of file dstring.h.

764{
765 return DString(s1.str()+s2.str());
766}

References DString::str().

◆ operator<() [1/3]

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

Definition at line 742 of file dstring.h.

743{ 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 739 of file dstring.h.

740{ 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 736 of file dstring.h.

737{ 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 881 of file dstring.h.

882{
883 os << s.str();
884 return os;
885}

References DString::str().

◆ operator<=() [1/2]

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

Definition at line 748 of file dstring.h.

749{ 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 745 of file dstring.h.

746{ 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 724 of file dstring.h.

725{ 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 721 of file dstring.h.

722{ 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 718 of file dstring.h.

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

References DString::str().

◆ operator>() [1/2]

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

Definition at line 754 of file dstring.h.

755{ 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 751 of file dstring.h.

752{ 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 760 of file dstring.h.

761{ 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 757 of file dstring.h.

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

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

◆ qPrint() [1/3]

const char * qPrint ( const char * s)
inline

Definition at line 783 of file dstring.h.

784{
785 if (s) return s; else return "";
786}

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 788 of file dstring.h.

789{
790 if (!s.empty()) return s.data(); else return "";
791}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148

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

◆ qPrint() [3/3]

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

Definition at line 793 of file dstring.h.

794{
795 return s.c_str();
796}

◆ substitute() [1/4]

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

Definition at line 874 of file dstring.h.

875{
876 std::string ss = s.str();
877 std::replace(ss.begin(),ss.end(),srcChar,dstChar);
878 return DString(ss);
879}

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 526 of file dstring.cpp.

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

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 868 of file dstring.h.

869{
870 return substitute(str,DString(find),DString(replace));
871}
DString substitute(const DString &str, const DString &find, const DString &replace)
substitute all occurrences of src in s by dst
Definition dstring.cpp:485

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 485 of file dstring.cpp.

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

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 887 of file dstring.h.

888{
889 s1.swap(s2);
890}
void swap(DString &other)
Swaps the contents of this string with other.
Definition dstring.h:220

References DString::swap().

◆ toStdString()

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

Definition at line 798 of file dstring.h.

799{
800 return s.str();
801}

References DString::str().

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