# Copyright (c) 2018 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

config TINYCBOR
	bool "tinyCBOR Support"
	help
	  This option enables the tinyCBOR library.

if TINYCBOR

config CBOR_NO_DFLT_WRITER
	bool "No default writer support"
	help
	  This option specifies whether a default writer exists.

config CBOR_NO_DFLT_READER
	bool "No default reader support"
	help
	  This option specifies whether a default reader exists.

config CBOR_ENCODER_NO_CHECK_USER
	bool "No encoder checks for user args for validity"
	help
	  This option specifies whether a check user exists for a cbor encoder.

config CBOR_PARSER_MAX_RECURSIONS
	int "Parser max recursions"
	default 1024
	help
	  This option specifies max recursions for the parser.

config CBOR_PARSER_NO_STRICT_CHECKS
	bool "No strict parser checks"
	help
	  This option enables the strict parser checks.

config CBOR_FLOATING_POINT
	bool "Floating point support"
	select REQUIRES_FULL_LIBC
	help
	  This option enables floating point support.

config CBOR_HALF_FLOAT_TYPE
	bool "Half float type support"
	select REQUIRES_FULL_LIBC
	help
	  This option enables half float type support.

config CBOR_WITHOUT_OPEN_MEMSTREAM
	bool "Without open memstream"
	default y
	help
	  This option enables open memstream support.

config CBOR_PRETTY_PRINTING
	bool "Implement pretty printing functionality"
	help
	  This option enables cbor_value_to_pretty_stream function.

endif # TINYCBOR
