Reference-counted immutable strings.  
More...
Go to the source code of this file.
 | 
| PurpleStringref *  | purple_stringref_new (const char *value) | 
|   | Creates an immutable reference-counted string object.  
  | 
|   | 
| PurpleStringref *  | purple_stringref_new_noref (const char *value) | 
|   | Creates an immutable reference-counted string object.  
  | 
|   | 
| PurpleStringref *  | purple_stringref_printf (const char *format,...) | 
|   | Creates an immutable reference-counted string object from a printf format specification and arguments.  
  | 
|   | 
| PurpleStringref *  | purple_stringref_ref (PurpleStringref *stringref) | 
|   | Increase the reference count of the given stringref.  
  | 
|   | 
| void  | purple_stringref_unref (PurpleStringref *stringref) | 
|   | Decrease the reference count of the given stringref.  
  | 
|   | 
| const char *  | purple_stringref_value (const PurpleStringref *stringref) | 
|   | Retrieve the value of a stringref.  
  | 
|   | 
| int  | purple_stringref_cmp (const PurpleStringref *s1, const PurpleStringref *s2) | 
|   | Compare two stringrefs for string equality.  
  | 
|   | 
| size_t  | purple_stringref_len (const PurpleStringref *stringref) | 
|   | Find the length of the string inside a stringref.  
  | 
|   | 
Reference-counted immutable strings. 
Definition in file stringref.h.
 
◆ PurpleStringref
      
        
          | typedef struct _PurpleStringref PurpleStringref | 
        
      
 
 
◆ purple_stringref_cmp()
      
        
          | int purple_stringref_cmp  | 
          ( | 
          const PurpleStringref *  | 
          s1,  | 
        
        
           | 
           | 
          const PurpleStringref *  | 
          s2  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Compare two stringrefs for string equality. 
This returns the same value as strcmp would, where <0 indicates that s1 is "less than" s2 in the ASCII lexicography, 0 indicates equality, etc.
- Parameters
 - 
  
    | s1 | The reference string. | 
    | s2 | The string to compare against the reference. | 
  
   
- Returns
 - An ordering indication on s1 and s2. 
 
 
 
◆ purple_stringref_len()
      
        
          | size_t purple_stringref_len  | 
          ( | 
          const PurpleStringref *  | 
          stringref | ) | 
           | 
        
      
 
Find the length of the string inside a stringref. 
- Parameters
 - 
  
    | stringref | The string in whose length we are interested. | 
  
   
- Returns
 - The length of the string in stringref 
 
 
 
◆ purple_stringref_new()
      
        
          | PurpleStringref * purple_stringref_new  | 
          ( | 
          const char *  | 
          value | ) | 
           | 
        
      
 
Creates an immutable reference-counted string object. 
The newly created object will have a reference count of 1.
- Parameters
 - 
  
    | value | This will be the value of the string; it will be duplicated. | 
  
   
- Returns
 - A newly allocated string reference object with a refcount of 1. 
 
 
 
◆ purple_stringref_new_noref()
      
        
          | PurpleStringref * purple_stringref_new_noref  | 
          ( | 
          const char *  | 
          value | ) | 
           | 
        
      
 
Creates an immutable reference-counted string object. 
The newly created object will have a reference count of zero, and if it is not referenced before the next iteration of the mainloop it will be freed at that time.
- Parameters
 - 
  
    | value | This will be the value of the string; it will be duplicated. | 
  
   
- Returns
 - A newly allocated string reference object with a refcount of zero. 
 
 
 
◆ purple_stringref_printf()
      
        
          | PurpleStringref * purple_stringref_printf  | 
          ( | 
          const char *  | 
          format,  | 
        
        
           | 
           | 
            | 
          ...  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Creates an immutable reference-counted string object from a printf format specification and arguments. 
The created object will have a reference count of 1.
- Parameters
 - 
  
    | format | A printf-style format specification. | 
  
   
- Returns
 - A newly allocated string reference object with a refcount of 1. 
 
 
 
◆ purple_stringref_ref()
      
        
          | PurpleStringref * purple_stringref_ref  | 
          ( | 
          PurpleStringref *  | 
          stringref | ) | 
           | 
        
      
 
Increase the reference count of the given stringref. 
- Parameters
 - 
  
    | stringref | String to be referenced. | 
  
   
- Returns
 - A pointer to the referenced string. 
 
 
 
◆ purple_stringref_unref()
      
        
          | void purple_stringref_unref  | 
          ( | 
          PurpleStringref *  | 
          stringref | ) | 
           | 
        
      
 
Decrease the reference count of the given stringref. 
If this reference count reaches zero, the stringref will be freed; thus you MUST NOT use this string after dereferencing it.
- Parameters
 - 
  
    | stringref | String to be dereferenced.  | 
  
   
 
 
◆ purple_stringref_value()
      
        
          | const char * purple_stringref_value  | 
          ( | 
          const PurpleStringref *  | 
          stringref | ) | 
           | 
        
      
 
Retrieve the value of a stringref. 
- Note
 - This value should not be cached or stored in a local variable. While there is nothing inherently incorrect about doing so, it is easy to forget that the cached value is in fact a reference-counted object and accidentally use it after dereferencing. This is more problematic for a reference- counted object than a heap-allocated object, as it may seem to be valid or invalid nondeterministically based on how many other references to it exist.
 
- Parameters
 - 
  
    | stringref | String reference from which to retrieve the value. | 
  
   
- Returns
 - The contents of the string reference.