Coconut Framework  beta
CNString.h
Go to the documentation of this file.
1 
8 #ifndef CNSTRING_H
9 #define CNSTRING_H
10 
11 #include "CNObject.h"
12 #include "CNList.h"
13 #include <stdint.h>
14 #include <string.h>
15 #include <stdio.h>
16 
19 {
22 } ;
23 
27 struct CNString
28 {
32  size_t length ;
34  uint64_t hashValue ;
37 } ;
38 
40 typedef void (*CNVisitStringElementFuncRef)(size_t elmlen, const unsigned char * elmstr, void * info) ;
41 
52 struct CNString *
53 CNAllocateStringWithCString(size_t len, const unsigned char * str, struct CNResource * resource) ;
54 
61 struct CNString *
62 CNAllocateEmptyString(struct CNResource * resource) ;
63 
68 static inline void
69 CNRetainString(struct CNString * dst)
70 {
71  CNRetainObject(&(dst->superClass)) ;
72 }
73 
78 static inline void
80 {
81  CNReleaseObject(&(dst->superClass)) ;
82 }
83 
89 static inline size_t
90 CNLengthOfString(const struct CNString * src)
91 {
92  return src->length ;
93 }
94 
100 static inline uint64_t
101 CNHashValueOfString(const struct CNString * src)
102 {
103  return src->hashValue ;
104 }
105 
111 static inline struct CNObject *
113 {
114  return &(src->superClass) ;
115 }
116 
122 struct CNString *
123 CNCopyString(struct CNString * src) ;
124 
130 void
131 CNAppendStringToString(struct CNString * dst, struct CNString * src) ;
132 
139 void
140 CNAppendCStringToString(struct CNString * dst, size_t len, const unsigned char * src) ;
141 
148 static inline struct CNString *
149 CNAddStrings(struct CNString * src0, struct CNString * src1)
150 {
151  struct CNString * newstr = CNCopyString(src0) ;
152  CNAppendStringToString(newstr, src1) ;
153  return newstr ;
154 }
155 
163 void
164 CNMoveStringToString(struct CNString * dst, struct CNString * src) ;
165 
172 struct CNString *
173 CNPrintToString(struct CNResource * resource, const char * format, ...) ;
174 
183 void
184 CNPutStringToCString(unsigned char * dst, const struct CNString * src) ;
185 
191 void
192 CNPrintString(FILE * fp, const struct CNString * src) ;
193 
201 CNBoolean
202 CNIsSameStrings(const struct CNString * src0, const struct CNString * src1) ;
203 
212 CNBoolean
213 CNIsSameStringAndCString(const struct CNString * src0, size_t len1, const unsigned char * src1) ;
214 
221 void
222 CNVisitStringElements(const struct CNString * src, CNVisitStringElementFuncRef func, void * info) ;
223 
229 struct CNMemoryProfile
230 CNProfileOfString(const struct CNString * src) ;
231 
232 #endif /* CNSTRING_H */
static struct CNString * CNAddStrings(struct CNString *src0, struct CNString *src1)
Allocate added string.
Definition: CNString.h:149
static void CNRetainString(struct CNString *dst)
Retain CNString object.
Definition: CNString.h:69
static uint64_t CNHashValueOfString(const struct CNString *src)
Get hash value of source string.
Definition: CNString.h:101
struct CNString * CNAllocateEmptyString(struct CNResource *resource)
Allocate empty string.
List of pointers.
Definition: CNList.h:17
struct CNString * CNAllocateStringWithCString(size_t len, const unsigned char *str, struct CNResource *resource)
Allocate CNString object.
static size_t CNLengthOfString(const struct CNString *src)
Get length of the string.
Definition: CNString.h:90
Information to present memory profile.
Definition: CNMemoryProfile.h:16
CNBoolean CNIsSameStringAndCString(const struct CNString *src0, size_t len1, const unsigned char *src1)
Compare CNString and C-String.
Define CNList data structure.
Root object.
Definition: CNObject.h:38
static void CNReleaseString(struct CNString *dst)
Release CNString object.
Definition: CNString.h:79
CNBoolean CNIsSameStrings(const struct CNString *src0, const struct CNString *src1)
Compare CNStrings.
struct CNList elementList
List of CNStringElement.
Definition: CNString.h:36
struct CNObjectMethods superClass
Definition: CNString.h:21
Fixed size string class.
Definition: CNString.h:27
Define CNObject data structure.
void CNMoveStringToString(struct CNString *dst, struct CNString *src)
Move context of source string into destination.
struct CNString * CNCopyString(struct CNString *src)
Allocate the copy of string.
Methods for CNString.
Definition: CNString.h:18
void(* CNVisitStringElementFuncRef)(size_t elmlen, const unsigned char *elmstr, void *info)
Definition: CNString.h:40
struct CNMemoryProfile CNProfileOfString(const struct CNString *src)
Get memory profile of string.
struct CNString * CNPrintToString(struct CNResource *resource, const char *format,...)
Allocate string with printf format.
size_t length
Length of the string.
Definition: CNString.h:32
Methods for CNObject.
Definition: CNObject.h:29
void CNReleaseObject(struct CNObject *dst)
Release the object.
void CNAppendCStringToString(struct CNString *dst, size_t len, const unsigned char *src)
Append C-String to String.
static void CNRetainObject(struct CNObject *dst)
Retain the object.
Definition: CNObject.h:75
void CNAppendStringToString(struct CNString *dst, struct CNString *src)
Append context of source string into destination.
uint64_t hashValue
Hash value of the string.
Definition: CNString.h:34
struct CNObject superClass
Super class.
Definition: CNString.h:30
void CNPutStringToCString(unsigned char *dst, const struct CNString *src)
Put context of string into buffer.
unsigned int CNBoolean
Boolean type.
Definition: CNType.h:14
static struct CNObject * CNObjectOfString(struct CNString *src)
Get super class of CNString.
Definition: CNString.h:112
void CNVisitStringElements(const struct CNString *src, CNVisitStringElementFuncRef func, void *info)
Visit all elements in the string.
void CNPrintString(FILE *fp, const struct CNString *src)
Put context of string into file stream.