Lines Matching refs:state

43 static bool encode_header_byte(zcbor_state_t *state,  in encode_header_byte()  argument
51 *(state->payload_mut) = (uint8_t)((major_type << 5) | (additional & 0x1F)); in encode_header_byte()
52 zcbor_trace(state, "value_encode"); in encode_header_byte()
53 state->payload_mut++; in encode_header_byte()
60 static bool value_encode_len(zcbor_state_t *state, zcbor_major_type_t major_type, in value_encode_len() argument
65 if ((state->payload + 1 + result_len) > state->payload_end) { in value_encode_len()
69 if (!encode_header_byte(state, major_type, in value_encode_len()
75 memcpy(state->payload_mut, u8_result, result_len); in value_encode_len()
76 state->payload_mut += result_len; in value_encode_len()
79 *(state->payload_mut++) = u8_result[result_len - 1]; in value_encode_len()
83 state->elem_count++; in value_encode_len()
88 static bool value_encode(zcbor_state_t *state, zcbor_major_type_t major_type, in value_encode() argument
100 return value_encode_len(state, major_type, result, result_len); in value_encode()
104 bool zcbor_int_encode(zcbor_state_t *state, const void *input_int, size_t int_size) argument
132 if (!value_encode(state, major_type, input, int_size)) {
140 bool zcbor_uint_encode(zcbor_state_t *state, const void *input_uint, size_t uint_size) argument
142 if (!value_encode(state, ZCBOR_MAJOR_TYPE_PINT, input_uint, uint_size)) {
150 bool zcbor_int32_encode(zcbor_state_t *state, const int32_t *input) argument
152 return zcbor_int_encode(state, input, sizeof(*input));
156 bool zcbor_int64_encode(zcbor_state_t *state, const int64_t *input) argument
158 return zcbor_int_encode(state, input, sizeof(*input));
162 bool zcbor_uint32_encode(zcbor_state_t *state, const uint32_t *input) argument
164 return zcbor_uint_encode(state, input, sizeof(*input));
168 bool zcbor_uint64_encode(zcbor_state_t *state, const uint64_t *input) argument
170 return zcbor_uint_encode(state, input, sizeof(*input));
174 bool zcbor_int32_put(zcbor_state_t *state, int32_t input) argument
176 return zcbor_int_encode(state, &input, sizeof(input));
180 bool zcbor_int64_put(zcbor_state_t *state, int64_t input) argument
182 return zcbor_int_encode(state, &input, sizeof(input));
186 bool zcbor_uint32_put(zcbor_state_t *state, uint32_t input) argument
188 return zcbor_uint_encode(state, &input, sizeof(input));
192 bool zcbor_uint64_put(zcbor_state_t *state, uint64_t input) argument
194 return zcbor_uint_encode(state, &input, sizeof(input));
199 bool zcbor_size_put(zcbor_state_t *state, size_t input) argument
201 return zcbor_uint_encode(state, &input, sizeof(input));
205 bool zcbor_size_encode(zcbor_state_t *state, const size_t *input) argument
207 return zcbor_uint_encode(state, input, sizeof(*input));
211 static bool str_start_encode(zcbor_state_t *state, argument
215 + input->len + (size_t)state->payload)
216 > (size_t)state->payload_end)) {
219 if (!value_encode(state, major_type, &input->len, sizeof(input->len))) {
227 bool zcbor_bstr_start_encode(zcbor_state_t *state) argument
229 if (!zcbor_new_backup(state, 0)) {
233 uint64_t max_len = zcbor_remaining_str_len(state);
236 if (!value_encode(state, ZCBOR_MAJOR_TYPE_BSTR, &max_len, sizeof(max_len))) {
243 bool zcbor_bstr_end_encode(zcbor_state_t *state, struct zcbor_string *result) argument
245 const uint8_t *payload = state->payload;
255 if (!zcbor_process_backup(state, ZCBOR_FLAG_RESTORE | ZCBOR_FLAG_CONSUME, 0xFFFFFFFF)) {
259 result->value = state->payload + zcbor_header_len(zcbor_remaining_str_len(state));
263 if (!zcbor_bstr_encode(state, result)) {
270 static bool str_encode(zcbor_state_t *state, argument
274 if (input->len > (size_t)(state->payload_end - state->payload)) {
277 if (!str_start_encode(state, input, major_type)) {
280 if (state->payload_mut != input->value) {
283 memmove(state->payload_mut, input->value, input->len);
285 state->payload += input->len;
290 bool zcbor_bstr_encode(zcbor_state_t *state, const struct zcbor_string *input) argument
292 return str_encode(state, input, ZCBOR_MAJOR_TYPE_BSTR);
296 bool zcbor_tstr_encode(zcbor_state_t *state, const struct zcbor_string *input) argument
298 return str_encode(state, input, ZCBOR_MAJOR_TYPE_TSTR);
302 bool zcbor_bstr_encode_ptr(zcbor_state_t *state, const char *str, size_t len) argument
306 return zcbor_bstr_encode(state, &zs);
310 bool zcbor_tstr_encode_ptr(zcbor_state_t *state, const char *str, size_t len) argument
314 return zcbor_tstr_encode(state, &zs);
318 bool zcbor_bstr_put_term(zcbor_state_t *state, char const *str, size_t maxlen) argument
320 return zcbor_bstr_encode_ptr(state, str, strnlen(str, maxlen));
324 bool zcbor_tstr_put_term(zcbor_state_t *state, char const *str, size_t maxlen) argument
326 return zcbor_tstr_encode_ptr(state, str, strnlen(str, maxlen));
330 static bool list_map_start_encode(zcbor_state_t *state, size_t max_num, argument
334 if (!zcbor_new_backup(state, 0)) {
339 if (!value_encode(state, major_type, &max_num, sizeof(max_num))) {
342 state->elem_count--; /* Because of dummy header. */
346 if (!encode_header_byte(state, major_type, ZCBOR_VALUE_IS_INDEFINITE_LENGTH)) {
354 bool zcbor_list_start_encode(zcbor_state_t *state, size_t max_num) argument
356 return list_map_start_encode(state, max_num, ZCBOR_MAJOR_TYPE_LIST);
360 bool zcbor_map_start_encode(zcbor_state_t *state, size_t max_num) argument
362 return list_map_start_encode(state, max_num, ZCBOR_MAJOR_TYPE_MAP);
366 static bool list_map_end_encode(zcbor_state_t *state, size_t max_num, argument
371 state->elem_count
372 : (state->elem_count / 2));
374 const uint8_t *payload = state->payload;
379 if (!zcbor_process_backup(state, ZCBOR_FLAG_RESTORE | ZCBOR_FLAG_CONSUME, 0xFFFFFFFF)) {
395 if (!(value_encode(state, major_type, &list_count, sizeof(list_count)))) {
400 const uint8_t *start = state->payload + max_header_len - header_len;
403 memmove(state->payload_mut, start, body_size);
405 state->payload += body_size;
408 state->payload = payload;
413 if (!encode_header_byte(state, ZCBOR_MAJOR_TYPE_SIMPLE, ZCBOR_VALUE_IS_INDEFINITE_LENGTH)) {
421 bool zcbor_list_end_encode(zcbor_state_t *state, size_t max_num) argument
423 return list_map_end_encode(state, max_num, ZCBOR_MAJOR_TYPE_LIST);
427 bool zcbor_map_end_encode(zcbor_state_t *state, size_t max_num) argument
429 return list_map_end_encode(state, max_num, ZCBOR_MAJOR_TYPE_MAP);
433 bool zcbor_list_map_end_force_encode(zcbor_state_t *state) argument
436 if (!zcbor_process_backup(state, ZCBOR_FLAG_RESTORE | ZCBOR_FLAG_CONSUME,
441 (void)state;
446 bool zcbor_simple_encode(zcbor_state_t *state, uint8_t *input) argument
452 if (!value_encode(state, ZCBOR_MAJOR_TYPE_SIMPLE, input, sizeof(*input))) {
460 bool zcbor_simple_put(zcbor_state_t *state, uint8_t input) argument
462 return zcbor_simple_encode(state, &input);
466 bool zcbor_nil_put(zcbor_state_t *state, const void *unused) argument
469 return zcbor_simple_put(state, 22);
473 bool zcbor_undefined_put(zcbor_state_t *state, const void *unused) argument
476 return zcbor_simple_put(state, 23);
480 bool zcbor_bool_encode(zcbor_state_t *state, const bool *input) argument
482 return zcbor_bool_put(state, *input);
486 bool zcbor_bool_put(zcbor_state_t *state, bool input) argument
488 return zcbor_simple_put(state, (!!input + ZCBOR_BOOL_TO_SIMPLE));
492 bool zcbor_float64_encode(zcbor_state_t *state, const double *input) argument
494 if (!value_encode_len(state, ZCBOR_MAJOR_TYPE_SIMPLE, input,
503 bool zcbor_float64_put(zcbor_state_t *state, double input) argument
505 return zcbor_float64_encode(state, &input);
509 bool zcbor_float32_encode(zcbor_state_t *state, const float *input) argument
511 if (!value_encode_len(state, ZCBOR_MAJOR_TYPE_SIMPLE, input,
520 bool zcbor_float32_put(zcbor_state_t *state, float input) argument
522 return zcbor_float32_encode(state, &input);
526 bool zcbor_float16_encode(zcbor_state_t *state, const float *input) argument
528 return zcbor_float16_put(state, *input);
532 bool zcbor_float16_put(zcbor_state_t *state, float input) argument
534 return zcbor_float16_bytes_put(state, zcbor_float32_to_16(input));
538 bool zcbor_float16_bytes_encode(zcbor_state_t *state, const uint16_t *input) argument
540 if (!value_encode_len(state, ZCBOR_MAJOR_TYPE_SIMPLE, input,
549 bool zcbor_float16_bytes_put(zcbor_state_t *state, uint16_t input) argument
551 return zcbor_float16_bytes_encode(state, &input);
555 bool zcbor_tag_put(zcbor_state_t *state, uint32_t tag) argument
557 if (!value_encode(state, ZCBOR_MAJOR_TYPE_TAG, &tag, sizeof(tag))) {
560 state->elem_count--;
566 bool zcbor_tag_encode(zcbor_state_t *state, uint32_t *tag) argument
568 return zcbor_tag_put(state, *tag);
574 zcbor_state_t *state, const void *input, size_t result_len) argument
578 return zcbor_multi_encode(*num_encode, encoder, state, input, result_len);
586 zcbor_state_t *state, const void *input, size_t result_len) argument
590 if (!encoder(state, (const uint8_t *)input + i*result_len)) {