PhoenixSlider  2.0.0
Tool to create HTML presentation automatically
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...
 
size_t findPatternIndex (const PString &pattern, size_t offset=0lu) const
 Get the index of the first character of the given pattern. 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 getBetweenDelimiter (const PString &beginPattern, const PString &endPattern) const
 Get the PString between delimiter. 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...
 
PString keepChar (const PString &listChar) const
 Keep only the characters in the given listChar. 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:802

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:768

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:784

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 784 of file PString.cpp.

784  {
785  std::string tmp(*this);
786  resize(tmp.size() + other.size());
787  memcpy((char*)data(), tmp.data(), tmp.size());
788  memcpy((char*)data() + tmp.size(), other.data(), other.size());
789 }

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 794 of file PString.cpp.

794  {
795  std::string tmp(*this);
796  resize(tmp.size() + other.size());
797  memcpy((char*)data(), tmp.data(), tmp.size());
798  memcpy((char*)data() + tmp.size(), other.data(), other.size());
799 }

◆ copyPString() [1/2]

void PString::copyPString ( const PString other)
protected

Copy function of PString.

Parameters
other: class to copy

Definition at line 768 of file PString.cpp.

768  {
769  resize(other.size());
770  memcpy((char*)data(), other.data(), other.size());
771 }

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 776 of file PString.cpp.

776  {
777  resize(other.size());
778  memcpy((char*)data(), other.data(), other.size());
779 }

◆ 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 370 of file PString.cpp.

370  {
371  const PString & str(*this);
372  size_t nbChar(0lu);
373  std::string::const_iterator it(str.begin());
374  while(it != str.end()){
375  if(*it == ch) nbChar++;
376  it++;
377  }
378  return nbChar;
379 }
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 385 of file PString.cpp.

385  {
386  const PString & src = *this;
387  long unsigned int sizePatern(patern.size()), sizeSrc(src.size());
388  if(sizePatern == 0lu || sizeSrc == 0lu){return 0lu;}
389  size_t nbPaternFound(0lu);
390 
391  long unsigned int beginTest(0lu), nbMatch(0lu);
392  for(long unsigned int i(0lu); i < sizeSrc; ++i){
393  if(src[i] == patern[nbMatch]){ //si le caractère i est le même que le caractère nbMatch
394  if(nbMatch == 0lu){ //c'est le premier qu'on teste
395  beginTest = i; //il faut donc se rappeler où on a commencer à faire le teste
396  }
397  ++nbMatch; //la prochaîne fois on testera le caractère suivant
398  if(nbMatch == sizePatern){ //dans ce cas, on a tout testé et tout les caractères correspondent, donc on sauvegarde
399  ++nbPaternFound;
400  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
401  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
402  }
403  }else{ //si le caractère i n'est pas le même caractère que nbMatch
404  if(nbMatch != 0lu){ //si on avais déjà tester des caractères avant
405  i = beginTest;
406  }
407  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
408  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
409  }
410  }
411  return nbPaternFound;
412 }

◆ 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 540 of file PString.cpp.

540  {
541  PString buffer = "";
542  for(PString::const_iterator it = begin(); it != end(); it++){
543  if(*it != ch) buffer += *it;
544  }
545  return buffer;
546 }

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

+ 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 552 of file PString.cpp.

552  {
553  PString buffer(*this);
554  for(PString::const_iterator it = vecChar.begin(); it != vecChar.end(); it++){
555  buffer = buffer.eraseChar(*it);
556  }
557  return buffer;
558 }

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 564 of file PString.cpp.

564  {
565  PString buffer(*this);
566  bool continuer = true;
567  PString::iterator it = buffer.begin();
568  //Let's remove the first chars
569  while(it != buffer.end() && continuer){
570  if(vecChar.find(*it)){it = buffer.erase(it);}
571  else{
572  continuer = false;
573  it++;
574  }
575  }
576  return buffer;
577 }
bool find(char ch) const
Find a char in a string.
Definition: PString.cpp:418

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 607 of file PString.cpp.

607  {
608  PString buffer(eraseFirstChar(vecChar));
609  return buffer.eraseLastChar(vecChar);
610 }
PString eraseFirstChar(const PString &vecChar) const
Erase first char in a string.
Definition: PString.cpp:564

References eraseFirstChar(), and eraseLastChar().

Referenced by checkEraseFirstLastChars().

+ 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 583 of file PString.cpp.

583  {
584  if(size() > 0lu){
585  size_t nbCharToRemove(0lu);
586  PString::const_reverse_iterator it(rbegin());
587  while(vecChar.find(*it)){
588  ++it;
589  ++nbCharToRemove;
590  }
591 
592  if(nbCharToRemove == 0lu){
593  return *this;
594  }else{
595  PString buffer(substr(0, size() - nbCharToRemove));
596  return buffer;
597  }
598  }else{
599  return *this;
600  }
601 }

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 751 of file PString.cpp.

751  {
752  if(size() == 0lu || strCharToEscape.size() == 0lu || escapeSeq.size() == 0lu){return *this;}
753  const PString & src = *this;
754  std::string out("");
755  for(size_t i(0lu); i < src.size(); ++i){
756  char ch = src[i];
757  if(strCharToEscape.find(ch)){
758  out += escapeSeq;
759  }
760  out += ch;
761  }
762  return out;
763 }

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 418 of file PString.cpp.

418  {
419  PString::const_iterator it = begin();
420  while(it != end()){
421  if(*it == ch) return true;
422  ++it;
423  }
424  return false;
425 }

Referenced by eraseFirstChar(), eraseLastChar(), escapeStr(), find(), PPath::getExtension(), PPath::getParentDirectory(), keepChar(), replaceChar(), 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 431 of file PString.cpp.

431  {
432  if(size() == 0lu || listChar.size() == 0lu){return false;}
433  bool foundChar = false;
434  long unsigned int i(0lu), size(listChar.size());
435  while(!foundChar && i < size){
436  foundChar = find(listChar[i]);
437  ++i;
438  }
439  return foundChar;
440 }

References find().

+ Here is the call graph for this function:

◆ findPatternIndex()

size_t PString::findPatternIndex ( const PString pattern,
size_t  offset = 0lu 
) const

Get the index of the first character of the given pattern.

Parameters
pattern: pattern to be searched
offset: offset where to start searching the pattern (0 by default)
Returns
index of the first character of the pattern, or size of the PString if the pattern wasn't found

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() < offset + sizePatern){return size();}
208 
209  size_t sizeSrc(src.size());
210  size_t beginTest(0lu), nbMatch(0lu);
211  for(size_t i(offset); 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  return beginTest; //on a trouver le motif pattern, donc on le remplace par le motif replaceStr
219  }
220  }else{ //si le caractère i n'est pas le même caractère que nbMatch
221  if(nbMatch != 0lu){ //si on avais déjà tester des caractères avant
222  i = beginTest; //On revient là où l'on avait fait le premier test
223  }
224  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
225  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
226  }
227  }
228  return sizeSrc;
229 }

Referenced by getBetweenDelimiter().

+ Here is the caller 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 721 of file PString.cpp.

721  {
722  if(size() == 0lu){return *this;}
723  const PString & str = *this;
724  std::string strOut(str);
725  char currentChar = strOut[0lu];
726  if(phoenix_isCharUpperCase(currentChar)){
727  strOut[0lu] = currentChar + (char)32;
728  }
729  return strOut;
730 }
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 735 of file PString.cpp.

735  {
736  if(size() == 0lu){return *this;}
737  const PString & str = *this;
738  std::string strOut(str);
739  char currentChar = strOut[0lu];
740  if(phoenix_isCharLowerCase(currentChar)){
741  strOut[0lu] = currentChar - (char)32;
742  }
743  return strOut;
744 }
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 345 of file PString.cpp.

345  {
346  return replace("{}", arg, 1lu);
347 }
PString replace(const PString &pattern, const PString &replaceStr) const
Replace a PString into an other PString.
Definition: PString.cpp:251

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:

◆ getBetweenDelimiter()

PString PString::getBetweenDelimiter ( const PString beginPattern,
const PString endPattern 
) const

Get the PString between delimiter.

Parameters
beginPattern: pattern before the PString we want to get
endPattern: pattern after the PString we want to get
Returns
PString between beginPattern and endPattern or empty string if one of them is not found

Definition at line 236 of file PString.cpp.

236  {
237  size_t indexBeginPattern(findPatternIndex(beginPattern) + beginPattern.size());
238  size_t indexEndPattern(findPatternIndex(endPattern, indexBeginPattern));
239  if(indexBeginPattern != size() && indexEndPattern != size()){
240  return substr(indexBeginPattern, indexEndPattern - indexBeginPattern);
241  }else{
242  return "";
243  }
244 }
size_t findPatternIndex(const PString &pattern, size_t offset=0lu) const
Get the index of the first character of the given pattern.
Definition: PString.cpp:204

References findPatternIndex().

+ Here is the call 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 461 of file PString.cpp.

461  {
462  PString out("");
463  const PString & str1(*this);
464  PString::const_iterator it = str1.begin();
465  PString::const_iterator it2 = other.begin();
466  while(it != str1.end() && it2 != other.end()){
467  if(*it == *it2){
468  out += *it;
469  }else{
470  break;
471  }
472  it++;
473  it2++;
474  }
475  return out;
476 }

◆ initialisationPString()

void PString::initialisationPString ( )
private

Initialisation function of the class PString.

Definition at line 802 of file PString.cpp.

802  {
803 
804 }

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 630 of file PString.cpp.

630  {
631  if(size() == 0lu){return false;}
632  const PString & str = *this;
633  bool isLower(true);
634  size_t i(0lu);
635  while(i < str.size() && isLower){
636  isLower = phoenix_isCharLowerCase(str[i]);
637  ++i;
638  }
639  return isLower;
640 }

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 645 of file PString.cpp.

645  {
646  if(size() == 0lu){return false;}
647  const PString & str = *this;
648  bool isNumber(true);
649  size_t i(0lu);
650  while(i < str.size() && isNumber){
651  isNumber = phoenix_isCharNumber(str[i]);
652  ++i;
653  }
654  return isNumber;
655 }
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:645

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 353 of file PString.cpp.

353  {
354  const PString & src = *this;
355  if(src.size() < beginStr.size()) return false;
356  std::string::const_iterator it = src.begin();
357  std::string::const_iterator it2 = beginStr.begin();
358  while(it != src.end() && it2 != beginStr.end()){
359  if(*it != *it2){ return false;}
360  it++;
361  it2++;
362  }
363  return true;
364 }

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 615 of file PString.cpp.

615  {
616  if(size() == 0lu){return false;}
617  const PString & str = *this;
618  bool isUpper(true);
619  size_t i(0lu);
620  while(i < str.size() && isUpper){
621  isUpper = phoenix_isCharUpperCase(str[i]);
622  ++i;
623  }
624  return isUpper;
625 }

References phoenix_isCharUpperCase().

+ Here is the call graph for this function:

◆ keepChar()

PString PString::keepChar ( const PString listChar) const

Keep only the characters in the given listChar.

Parameters
listChar: list of characters to be kept
Returns
PString which contains only characters in listChar

Definition at line 446 of file PString.cpp.

446  {
447  if(listChar.size() == 0lu){return "";}
448  PString out;
449  for(PString::const_iterator it = begin(); it != end(); ++it){
450  if(listChar.find(*it)){
451  out += *it;
452  }
453  }
454  return out;
455 }

References find().

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

526  {
527  PString out(""), comma("");;
528  for(std::vector<PString>::const_iterator it(vecStr.begin()); it != vecStr.end(); ++it){
529  out += comma + (*it);
530  comma = separator;
531  }
532  *this = out;
533  return *this;
534 }

◆ 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 251 of file PString.cpp.

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

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

+ 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 290 of file PString.cpp.

290  {
291  size_t sizePatern(pattern.size());
292  const PString & src = *this;
293  if(sizePatern == 0lu || src.size() == 0lu || maxNbReplace == 0lu) return *this;
294  PString out(""); //on évite les petits désagréments
295  size_t sizeSrc(src.size());
296  size_t beginTest(0lu), nbMatch(0lu), nbReplace(0lu);
297  for(size_t i(0lu); i < sizeSrc; ++i){
298  if(src[i] == pattern[nbMatch] && nbReplace < maxNbReplace){ //si le caractère i est le même que le caractère nbMatch
299  if(nbMatch == 0lu){ //c'est le premier qu'on teste
300  beginTest = i; //il faut donc se rappeler où on a commencer à faire le teste
301  }
302  ++nbMatch; //la prochaîne fois on testera le caractère suivant
303  if(nbMatch == sizePatern){ //dans ce cas, on a tout testé et tout les caractères correspondent, donc on sauvegarde
304  out += replaceStr; //on a trouver le motif pattern, donc on le remplace par le motif replaceStr
305  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
306  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
307  ++nbReplace;
308  }
309  }else{ //si le caractère i n'est pas le même caractère que nbMatch
310  if(nbMatch == 0lu){ //si on n'en avait pas trouver de bon avant
311  out += src[i]; //on ne change rien à ce caractère
312  }else{ //si on avais déjà tester des caractères avant
313  out += src[beginTest];
314  i = beginTest;
315  }
316  beginTest = 0lu; //on remet le début des tests à 0 (pour évité les dépassements, on ne sait jamais)
317  nbMatch = 0lu; //on remet ne nombre des tests à 0, comme on n'a pas trouver de nouveau le motif
318  }
319  }
320  //We are potentially at the end of the source, so no more test
321  return out;
322 }

◆ 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 329 of file PString.cpp.

329  {
330  PString out;
331  for(PString::const_iterator it(begin()); it != end(); ++it){
332  if(vecChar.find(*it)){
333  out += replaceStr;
334  }else{
335  out += *it;
336  }
337  }
338  return out;
339 }

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 482 of file PString.cpp.

482  {
483  std::vector<PString> vec;
484  PString buffer = "";
485  for(PString::const_iterator it = begin(); it != end(); ++it){
486  if(*it != separator){
487  buffer += *it;
488  }else{
489  vec.push_back(buffer);
490  buffer = "";
491  }
492  }
493  if(buffer != ""){vec.push_back(buffer);}
494  return vec;
495 }

Referenced by checkResultSeparator(), PPath::createDirectory(), 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 501 of file PString.cpp.

501  {
502  std::vector<PString> vec;
503  if(size() != 0lu && vecSeparator.size() != 0lu){
504  PString buffer("");
505  for(PString::const_iterator it(begin()); it != end(); ++it){
506  if(!vecSeparator.find(*it)){
507  buffer += *it;
508  }else{
509  if(buffer != ""){
510  vec.push_back(buffer);
511  buffer = "";
512  }
513  }
514  }
515  if(buffer != "") vec.push_back(buffer);
516  }
517  return vec;
518 }

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 660 of file PString.cpp.

660  {
661  if(size() == 0lu){return *this;}
662  const PString & str = *this;
663  std::string strOut("");
664  char currentChar;
665  long unsigned int size(str.size());
666  for(long unsigned int i(0lu); i < size; ++i){
667  currentChar = str[i];
668  if(phoenix_isCharUpperCase(currentChar)){
669  strOut += currentChar + (char)32;
670  }else{
671  strOut += currentChar;
672  }
673  }
674  return strOut;
675 }

References phoenix_isCharUpperCase().

+ Here is the call 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 680 of file PString.cpp.

680  {
681  if(size() == 0lu){return *this;}
682  const PString & str = *this;
683  std::string strOut("");
684  char currentChar;
685  long unsigned int size(str.size());
686  for(long unsigned int i(0lu); i < size; ++i){
687  currentChar = str[i];
688  if(phoenix_isCharUpperCase(currentChar)){
689  strOut += currentChar + (char)32;
690  }else{
691  if(currentChar == ' '){strOut += '_';}
692  else{strOut += currentChar;}
693  }
694  }
695  return strOut;
696 }

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 701 of file PString.cpp.

701  {
702  if(size() == 0lu){return *this;}
703  const PString & str = *this;
704  std::string strOut("");
705  char currentChar;
706  long unsigned int size(str.size());
707  for(long unsigned int i(0); i < size; ++i){
708  currentChar = str[i];
709  if(phoenix_isCharLowerCase(currentChar)){
710  strOut += currentChar - (char)32;
711  }else{
712  strOut += currentChar;
713  }
714  }
715  return strOut;
716 }

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: