NAME

CBOR::Free::Decoder

SYNOPSIS

my $decoder = CBOR::Free::Decoder->new()->set_tag_handlers(
    2 => sub { DateTime->from_epoch( epoch => shift() ) },
);

# Enable shared/circular references:
$decoder->preserve_references();

DESCRIPTION

This class provides an object-oriented interface to CBOR::Free’s decoder. This interface allows interpretation of tagged values.

METHODS

$obj = CLASS->new()

Creates a new CBOR decoder object.

$data = OBJ->decode( $CBOR )

Same as CBOR::Free’s static function of the same name but applies any tag handlers configured in set_tag_handlers().

As in CBOR::Free, any unrecognized tags prompt a warning but are otherwise ignored.

$enabled_yn = OBJ->preserve_references( [$ENABLE] )

Enables/disables recognition of CBOR’s shared references. (If no argument is given, shared references wil be enabled.)

HANDLE WITH CARE. This option can cause CBOR::Free to create circular references, which can cause memory leaks if not handled properly.

OBJ->set_tag_handlers( %TAG_CALLBACK )

Takes a list of key/value pairs where each key is a tag (i.e., number) and each value is a coderef that CBOR::Free will run when that tag is seen during a decode operation. The coderef will receive the tagged value, and its (scalar) return will be inserted into the decoded data structure.

To unset a tag handler, assign undef to it.

This returns the OBJ.

NOTE: Handlers assigned here will only fire if CBOR::Free itself doesn’t decode the tag. For example, a handler for the “indirection” tag here will be ignored.