PhoenixInkscape  2.0.0
Generate multiple png files with svg inkscape files
PString Class Reference

Extends the std::string. More...

#include <PString.h>

+ Inheritance diagram for PString:
+ Collaboration diagram for PString:

Public Member Functions

PStringadd (char ch)
 Add a char to an other. More...
 
PStringadd (const char *str)
 Add a char pointer to an other. More...
 
PStringadd (const PString &other)
 Add a PString to an other. More...
 
PStringadd (const std::string &other)
 Add a std::string to an other. More...
 
size_t count (char ch) const
 Count the number of char ch in the current PString. More...
 
size_t count (const PString &patern) const
 Count the number of patern in string. More...
 
PString eraseChar (char ch) const
 Erase char ch of current string. More...
 
PString eraseChar (const PString &vecChar) const
 Erase char ch of current string. More...
 
PString eraseFirstChar (const PString &vecChar) const
 Erase first char in a string. More...
 
PString eraseFirstLastChar (const PString &vecChar) const
 Erase first and last char in a string. More...
 
PString eraseLastChar (const PString &vecChar) const
 Erase first and last char in a string. More...
 
PString escapeStr (const PString &strCharToEscape, const PString &escapeSeq) const
 Escape given string with passed characters. More...
 
bool find (char ch) const
 Find a char in a string. More...
 
bool find (const PString &listChar) const
 Find multiple chars in a string. More...
 
PString firstToLower () const
 Convert first letter of the PString in lower case. More...
 
PString firstToUpper () const
 Convert first letter of the PString in upper case. More...
 
PString format (const PString &arg) const
 Replace first {} with arg. More...
 
template<typename T >
PStringfromValue (const T &other)
 Convert a value to a PString. More...
 
PString getCommonBegining (const PString &other) const
 Get the common begining between the current PString and other. More...
 
bool isLowerCase () const
 Say if the given PString is in lowercase. More...
 
bool isNumber () const
 Say if the given PString is composed of numbers. More...
 
bool isSameBegining (const PString &beginStr) const
 Say if the current PString has the same begining of beginStr. More...
 
bool isUpperCase () const
 Say if the given PString is in uppercase. More...
 
PStringmerge (const std::vector< PString > &vecStr, const PString &separator="")
 Merge a set of PString. More...
 
PStringoperator+= (char ch)
 Add a char to an other. More...
 
PStringoperator+= (const PString &other)
 Add a PString to an other. More...
 
PStringoperator+= (const std::string &other)
 Add a std::string to an other. More...
 
template<typename T >
PStringoperator+= (const T &other)
 Append type in PString. More...
 
template<typename T >
PStringoperator<< (const T &other)
 Append type in PString. More...
 
PStringoperator= (const PString &other)
 Definition of equal operator of PString. More...
 
PStringoperator= (const std::string &other)
 Definition of equal operator of PString and std::string. More...
 
template<typename T >
PStringoperator= (const T &other)
 Set type in PString. More...
 
 PString ()
 Default constructor of PString. More...
 
 PString (const char *str)
 Default constructor of PString. More...
 
 PString (const PString &other)
 Copy constructor of PString. More...
 
 PString (const std::string &str)
 Default constructor of PString. More...
 
PString replace (const PString &pattern, const PString &replaceStr) const
 Replace a PString into an other PString. More...
 
PString replace (const PString &pattern, const PString &replaceStr, size_t maxNbReplace) const
 Replace a PString into an other PString. More...
 
PString replaceChar (const PString &vecChar, const PString &replaceStr) const
 Replace characters in vecChar by replaceStr. More...
 
std::vector< PStringsplit (char separator) const
 Cut a PString on the given separator char. More...
 
std::vector< PStringsplit (const PString &vecSeparator) const
 Split the PString on any given characters of vecSeparator. More...
 
PString toLower () const
 Convert PString in lower case. More...
 
PString toLowerUnderscore () const
 Convert std::string in lower case and space in '_'. More...
 
PString toUpper () const
 Convert std::string in upper case. More...
 
template<typename T >
toValue () const
 Convert the current string into a value. More...
 
virtual ~PString ()
 Destructeur of PString. More...
 

Static Public Member Functions

template<typename T >
static PString toString (const T &value)
 Convert a value to a PString. More...
 
template<typename T >
static T toValue (const PString &other)
 Convert the given string into a value. More...
 

Protected Member Functions

void concatenatePString (const PString &other)
 Concatenate a PString into the current PString. More...
 
void concatenatePString (const std::string &other)
 Concatenate a std::string into the current PString. More...
 
void copyPString (const PString &other)
 Copy function of PString. More...
 
void copyPString (const std::string &other)
 Copy function of PString. More...
 

Private Member Functions

void initialisationPString ()
 Initialisation function of the class PString. More...
 

Detailed Description

Extends the std::string.

Definition at line 16 of file PString.h.

Constructor & Destructor Documentation

◆ PString() [1/4]

PString::PString ( )

Default constructor of PString.

Definition at line 70 of file PString.cpp.

71  :std::string("")
72 {
74 }
void initialisationPString()
Initialisation function of the class PString.
Definition: PString.cpp:740

References initialisationPString().

Referenced by PPath::getExtension(), PPath::getParentDirectory(), PPath::getProgramDirectory(), PPath::getProgramLocation(), and PPath::simplify().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PString() [2/4]

PString::PString ( const char *  str)

Default constructor of PString.

Parameters
str: pointer to initialise the PString

Definition at line 79 of file PString.cpp.

80  :std::string(str)
81 {
83 }

References initialisationPString().

+ Here is the call graph for this function:

◆ PString() [3/4]

PString::PString ( const std::string &  str)

Default constructor of PString.

Parameters
str: string to initialise the PString

Definition at line 88 of file PString.cpp.

89  :std::string(str)
90 {
92 }

References initialisationPString().

+ Here is the call graph for this function:

◆ PString() [4/4]

PString::PString ( const PString other)

Copy constructor of PString.

Parameters
other: class to copy

Definition at line 97 of file PString.cpp.

98  :std::string()
99 {
100  copyPString(other);
101 }
void copyPString(const PString &other)
Copy function of PString.
Definition: PString.cpp:706

References copyPString().

+ Here is the call graph for this function:

◆ ~PString()

PString::~PString ( )
virtual

Destructeur of PString.

Definition at line 104 of file PString.cpp.

104  {
105 
106 }

Member Function Documentation

◆ add() [1/4]

PString & PString::add ( char  ch)

Add a char to an other.

Parameters
ch: char to be added to the current one
Returns
PString

Definition at line 172 of file PString.cpp.

172  {
173  std::string str;
174  str+= ch;
175  concatenatePString(str);
176  return *this;
177 }
void concatenatePString(const PString &other)
Concatenate a PString into the current PString.
Definition: PString.cpp:722

References concatenatePString().

+ Here is the call graph for this function:

◆ add() [2/4]

PString & PString::add ( const char *  str)

Add a char pointer to an other.

Parameters
str: char pointer to be added to the current one
Returns
PString

Definition at line 183 of file PString.cpp.

183  {
185  return *this;
186 }
PString phoenix_charToString(const char *ch)
Convert a char pointer into a string (event if the char pointer is NULL)
Definition: PString.cpp:14

References concatenatePString(), and phoenix_charToString().

+ Here is the call graph for this function:

◆ add() [3/4]

PString & PString::add ( const PString other)

Add a PString to an other.

Parameters
other: PString to be added to the current one
Returns
PString

Definition at line 154 of file PString.cpp.

154  {
155  concatenatePString(other);
156  return *this;
157 }

References concatenatePString().

Referenced by PPath::makeAbsolute(), and operator+=().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add() [4/4]

PString & PString::add ( const std::string &  other)

Add a std::string to an other.

Parameters
other: std::string to be added to the current one
Returns
PString

Definition at line 163 of file PString.cpp.

163  {
164  concatenatePString(other);
165  return *this;
166 }

References concatenatePString().

+ Here is the call graph for this function:

◆ concatenatePString() [1/2]

void PString::concatenatePString ( const PString other)
protected

Concatenate a PString into the current PString.

Parameters
other: PString to be added

Definition at line 722 of file PString.cpp.

722  {
723  std::string tmp(*this);
724  resize(tmp.size() + other.size());
725  memcpy((char*)data(), tmp.data(), tmp.size());
726  memcpy((char*)data() + tmp.size(), other.data(), other.size());
727 }

Referenced by add(), operator+=(), and operator<<().

+ Here is the caller graph for this function:

◆ concatenatePString() [2/2]

void PString::concatenatePString ( const std::string &  other)
protected

Concatenate a std::string into the current PString.

Parameters
other: std::string to be added

Definition at line 732 of file PString.cpp.

732  {
733  std::string tmp(*this);
734  resize(tmp.size() + other.size());
735  memcpy((char*)data(), tmp.data(), tmp.size());
736  memcpy((char*)data() + tmp.size(), other.data(), other.size());
737 }

◆ copyPString() [1/2]

void PString::copyPString ( const PString other)
protected

Copy function of PString.

Parameters
other: class to copy

Definition at line 706 of file PString.cpp.

706  {
707  resize(other.size());
708  memcpy((char*)data(), other.data(), other.size());
709 }

Referenced by fromValue(), PPath::operator=(), operator=(), and PString().

+ Here is the caller graph for this function:

◆ copyPString() [2/2]

void PString::copyPString ( const std::string &  other)
protected

Copy function of PString.

Parameters
other: class to copy

Definition at line 714 of file PString.cpp.

714  {
715  resize(other.size());
716  memcpy((char*)data(), other.data(), other.size());
717 }

◆ count() [1/2]

size_t PString::count ( char  ch) const

Count the number of char ch in the current PString.

Parameters
ch: char to be counted
Returns
number of char ch in the current PString

Definition at line 323 of file PString.cpp.

323  {
324  const PString & str(*this);
325  size_t nbChar(0lu);
326  std::string::const_iterator it(str.begin());
327  while(it != str.end()){
328  if(*it == ch) nbChar++;
329  it++;
330  }
331  return nbChar;
332 }
Extends the std::string.
Definition: PString.h:16

Referenced by PPath::getLongestExtension().

+ Here is the caller graph for this function:

◆ count() [2/2]

size_t PString::count ( const PString patern) const

Count the number of patern in string.

Parameters
patern: patern to be serached
Returns
number of occurence of patern in src

Definition at line 338 of file PString.cpp.

338  {
339  const PString & src = *this;
340  long unsigned int sizePatern(patern.size()), sizeSrc(src.size());
341  if(sizePatern == 0lu || sizeSrc == 0lu){return 0lu;}
342  size_t nbPaternFound(0lu);
343 
344  long unsigned int beginTest(0lu), nbMatch(0lu);
345  for(long unsigned int i(0lu); i < sizeSrc; ++i){
346  if(src[i] == patern[nbMatch]){ //si le caractère i est le même que le caractère nbMatch
347  if(nbMatch == 0lu){ //c'est le premier qu'on teste
348  beginTest = i; //il faut donc se rappeler où on a commencer à faire le teste
349  }
350  ++nbMatch; //la prochaîne fois on testera le caractère suivant
351  if(nbMatch == sizePatern){ //dans ce cas, on a tout testé et tout les caractères correspondent, donc on sauvegarde
352  ++nbPaternFound;
353  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
354  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
355  }
356  }else{ //si le caractère i n'est pas le même caractère que nbMatch
357  if(nbMatch != 0lu){ //si on avais déjà tester des caractères avant
358  i = beginTest;
359  }
360  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
361  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
362  }
363  }
364  return nbPaternFound;
365 }

◆ eraseChar() [1/2]

PString PString::eraseChar ( char  ch) const

Erase char ch of current string.

Parameters
ch: char to be removed
Returns
modified PString

Definition at line 478 of file PString.cpp.

478  {
479  PString buffer = "";
480  for(PString::const_iterator it = begin(); it != end(); it++){
481  if(*it != ch) buffer += *it;
482  }
483  return buffer;
484 }

Referenced by eraseChar(), PPath::getCurrentNodeName(), and PFileParser::getStrComposedOf().

+ Here is the caller graph for this function:

◆ eraseChar() [2/2]

PString PString::eraseChar ( const PString vecChar) const

Erase char ch of current string.

Parameters
vecChar: chars to be removed
Returns
modified PString

Definition at line 490 of file PString.cpp.

490  {
491  PString buffer(*this);
492  for(PString::const_iterator it = vecChar.begin(); it != vecChar.end(); it++){
493  buffer = buffer.eraseChar(*it);
494  }
495  return buffer;
496 }

References eraseChar().

+ Here is the call graph for this function:

◆ eraseFirstChar()

PString PString::eraseFirstChar ( const PString vecChar) const

Erase first char in a string.

Parameters
vecChar: chars to be searched and removed
Returns
modifed string

Definition at line 502 of file PString.cpp.

502  {
503  PString buffer(*this);
504  bool continuer = true;
505  PString::iterator it = buffer.begin();
506  //Let's remove the first chars
507  while(it != buffer.end() && continuer){
508  if(vecChar.find(*it)){it = buffer.erase(it);}
509  else{
510  continuer = false;
511  it++;
512  }
513  }
514  return buffer;
515 }
bool find(char ch) const
Find a char in a string.
Definition: PString.cpp:371

References find().

Referenced by checkEraseFirstChars(), and eraseFirstLastChar().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ eraseFirstLastChar()

PString PString::eraseFirstLastChar ( const PString vecChar) const

Erase first and last char in a string.

Parameters
vecChar: chars to be searched and removed
Returns
modifed string

Definition at line 545 of file PString.cpp.

545  {
546  PString buffer(eraseFirstChar(vecChar));
547  return buffer.eraseLastChar(vecChar);
548 }
PString eraseFirstChar(const PString &vecChar) const
Erase first char in a string.
Definition: PString.cpp:502

References eraseFirstChar(), and eraseLastChar().

Referenced by checkEraseFirstLastChars(), and DicoValue::getString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ eraseLastChar()

PString PString::eraseLastChar ( const PString vecChar) const

Erase first and last char in a string.

Parameters
vecChar: chars to be searched and removed
Returns
modifed string

Definition at line 521 of file PString.cpp.

521  {
522  if(size() > 0lu){
523  size_t nbCharToRemove(0lu);
524  PString::const_reverse_iterator it(rbegin());
525  while(vecChar.find(*it)){
526  ++it;
527  ++nbCharToRemove;
528  }
529 
530  if(nbCharToRemove == 0lu){
531  return *this;
532  }else{
533  PString buffer(substr(0, size() - nbCharToRemove));
534  return buffer;
535  }
536  }else{
537  return *this;
538  }
539 }

References find().

Referenced by checkEraseLastChars(), and eraseFirstLastChar().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ escapeStr()

PString PString::escapeStr ( const PString strCharToEscape,
const PString escapeSeq 
) const

Escape given string with passed characters.

Parameters
strCharToEscape: list of the characters to be escaped
escapeSeq: escape sequence (could be one char)
Returns
escaped string

Definition at line 689 of file PString.cpp.

689  {
690  if(size() == 0lu || strCharToEscape.size() == 0lu || escapeSeq.size() == 0lu){return *this;}
691  const PString & src = *this;
692  std::string out("");
693  for(size_t i(0lu); i < src.size(); ++i){
694  char ch = src[i];
695  if(strCharToEscape.find(ch)){
696  out += escapeSeq;
697  }
698  out += ch;
699  }
700  return out;
701 }

References find().

Referenced by phoenix_listArgToString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ find() [1/2]

bool PString::find ( char  ch) const

Find a char in a string.

Parameters
ch: char to be searched
Returns
true if the char has been found, false otherwise

Definition at line 371 of file PString.cpp.

371  {
372  PString::const_iterator it = begin();
373  while(it != end()){
374  if(*it == ch) return true;
375  ++it;
376  }
377  return false;
378 }

Referenced by eraseFirstChar(), eraseLastChar(), escapeStr(), find(), PPath::getExtension(), PFileParser::getNextToken(), PPath::getParentDirectory(), PFileParser::getStrComposedOf(), PFileParser::getUntilKeyWithoutPaternRecurse(), PFileParser::isChSeparator(), PFileParser::isChSpace(), PFileParser::isMatch(), PFileParser::isMatchToken(), PFileParser::isWhiteSpace(), replaceChar(), DicoValue::saveRecurse(), PFileParser::skipChars(), PFileParser::skipWhiteSpace(), and split().

+ Here is the caller graph for this function:

◆ find() [2/2]

bool PString::find ( const PString listChar) const

Find multiple chars in a string.

Parameters
listChar: chars to be searched
Returns
true if one of the chars has been found, false otherwise

Definition at line 384 of file PString.cpp.

384  {
385  if(size() == 0lu || listChar.size() == 0lu){return false;}
386  bool foundChar = false;
387  long unsigned int i(0lu), size(listChar.size());
388  while(!foundChar && i < size){
389  foundChar = find(listChar[i]);
390  ++i;
391  }
392  return foundChar;
393 }

References find().

+ Here is the call graph for this function:

◆ firstToLower()

PString PString::firstToLower ( ) const

Convert first letter of the PString in lower case.

Returns
PString with first letter of the PString in lower case

Definition at line 659 of file PString.cpp.

659  {
660  if(size() == 0lu){return *this;}
661  const PString & str = *this;
662  std::string strOut(str);
663  char currentChar = strOut[0lu];
664  if(phoenix_isCharUpperCase(currentChar)){
665  strOut[0lu] = currentChar + (char)32;
666  }
667  return strOut;
668 }
bool phoenix_isCharUpperCase(char ch)
Tels if the character is upper case letter.
Definition: PString.cpp:27

References phoenix_isCharUpperCase().

+ Here is the call graph for this function:

◆ firstToUpper()

PString PString::firstToUpper ( ) const

Convert first letter of the PString in upper case.

Returns
PString with first letter of the PString in upper case

Definition at line 673 of file PString.cpp.

673  {
674  if(size() == 0lu){return *this;}
675  const PString & str = *this;
676  std::string strOut(str);
677  char currentChar = strOut[0lu];
678  if(phoenix_isCharLowerCase(currentChar)){
679  strOut[0lu] = currentChar - (char)32;
680  }
681  return strOut;
682 }
bool phoenix_isCharLowerCase(char ch)
Tels if the character is lower case letter.
Definition: PString.cpp:35

References phoenix_isCharLowerCase().

+ Here is the call graph for this function:

◆ format()

PString PString::format ( const PString arg) const

Replace first {} with arg.

Parameters
arg: PString to be replaced
Returns
modified PString

Definition at line 298 of file PString.cpp.

298  {
299  return replace("{}", arg, 1lu);
300 }
PString replace(const PString &pattern, const PString &replaceStr) const
Replace a PString into an other PString.
Definition: PString.cpp:204

References replace().

Referenced by checkFormat().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fromValue()

template<typename T >
PString & PString::fromValue ( const T &  other)

Convert a value to a PString.

Parameters
other: value to be converted
Returns
corresponding PString

Definition at line 36 of file PString_impl.h.

36  {
37  std::string tmpValue(valueToString(other));
38  copyPString(tmpValue);
39  return *this;
40 }
std::string valueToString(const T &val)
Convert a type into a string.

References copyPString(), and valueToString().

Referenced by checkValueToStringConvertion(), and OptionValue::setDefaultValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCommonBegining()

PString PString::getCommonBegining ( const PString other) const

Get the common begining between the current PString and other.

Parameters
other: string
Returns
common begining between the current PString and other

Definition at line 399 of file PString.cpp.

399  {
400  PString out("");
401  const PString & str1(*this);
402  PString::const_iterator it = str1.begin();
403  PString::const_iterator it2 = other.begin();
404  while(it != str1.end() && it2 != other.end()){
405  if(*it == *it2){
406  out += *it;
407  }else{
408  break;
409  }
410  it++;
411  it2++;
412  }
413  return out;
414 }

◆ initialisationPString()

void PString::initialisationPString ( )
private

Initialisation function of the class PString.

Definition at line 740 of file PString.cpp.

740  {
741 
742 }

Referenced by PString().

+ Here is the caller graph for this function:

◆ isLowerCase()

bool PString::isLowerCase ( ) const

Say if the given PString is in lowercase.

Returns
true if the PString is in lowercase, false if not

Definition at line 568 of file PString.cpp.

568  {
569  if(size() == 0lu){return false;}
570  const PString & str = *this;
571  bool isLower(true);
572  size_t i(0lu);
573  while(i < str.size() && isLower){
574  isLower = phoenix_isCharLowerCase(str[i]);
575  ++i;
576  }
577  return isLower;
578 }

References phoenix_isCharLowerCase().

+ Here is the call graph for this function:

◆ isNumber()

bool PString::isNumber ( ) const

Say if the given PString is composed of numbers.

Returns
true if the PString is composed of numbers, false if not

Definition at line 583 of file PString.cpp.

583  {
584  if(size() == 0lu){return false;}
585  const PString & str = *this;
586  bool isNumber(true);
587  size_t i(0lu);
588  while(i < str.size() && isNumber){
589  isNumber = phoenix_isCharNumber(str[i]);
590  ++i;
591  }
592  return isNumber;
593 }
bool phoenix_isCharNumber(char ch)
Tels if the character is a number or not.
Definition: PString.cpp:43
bool isNumber() const
Say if the given PString is composed of numbers.
Definition: PString.cpp:583

References phoenix_isCharNumber().

+ Here is the call graph for this function:

◆ isSameBegining()

bool PString::isSameBegining ( const PString beginStr) const

Say if the current PString has the same begining of beginStr.

Parameters
beginStr: begining string to check
Returns
true if the current PString has the same begining of beginStr, false otherhwise

Definition at line 306 of file PString.cpp.

306  {
307  const PString & src = *this;
308  if(src.size() < beginStr.size()) return false;
309  std::string::const_iterator it = src.begin();
310  std::string::const_iterator it2 = beginStr.begin();
311  while(it != src.end() && it2 != beginStr.end()){
312  if(*it != *it2){ return false;}
313  it++;
314  it2++;
315  }
316  return true;
317 }

Referenced by ArgParser::ArgParser(), completePathDir(), OptionParser::getLongOptionValue(), OptionMode::getPossibleMode(), Option::getPossibleOption(), OptionMode::getPossibleOption(), OptionParser::getPossibleOtherOption(), Option::parsePartOption(), path_completion_all(), and path_completion_dirOnly().

+ Here is the caller graph for this function:

◆ isUpperCase()

bool PString::isUpperCase ( ) const

Say if the given PString is in uppercase.

Returns
true if the PString is in uppercase, false if not

Definition at line 553 of file PString.cpp.

553  {
554  if(size() == 0lu){return false;}
555  const PString & str = *this;
556  bool isUpper(true);
557  size_t i(0lu);
558  while(i < str.size() && isUpper){
559  isUpper = phoenix_isCharUpperCase(str[i]);
560  ++i;
561  }
562  return isUpper;
563 }

References phoenix_isCharUpperCase().

+ Here is the call graph for this function:

◆ merge()

PString & PString::merge ( const std::vector< PString > &  vecStr,
const PString separator = "" 
)

Merge a set of PString.

Parameters
vecStr: vector of PString ot be merged
separator: separator between PString
Returns
corresponding PString

Definition at line 464 of file PString.cpp.

464  {
465  PString out(""), comma("");;
466  for(std::vector<PString>::const_iterator it(vecStr.begin()); it != vecStr.end(); ++it){
467  out += comma + (*it);
468  comma = separator;
469  }
470  *this = out;
471  return *this;
472 }

◆ operator+=() [1/4]

PString & PString::operator+= ( char  ch)

Add a char to an other.

Parameters
ch: char to be added to the current one
Returns
PString

Definition at line 146 of file PString.cpp.

146  {
147  return add(ch);
148 }
PString & add(const PString &other)
Add a PString to an other.
Definition: PString.cpp:154

References add().

+ Here is the call graph for this function:

◆ operator+=() [2/4]

PString & PString::operator+= ( const PString other)

Add a PString to an other.

Parameters
other: PString to be added to the current one
Returns
PString

Definition at line 130 of file PString.cpp.

130  {
131  return add(other);
132 }

References add().

+ Here is the call graph for this function:

◆ operator+=() [3/4]

PString & PString::operator+= ( const std::string &  other)

Add a std::string to an other.

Parameters
other: std::string to be added to the current one
Returns
PString

Definition at line 138 of file PString.cpp.

138  {
139  return add(other);
140 }

References add().

+ Here is the call graph for this function:

◆ operator+=() [4/4]

template<typename T >
PString & PString::operator+= ( const T &  other)

Append type in PString.

Parameters
other: type to be appended
Returns
PString

Definition at line 67 of file PString_impl.h.

67  {
68  std::string tmp(valueToString(other));
69  concatenatePString(tmp);
70  return *this;
71 }

References concatenatePString(), and valueToString().

+ Here is the call graph for this function:

◆ operator<<()

template<typename T >
PString & PString::operator<< ( const T &  other)

Append type in PString.

Parameters
other: type to be appended
Returns
PString

Definition at line 78 of file PString_impl.h.

78  {
79  std::string tmp(valueToString(other));
80  concatenatePString(tmp);
81  return *this;
82 }

References concatenatePString(), and valueToString().

+ Here is the call graph for this function:

◆ operator=() [1/3]

PString & PString::operator= ( const PString other)

Definition of equal operator of PString.

Parameters
other: class to copy
Returns
copied class

Definition at line 112 of file PString.cpp.

112  {
113  copyPString(other);
114  return *this;
115 }

References copyPString().

+ Here is the call graph for this function:

◆ operator=() [2/3]

PString & PString::operator= ( const std::string &  other)

Definition of equal operator of PString and std::string.

Parameters
other: class to copy
Returns
copied class

Definition at line 121 of file PString.cpp.

121  {
122  copyPString(other);
123  return *this;
124 }

References copyPString().

+ Here is the call graph for this function:

◆ operator=() [3/3]

template<typename T >
PString & PString::operator= ( const T &  other)

Set type in PString.

Parameters
other: type to be set in the PString
Returns
PString

Definition at line 56 of file PString_impl.h.

56  {
57  std::string tmp(valueToString(other));
58  copyPString(tmp);
59  return *this;
60 }

References copyPString(), and valueToString().

+ Here is the call graph for this function:

◆ replace() [1/2]

PString PString::replace ( const PString pattern,
const PString replaceStr 
) const

Replace a PString into an other PString.

Parameters
pattern: pattern to be replaced
replaceStr: string to replace
Returns
modified PString

Definition at line 204 of file PString.cpp.

204  {
205  size_t sizePatern(pattern.size());
206  const PString & src = *this;
207  if(sizePatern == 0lu || src.size() == 0lu) return *this;
208  PString out(""); //on évite les petits désagréments
209  size_t sizeSrc(src.size());
210  size_t beginTest(0lu), nbMatch(0lu);
211  for(size_t i(0lu); i < sizeSrc; ++i){
212  if(src[i] == pattern[nbMatch]){ //si le caractère i est le même que le caractère nbMatch
213  if(nbMatch == 0lu){ //c'est le premier qu'on teste
214  beginTest = i; //il faut donc se rappeler où on a commencer à faire le teste
215  }
216  ++nbMatch; //la prochaîne fois on testera le caractère suivant
217  if(nbMatch == sizePatern){ //dans ce cas, on a tout testé et tout les caractères correspondent, donc on sauvegarde
218  out += replaceStr; //on a trouver le motif pattern, donc on le remplace par le motif replaceStr
219  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
220  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
221  }
222  }else{ //si le caractère i n'est pas le même caractère que nbMatch
223  if(nbMatch == 0lu){ //si on n'en avait pas trouver de bon avant
224  out += src[i]; //on ne change rien à ce caractère
225  }else{ //si on avais déjà tester des caractères avant
226  out += src[beginTest];
227  i = beginTest;
228  }
229  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
230  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
231  }
232  }
233  //We are potentially at the end of the source, so no more test
234  return out;
235 }

Referenced by ArgParser::ArgParser(), checkPStringReplace(), format(), and saveDico().

+ Here is the caller graph for this function:

◆ replace() [2/2]

PString PString::replace ( const PString pattern,
const PString replaceStr,
size_t  maxNbReplace 
) const

Replace a PString into an other PString.

Parameters
pattern: pattern to be replaced
replaceStr: string to replace
maxNbReplace: maximum number of replace to perform in the string
Returns
modified PString

Definition at line 243 of file PString.cpp.

243  {
244  size_t sizePatern(pattern.size());
245  const PString & src = *this;
246  if(sizePatern == 0lu || src.size() == 0lu || maxNbReplace == 0lu) return *this;
247  PString out(""); //on évite les petits désagréments
248  size_t sizeSrc(src.size());
249  size_t beginTest(0lu), nbMatch(0lu), nbReplace(0lu);
250  for(size_t i(0lu); i < sizeSrc; ++i){
251  if(src[i] == pattern[nbMatch] && nbReplace < maxNbReplace){ //si le caractère i est le même que le caractère nbMatch
252  if(nbMatch == 0lu){ //c'est le premier qu'on teste
253  beginTest = i; //il faut donc se rappeler où on a commencer à faire le teste
254  }
255  ++nbMatch; //la prochaîne fois on testera le caractère suivant
256  if(nbMatch == sizePatern){ //dans ce cas, on a tout testé et tout les caractères correspondent, donc on sauvegarde
257  out += replaceStr; //on a trouver le motif pattern, donc on le remplace par le motif replaceStr
258  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
259  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
260  ++nbReplace;
261  }
262  }else{ //si le caractère i n'est pas le même caractère que nbMatch
263  if(nbMatch == 0lu){ //si on n'en avait pas trouver de bon avant
264  out += src[i]; //on ne change rien à ce caractère
265  }else{ //si on avais déjà tester des caractères avant
266  out += src[beginTest];
267  i = beginTest;
268  }
269  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
270  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
271  }
272  }
273  //We are potentially at the end of the source, so no more test
274  return out;
275 }

◆ replaceChar()

PString PString::replaceChar ( const PString vecChar,
const PString replaceStr 
) const

Replace characters in vecChar by replaceStr.

Parameters
vecChar: set of characters to be replaced
replaceStr: replacement string
Returns
modified PString

Definition at line 282 of file PString.cpp.

282  {
283  PString out;
284  for(PString::const_iterator it(begin()); it != end(); ++it){
285  if(vecChar.find(*it)){
286  out += replaceStr;
287  }else{
288  out += *it;
289  }
290  }
291  return out;
292 }

References find().

+ Here is the call graph for this function:

◆ split() [1/2]

std::vector< PString > PString::split ( char  separator) const

Cut a PString on the given separator char.

Parameters
separator: separtor char
Returns
vector of PString

Definition at line 420 of file PString.cpp.

420  {
421  std::vector<PString> vec;
422  PString buffer = "";
423  for(PString::const_iterator it = begin(); it != end(); ++it){
424  if(*it != separator){
425  buffer += *it;
426  }else{
427  vec.push_back(buffer);
428  buffer = "";
429  }
430  }
431  if(buffer != ""){vec.push_back(buffer);}
432  return vec;
433 }

Referenced by checkResultSeparator(), PPath::createDirectory(), createVectorSlide(), PPath::getUnderPath(), and PPath::simplify().

+ Here is the caller graph for this function:

◆ split() [2/2]

std::vector< PString > PString::split ( const PString vecSeparator) const

Split the PString on any given characters of vecSeparator.

Parameters
vecSeparator: PString of separator characters
Returns
split PString

Definition at line 439 of file PString.cpp.

439  {
440  std::vector<PString> vec;
441  if(size() != 0lu && vecSeparator.size() != 0lu){
442  PString buffer("");
443  for(PString::const_iterator it(begin()); it != end(); ++it){
444  if(!vecSeparator.find(*it)){
445  buffer += *it;
446  }else{
447  if(buffer != ""){
448  vec.push_back(buffer);
449  buffer = "";
450  }
451  }
452  }
453  if(buffer != "") vec.push_back(buffer);
454  }
455  return vec;
456 }

References find().

+ Here is the call graph for this function:

◆ toLower()

PString PString::toLower ( ) const

Convert PString in lower case.

Returns
lower case PString

Definition at line 598 of file PString.cpp.

598  {
599  if(size() == 0lu){return *this;}
600  const PString & str = *this;
601  std::string strOut("");
602  char currentChar;
603  long unsigned int size(str.size());
604  for(long unsigned int i(0lu); i < size; ++i){
605  currentChar = str[i];
606  if(phoenix_isCharUpperCase(currentChar)){
607  strOut += currentChar + (char)32;
608  }else{
609  strOut += currentChar;
610  }
611  }
612  return strOut;
613 }

References phoenix_isCharUpperCase().

Referenced by phoenix_convertBoolType().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ toLowerUnderscore()

PString PString::toLowerUnderscore ( ) const

Convert std::string in lower case and space in '_'.

Returns
std::string in lower case and space in '_'

Definition at line 618 of file PString.cpp.

618  {
619  if(size() == 0lu){return *this;}
620  const PString & str = *this;
621  std::string strOut("");
622  char currentChar;
623  long unsigned int size(str.size());
624  for(long unsigned int i(0lu); i < size; ++i){
625  currentChar = str[i];
626  if(phoenix_isCharUpperCase(currentChar)){
627  strOut += currentChar + (char)32;
628  }else{
629  if(currentChar == ' '){strOut += '_';}
630  else{strOut += currentChar;}
631  }
632  }
633  return strOut;
634 }

References phoenix_isCharUpperCase().

+ Here is the call graph for this function:

◆ toString()

template<typename T >
PString PString::toString ( const T &  value)
static

Convert a value to a PString.

Parameters
value: value to be converted
Returns
corresponding PString

Definition at line 18 of file PString_impl.h.

18  {
19  return valueToString(value);
20 }

References valueToString().

Referenced by testPString(), and testPStringConversion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ toUpper()

PString PString::toUpper ( ) const

Convert std::string in upper case.

Returns
lower case std::string

Definition at line 639 of file PString.cpp.

639  {
640  if(size() == 0lu){return *this;}
641  const PString & str = *this;
642  std::string strOut("");
643  char currentChar;
644  long unsigned int size(str.size());
645  for(long unsigned int i(0); i < size; ++i){
646  currentChar = str[i];
647  if(phoenix_isCharLowerCase(currentChar)){
648  strOut += currentChar - (char)32;
649  }else{
650  strOut += currentChar;
651  }
652  }
653  return strOut;
654 }

References phoenix_isCharLowerCase().

+ Here is the call graph for this function:

◆ toValue() [1/2]

template<typename T >
T PString::toValue

Convert the current string into a value.

Returns
corresponding value

Definition at line 46 of file PString_impl.h.

46  {
47  T value(stringToValue<T>(*this));
48  return value;
49 }

◆ toValue() [2/2]

template<typename T >
T PString::toValue ( const PString other)
static

Convert the given string into a value.

Parameters
other: PString to be converted
Returns
corresponding value

Definition at line 27 of file PString_impl.h.

27  {
28  return stringToValue<T>(other);
29 }

Referenced by checkValueToStringConvertion().

+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: