JST: JSON tools  1.0.0
JSON tools dynamic library for reading, manipulating and writing JSON tree
JST_string.c
Go to the documentation of this file.
1 #include "JST_string.h"
2 
3 #include <stdlib.h>
4 #include <string.h>
5 
6 const JST_String JST_String_Zero = { .length = 0, .limit = 0, .buffer = NULL };
7 
8 bool JST_String_append_char( JST_String * string, char c ) {
9  if( string == NULL ) {
10  return false;
11  }
12  if( string->length >= string->limit ) {
13  if( string->limit == 0 ) {
14  string->limit = 40;
15  }
16  string->limit *= 2;
17  string->buffer = realloc( string->buffer, string->limit );
18  if( string->buffer == NULL ) {
19  return false;
20  }
21  }
22  string->buffer[string->length++] = c;
23  return true;
24 }
25 
26 bool JST_String_append_string( JST_String * string, const char * s ) {
27  if(( string == NULL )||( s == NULL )) {
28  return false;
29  }
30  unsigned lb = string->length;
31  size_t count = strlen( s );
32  for( unsigned i = 0; ( i < count )&& JST_String_append_char( string, s[i] ); ++i );
33  return string->length == lb + count;
34 }
35 
36 bool JST_String_spaces( JST_String * string, unsigned count ) {
37  if( string == NULL ) {
38  return false;
39  }
40  unsigned lb = string->length;
41  for( unsigned i = 0; ( i < count )&& JST_String_append_char( string, ' ' ); ++i );
42  return string->length == lb + count;
43 }
44 
46  if( string == NULL ) {
47  return JST_ERR_NULL_ARGUMENT;
48  }
49  if( string->buffer ) {
50  free( string->buffer );
51  }
52  string->buffer = NULL;
53  string->length = 0;
54  string->limit = 0;
55  return JST_ERR_NONE;
56 }
unsigned length
Definition: JST_string.h:6
bool JST_String_append_string(JST_String *string, const char *s)
Definition: JST_string.c:26
char * buffer
Definition: JST_string.h:8
unsigned limit
Definition: JST_string.h:7
JST_Error
When things goes wrong, an error information is given.
Definition: jstools.h:108
bool JST_String_append_char(JST_String *string, char c)
Definition: JST_string.c:8
JST_Error JST_String_delete(JST_String *string)
Definition: JST_string.c:45
bool JST_String_spaces(JST_String *string, unsigned count)
Definition: JST_string.c:36
Function misused.
Definition: jstools.h:110
const JST_String JST_String_Zero
Definition: JST_string.c:6