libcoap  4.3.0
str.h
Go to the documentation of this file.
1 /*
2  * str.h -- strings to be used in the CoAP library
3  *
4  * Copyright (C) 2010-2011 Olaf Bergmann <bergmann@tzi.org>
5  *
6  * SPDX-License-Identifier: BSD-2-Clause
7  *
8  * This file is part of the CoAP library libcoap. Please see README for terms
9  * of use.
10  */
11 
12 #ifndef COAP_STR_H_
13 #define COAP_STR_H_
14 
15 #include <string.h>
16 
17 
24 /*
25  * Note: string and binary use equivalent objects.
26  * string is likely to contain readable textual information, binary will not.
27  */
28 
32 typedef struct coap_string_t {
33  size_t length;
34  uint8_t *s;
36 
40 typedef struct coap_str_const_t {
41  size_t length;
42  const uint8_t *s;
44 
45 #define COAP_SET_STR(st,l,v) { (st)->length = (l), (st)->s = (v); }
46 
50 typedef struct coap_binary_t {
51  size_t length;
52  uint8_t *s;
54 
58 typedef struct coap_bin_const_t {
59  size_t length;
60  const uint8_t *s;
62 
73 coap_string_t *coap_new_string(size_t size);
74 
80 void coap_delete_string(coap_string_t *string);
81 
92 coap_str_const_t *coap_new_str_const(const uint8_t *data, size_t size);
93 
100 
111 coap_binary_t *coap_new_binary(size_t size);
112 
118 void coap_delete_binary(coap_binary_t *binary);
119 
133 coap_binary_t *coap_resize_binary(coap_binary_t *binary, size_t new_size);
134 
146 coap_bin_const_t *coap_new_bin_const(const uint8_t *data, size_t size);
147 
154 
155 #ifndef COAP_MAX_STR_CONST_FUNC
156 #define COAP_MAX_STR_CONST_FUNC 2
157 #endif /* COAP_MAX_STR_CONST_FUNC */
158 
172 coap_str_const_t *coap_make_str_const(const char *string);
173 
183 #define coap_string_equal(string1,string2) \
184  ((string1)->length == (string2)->length && ((string1)->length == 0 || \
185  ((string1)->s && (string2)->s && \
186  memcmp((string1)->s, (string2)->s, (string1)->length) == 0)))
187 
197 #define coap_binary_equal(binary1,binary2) \
198  ((binary1)->length == (binary2)->length && ((binary1)->length == 0 || \
199  ((binary1)->s && (binary2)->s && \
200  memcmp((binary1)->s, (binary2)->s, (binary1)->length) == 0)))
201 
204 #endif /* COAP_STR_H_ */
coap_string_t * coap_new_string(size_t size)
Returns a new string object with at least size+1 bytes storage allocated.
Definition: str.c:15
void coap_delete_bin_const(coap_bin_const_t *binary)
Deletes the given const binary data and releases any memory allocated.
Definition: str.c:104
void coap_delete_str_const(coap_str_const_t *string)
Deletes the given const string and releases any memory allocated.
Definition: str.c:53
struct coap_str_const_t coap_str_const_t
CoAP string data definition with const data.
void coap_delete_binary(coap_binary_t *binary)
Deletes the given coap_binary_t object and releases any memory allocated.
Definition: str.c:91
coap_bin_const_t * coap_new_bin_const(const uint8_t *data, size_t size)
Take the specified byte array (text) and create a coap_bin_const_t * Returns a new const binary objec...
Definition: str.c:95
struct coap_binary_t coap_binary_t
CoAP binary data definition.
coap_binary_t * coap_new_binary(size_t size)
Returns a new binary object with at least size bytes storage allocated.
Definition: str.c:67
coap_str_const_t * coap_new_str_const(const uint8_t *data, size_t size)
Returns a new const string object with at least size+1 bytes storage allocated, and the provided data...
Definition: str.c:44
struct coap_string_t coap_string_t
CoAP string data definition.
struct coap_bin_const_t coap_bin_const_t
CoAP binary data definition with const data.
void coap_delete_string(coap_string_t *string)
Deletes the given string and releases any memory allocated.
Definition: str.c:40
coap_binary_t * coap_resize_binary(coap_binary_t *binary, size_t new_size)
Resizes the given coap_binary_t object.
Definition: str.c:71
coap_str_const_t * coap_make_str_const(const char *string)
Take the specified byte array (text) and create a coap_str_const_t *.
Definition: str.c:57
CoAP binary data definition with const data.
Definition: str.h:58
size_t length
length of binary data
Definition: str.h:59
const uint8_t * s
read-only binary data
Definition: str.h:60
CoAP binary data definition.
Definition: str.h:50
size_t length
length of binary data
Definition: str.h:51
uint8_t * s
binary data
Definition: str.h:52
CoAP string data definition with const data.
Definition: str.h:40
const uint8_t * s
read-only string data
Definition: str.h:42
size_t length
length of string
Definition: str.h:41
CoAP string data definition.
Definition: str.h:32
uint8_t * s
string data
Definition: str.h:34
size_t length
length of string
Definition: str.h:33