SimGrid 3.7.1
Scalable simulation of distributed systems
Typedefs | Functions
String related functions
Grounding features

String manipulation functions. More...

Typedefs

typedef char * xbt_string_t
 Classical alias to (char*)

Functions

void xbt_str_rtrim (char *s, const char *char_list)
 Strip whitespace (or other characters) from the end of a string.
void xbt_str_ltrim (char *s, const char *char_list)
 Strip whitespace (or other characters) from the beginning of a string.
void xbt_str_trim (char *s, const char *char_list)
 Strip whitespace (or other characters) from the end and the begining of a string.
xbt_dynar_t xbt_str_split (const char *s, const char *sep)
 Splits a string into a dynar of strings.
xbt_dynar_t xbt_str_split_quoted (const char *s)
 Splits a string into a dynar of strings, taking quotes into account.
xbt_dynar_t xbt_str_split_quoted_in_place (char *s)
 Just like xbt_str_split_quoted (Splits a string into a dynar of strings), but without memory allocation.
xbt_dynar_t xbt_str_split_str (const char *s, const char *sep)
 This functions splits a string after using another string as separator For example A!!B!!C splitted after !! will return the dynar {A,B,C}.
char * xbt_str_join (xbt_dynar_t dynar, const char *sep)
 Join a set of strings as a single string.
char * xbt_str_join_array (const char *const *strs, const char *sep)
 Join a set of strings as a single string.
void xbt_str_subst (char *str, char from, char to, int amount)
 Substitutes a char for another in a string.
char * xbt_str_varsubst (const char *str, xbt_dict_t patterns)
 Replaces a set of variables by their values.
void xbt_str_strip_spaces (char *)
 Replace double whitespaces (but no other characters) from the string.
char * xbt_str_diff (const char *a, const char *b)
 Compute the unified diff of two strings.
char * xbt_str_from_file (FILE *file)
 creates a new string containing what can be read on a fd

Detailed Description

String manipulation functions.

This module defines several string related functions. We redefine some quite classical functions on the platforms were they are not nativaly defined (such as getline() or asprintf()), while some other are a bit more exotic.


Typedef Documentation

typedef char* xbt_string_t

Classical alias to (char*)

This of almost no use, beside cosmetics and the XBT datadesc parsing macro (see Automatic parsing of data descriptions).


Function Documentation

void xbt_str_rtrim ( char *  s,
const char *  char_list 
)

Strip whitespace (or other characters) from the end of a string.

Strips the whitespaces from the end of s. By default (when char_list=NULL), these characters get stripped:

  • " " (ASCII 32 (0x20)) space.
  • "\t" (ASCII 9 (0x09)) tab.
  • "\n" (ASCII 10 (0x0A)) line feed.
  • "\r" (ASCII 13 (0x0D)) carriage return.
  • "\0" (ASCII 0 (0x00)) NULL.
  • "\x0B" (ASCII 11 (0x0B)) vertical tab.
Parameters:
sThe string to strip. Modified in place.
char_listA string which contains the characters you want to strip.
void xbt_str_ltrim ( char *  s,
const char *  char_list 
)

Strip whitespace (or other characters) from the beginning of a string.

Strips the whitespaces from the begining of s. By default (when char_list=NULL), these characters get stripped:

  • " " (ASCII 32 (0x20)) space.
  • "\t" (ASCII 9 (0x09)) tab.
  • "\n" (ASCII 10 (0x0A)) line feed.
  • "\r" (ASCII 13 (0x0D)) carriage return.
  • "\0" (ASCII 0 (0x00)) NULL.
  • "\x0B" (ASCII 11 (0x0B)) vertical tab.
Parameters:
sThe string to strip. Modified in place.
char_listA string which contains the characters you want to strip.
void xbt_str_trim ( char *  s,
const char *  char_list 
)

Strip whitespace (or other characters) from the end and the begining of a string.

Strips the whitespaces from both the beginning and the end of s. By default (when char_list=NULL), these characters get stripped:

  • " " (ASCII 32 (0x20)) space.
  • "\t" (ASCII 9 (0x09)) tab.
  • "\n" (ASCII 10 (0x0A)) line feed.
  • "\r" (ASCII 13 (0x0D)) carriage return.
  • "\0" (ASCII 0 (0x00)) NULL.
  • "\x0B" (ASCII 11 (0x0B)) vertical tab.
Parameters:
sThe string to strip.
char_listA string which contains the characters you want to strip.
xbt_dynar_t xbt_str_split ( const char *  s,
const char *  sep 
)

Splits a string into a dynar of strings.

Parameters:
s,:the string to split
sep,:a string of all chars to consider as separator.

By default (with sep=NULL), these characters are used as separator:

  • " " (ASCII 32 (0x20)) space.
  • "\t" (ASCII 9 (0x09)) tab.
  • "\n" (ASCII 10 (0x0A)) line feed.
  • "\r" (ASCII 13 (0x0D)) carriage return.
  • "\0" (ASCII 0 (0x00)) NULL.
  • "\x0B" (ASCII 11 (0x0B)) vertical tab.
xbt_dynar_t xbt_str_split_quoted ( const char *  s)

Splits a string into a dynar of strings, taking quotes into account.

It basically does the same argument separation than the shell, where white spaces can be escaped and where arguments are never split within a quote group. Several subsequent spaces are ignored (unless within quotes, of course). You may want to trim the input string, if you want to avoid empty entries

xbt_dynar_t xbt_str_split_quoted_in_place ( char *  s)

Just like xbt_str_split_quoted (Splits a string into a dynar of strings), but without memory allocation.

The string passed as argument must be writable (not const) The elements of the dynar are just parts of the string passed as argument.

To free the structure constructed by this function, free the first element and free the dynar:

free(xbt_dynar_get_ptr(dynar,0)); xbt_dynar_free(&dynar);

xbt_dynar_t xbt_str_split_str ( const char *  s,
const char *  sep 
)

This functions splits a string after using another string as separator For example A!!B!!C splitted after !! will return the dynar {A,B,C}.

Returns:
An array of dynars containing the string tokens
char* xbt_str_join_array ( const char *const *  strs,
const char *  sep 
)

Join a set of strings as a single string.

The parameter must be a NULL-terminated array of chars, just like xbt_dynar_to_array() produces

void xbt_str_subst ( char *  str,
char  from,
char  to,
int  occurence 
)

Substitutes a char for another in a string.

Parameters:
strthe string to modify
fromchar to search
tochar to put instead
occurencenumber of changes to do (=0 means all)
char* xbt_str_varsubst ( const char *  str,
xbt_dict_t  patterns 
)

Replaces a set of variables by their values.

Parameters:
strThe input of the replacement process
patternsThe changes to apply
Returns:
The string modified

Both '$toto' and '${toto}' are valid (and the two writing are equivalent).

If the variable name contains spaces, use the brace version (ie, ${toto tutu})

You can provide a default value to use if the variable is not set in the dict by using '${var:=default}' or '${var:-default}'. These two forms are equivalent, even if they shouldn't to respect the shell standard (:= form should set the value in the dict, but does not) (BUG).

void xbt_str_strip_spaces ( char *  s)

Replace double whitespaces (but no other characters) from the string.

The function modifies the string so that each time that several spaces appear, they are replaced by a single space. It will only do so for spaces (ASCII 32, 0x20).

Parameters:
sThe string to strip. Modified in place.
char* xbt_str_from_file ( FILE *  file)

creates a new string containing what can be read on a fd


Back to the main Simgrid Documentation page The version of SimGrid documented here is v3.7.1.
Documentation of other versions can be found in their respective archive files (directory doc/html).
Generated by doxygen