|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
103
 | 
 0  | 
 2  | 
     char * words[3] = { "Unrecognized", SvPV_nolen(value), NULL };  | 
 
| 
146
 | 
 34  | 
 0  | 
         : _SORT(a)->is_utf8 > _SORT(b)->is_utf8 ? 1  | 
 
| 
147
 | 
 28  | 
 6  | 
         : _SORT(a)->length < _SORT(b)->length ? -1  | 
 
| 
148
 | 
 18  | 
 10  | 
         : _SORT(a)->length > _SORT(b)->length ? 1  | 
 
| 
149
 | 
 16  | 
 2  | 
         : memcmp( _SORT(a)->buffer, _SORT(b)->buffer, _SORT(a)->length )  | 
 
| 
156
 | 
 5  | 
 109  | 
     if (!tagged_stash) {  | 
 
| 
165
 | 
 33  | 
 44710  | 
     if ( (len + encode_state->len) > encode_state->buflen ) {  | 
 
| 
179
 | 
 6465  | 
 16897  | 
     if ( num < CBOR_LENGTH_SMALL ) {  | 
 
| 
184
 | 
 676  | 
 16221  | 
     else if ( num <= 0xff ) {  | 
 
| 
190
 | 
 15901  | 
 320  | 
     else if ( num <= 0xffff ) {  | 
 
| 
197
 | 
 310  | 
 10  | 
     else if ( num <= 0xffffffffU ) {  | 
 
| 
218
 | 
 12  | 
 2  | 
     if ( SvREFCNT(varref) > 1 ) {  | 
 
| 
223
 | 
 18  | 
 6  | 
         while ( (this_ref = encode_state->reftracker[r++]) ) {  | 
 
| 
224
 | 
 6  | 
 12  | 
             if (this_ref == varref) {  | 
 
| 
231
 | 
 0  | 
 6  | 
         Renew( encode_state->reftracker, 1 + r, void * );  | 
 
| 
244
 | 
 5  | 
 56  | 
     if (SvMAGICAL(hash)) {  | 
 
| 
247
 | 
 1762  | 
 5  | 
         while (hv_iternext(hash)) count++;  | 
 
| 
259
 | 
 1235  | 
 0  | 
     char *val = SvPOK(value) ? SvPVX(value) : SvPV_nolen(value);  | 
 
| 
 | 
 0  | 
 0  | 
     char *val = SvPOK(value) ? SvPVX(value) : SvPV_nolen(value);  | 
 
| 
277
 | 
 196  | 
 1039  | 
     _init_length_buffer( aTHX_  | 
 
| 
289
 | 
 4  | 
 6  | 
     if (SvUTF8(value)) {  | 
 
| 
306
 | 
 6  | 
 5  | 
     UTF8_DOWNGRADE_IF_NEEDED(encode_state, to_encode);  | 
 
| 
 | 
 2  | 
 4  | 
     UTF8_DOWNGRADE_IF_NEEDED(encode_state, to_encode);  | 
 
| 
317
 | 
 6  | 
 5  | 
     UTF8_DOWNGRADE_IF_NEEDED(encode_state, to_encode);  | 
 
| 
 | 
 2  | 
 4  | 
     UTF8_DOWNGRADE_IF_NEEDED(encode_state, to_encode);  | 
 
| 
324
 | 
 152  | 
 0  | 
     CBF_HeSVKEY_force(h_entry, key_sv);  | 
 
| 
 | 
 134  | 
 18  | 
     CBF_HeSVKEY_force(h_entry, key_sv);  | 
 
| 
 | 
 0  | 
 18  | 
     CBF_HeSVKEY_force(h_entry, key_sv);  | 
 
| 
331
 | 
 4  | 
 0  | 
     CBF_HeSVKEY_force(h_entry, key_sv);  | 
 
| 
 | 
 0  | 
 4  | 
     CBF_HeSVKEY_force(h_entry, key_sv);  | 
 
| 
 | 
 4  | 
 0  | 
     CBF_HeSVKEY_force(h_entry, key_sv);  | 
 
| 
332
 | 
 4  | 
 0  | 
     UTF8_DOWNGRADE_OR_CROAK(encode_state, key_sv);  | 
 
| 
336
 | 
 0  | 
 0  | 
     if (string_type == CBOR_TYPE_UTF8) SvUTF8_on(key_sv);  | 
 
| 
344
 | 
 2  | 
 20529  | 
     if (encode_state->recurse_count > MAX_ENCODE_RECURSE) {  | 
 
| 
353
 | 
 1762  | 
 18767  | 
     SvGETMAGIC(value);  | 
 
| 
 | 
 0  | 
 1762  | 
     SvGETMAGIC(value);  | 
 
| 
355
 | 
 20094  | 
 435  | 
     if (!SvROK(value)) {  | 
 
| 
357
 | 
 18755  | 
 1339  | 
         if (SvIOK(value)) {  | 
 
| 
362
 | 
 42  | 
 18713  | 
             if (val < 0 && !SvUOK(value)) {  | 
 
| 
 | 
 39  | 
 3  | 
             if (val < 0 && !SvUOK(value)) {  | 
 
| 
370
 | 
 27  | 
 1312  | 
         else if (SvNOK(value)) {  | 
 
| 
373
 | 
 3  | 
 24  | 
             if (Perl_isnan(val_nv)) {  | 
 
| 
376
 | 
 6  | 
 18  | 
             else if (Perl_isinf(val_nv)) {  | 
 
| 
377
 | 
 3  | 
 3  | 
                 if (val_nv > 0) {  | 
 
| 
409
 | 
 225  | 
 1087  | 
         else if (!SvOK(value)) {  | 
 
| 
 | 
 225  | 
 0  | 
         else if (!SvOK(value)) {  | 
 
| 
 | 
 225  | 
 0  | 
         else if (!SvOK(value)) {  | 
 
| 
432
 | 
 114  | 
 321  | 
     else if (sv_isobject(value)) {  | 
 
| 
435
 | 
 105  | 
 9  | 
         if (_get_tagged_stash() == stash) {  | 
 
| 
438
 | 
 105  | 
 0  | 
             IV tagnum = SvIV(*tag);  | 
 
| 
442
 | 
 8  | 
 1  | 
         else if (cbf_get_boolean_stash() == stash) {  | 
 
| 
443
 | 
 8  | 
 0  | 
             _COPY_INTO_ENCODE(  | 
 
| 
 | 
 0  | 
 8  | 
             _COPY_INTO_ENCODE(  | 
 
| 
 | 
 0  | 
 8  | 
             _COPY_INTO_ENCODE(  | 
 
| 
 | 
 0  | 
 8  | 
             _COPY_INTO_ENCODE(  | 
 
| 
 | 
 8  | 
 0  | 
             _COPY_INTO_ENCODE(  | 
 
| 
445
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 8  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 3  | 
 5  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 3  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 5  | 
 3  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
 | 
 0  | 
 0  | 
                 SvTRUE(SvRV(value)) ? &CBOR_TRUE_U8 : &CBOR_FALSE_U8,  | 
 
| 
454
 | 
 245  | 
 76  | 
     else if (SVt_PVAV == SvTYPE(SvRV(value))) {  | 
 
| 
457
 | 
 6  | 
 239  | 
         if (!encode_state->reftracker || _check_reference( aTHX_ (SV *)array, encode_state )) {  | 
 
| 
 | 
 4  | 
 2  | 
         if (!encode_state->reftracker || _check_reference( aTHX_ (SV *)array, encode_state )) {  | 
 
| 
466
 | 
 362  | 
 46  | 
             for (i=0; i
 | 
 
| 
472
 | 
 63  | 
 13  | 
     else if (SVt_PVHV == SvTYPE(SvRV(value))) {  | 
 
| 
475
 | 
 4  | 
 59  | 
         if (!encode_state->reftracker || _check_reference( aTHX_ (SV *)hash, encode_state)) {  | 
 
| 
 | 
 2  | 
 2  | 
         if (!encode_state->reftracker || _check_reference( aTHX_ (SV *)hash, encode_state)) {  | 
 
| 
486
 | 
 22  | 
 39  | 
             if (encode_state->is_canonical) {  | 
 
| 
491
 | 
 42  | 
 18  | 
                 while ( (h_entry = hv_iternext(hash)) ) {  | 
 
| 
492
 | 
 0  | 
 42  | 
                     heutf8 = HeUTF8(h_entry);  | 
 
| 
496
 | 
 26  | 
 0  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 0  | 
 26  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 0  | 
 0  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 26  | 
 0  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 26  | 
 0  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 0  | 
 26  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 0  | 
 0  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 22  | 
 4  | 
                             if (heutf8 || !CBF_HeUTF8(h_entry)) {  | 
 
| 
497
 | 
 0  | 
 22  | 
                                 STORE_SORTABLE_HASH_KEY( sortables[curkey], h_entry, key, key_length, heutf8 );  | 
 
| 
 | 
 0  | 
 0  | 
                                 STORE_SORTABLE_HASH_KEY( sortables[curkey], h_entry, key, key_length, heutf8 );  | 
 
| 
500
 | 
 4  | 
 0  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
 | 
 0  | 
 4  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
 | 
 0  | 
 4  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
 | 
 4  | 
 0  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
506
 | 
 2  | 
 4  | 
                             if (heutf8) {  | 
 
| 
507
 | 
 0  | 
 2  | 
                                 STORE_SORTABLE_HASH_KEY( sortables[curkey], h_entry, key, key_length, true );  | 
 
| 
 | 
 0  | 
 0  | 
                                 STORE_SORTABLE_HASH_KEY( sortables[curkey], h_entry, key, key_length, true );  | 
 
| 
510
 | 
 4  | 
 0  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
 | 
 0  | 
 4  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
 | 
 0  | 
 4  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
 | 
 4  | 
 0  | 
                                 STORE_UPGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry);  | 
 
| 
516
 | 
 4  | 
 6  | 
                             if (heutf8) {  | 
 
| 
517
 | 
 4  | 
 0  | 
                                 STORE_DOWNGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8);  | 
 
| 
 | 
 0  | 
 4  | 
                                 STORE_DOWNGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8);  | 
 
| 
 | 
 4  | 
 0  | 
                                 STORE_DOWNGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8);  | 
 
| 
 | 
 4  | 
 0  | 
                                 STORE_DOWNGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8);  | 
 
| 
 | 
 0  | 
 0  | 
                                 STORE_DOWNGRADED_SORTABLE_HASH_KEY(sortables[curkey], h_entry, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8);  | 
 
| 
520
 | 
 0  | 
 6  | 
                                 STORE_SORTABLE_HASH_KEY( sortables[curkey], h_entry, key, key_length, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8 );  | 
 
| 
 | 
 0  | 
 0  | 
                                 STORE_SORTABLE_HASH_KEY( sortables[curkey], h_entry, key, key_length, encode_state->string_encode_mode == CBF_STRING_ENCODE_UTF8 );  | 
 
| 
535
 | 
 38  | 
 18  | 
                 for (curkey=0; curkey < keyscount; ++curkey) {  | 
 
| 
536
 | 
 13  | 
 25  | 
                     _init_length_buffer( aTHX_ sortables[curkey].length, sortables[curkey].is_utf8 ? CBOR_TYPE_UTF8 : CBOR_TYPE_BINARY, encode_state );  | 
 
| 
543
 | 
 3053  | 
 35  | 
                 while ( (h_entry = hv_iternext(hash)) ) {  | 
 
| 
553
 | 
 1360  | 
 1275  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1360  | 
 0  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1274  | 
 1  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1360  | 
 1274  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1360  | 
 0  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1274  | 
 0  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 2634  | 
 0  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1360  | 
 1274  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 0  | 
 1360  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
 | 
 1260  | 
 14  | 
                             if (HeUTF8(h_entry) || !CBF_HeUTF8(h_entry)) {  | 
 
| 
554
 | 
 1360  | 
 1261  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, HeUTF8(h_entry) ? CBOR_TYPE_UTF8 : CBOR_TYPE_BINARY );  | 
 
| 
 | 
 1360  | 
 0  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, HeUTF8(h_entry) ? CBOR_TYPE_UTF8 : CBOR_TYPE_BINARY );  | 
 
| 
 | 
 1360  | 
 1261  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, HeUTF8(h_entry) ? CBOR_TYPE_UTF8 : CBOR_TYPE_BINARY );  | 
 
| 
 | 
 1  | 
 2620  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, HeUTF8(h_entry) ? CBOR_TYPE_UTF8 : CBOR_TYPE_BINARY );  | 
 
| 
562
 | 
 134  | 
 6  | 
                             if (HeUTF8(h_entry)) {  | 
 
| 
 | 
 2  | 
 138  | 
                             if (HeUTF8(h_entry)) {  | 
 
| 
563
 | 
 0  | 
 2  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, CBOR_TYPE_UTF8 );  | 
 
| 
 | 
 0  | 
 0  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, CBOR_TYPE_UTF8 );  | 
 
| 
572
 | 
 134  | 
 5  | 
                             if (HeUTF8(h_entry)) {  | 
 
| 
 | 
 2  | 
 137  | 
                             if (HeUTF8(h_entry)) {  | 
 
| 
576
 | 
 134  | 
 3  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, CBOR_TYPE_UTF8 );  | 
 
| 
 | 
 134  | 
 0  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, CBOR_TYPE_UTF8 );  | 
 
| 
582
 | 
 134  | 
 5  | 
                             if (HeUTF8(h_entry)) {  | 
 
| 
 | 
 2  | 
 137  | 
                             if (HeUTF8(h_entry)) {  | 
 
| 
586
 | 
 134  | 
 3  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, CBOR_TYPE_BINARY );  | 
 
| 
 | 
 134  | 
 0  | 
                                 STORE_PLAIN_HASH_KEY( encode_state, h_entry, key, key_length, CBOR_TYPE_BINARY );  | 
 
| 
600
 | 
 12  | 
 1  | 
     else if (encode_state->encode_scalar_refs && IS_SCALAR_REFERENCE(value)) {  | 
 
| 
 | 
 12  | 
 0  | 
     else if (encode_state->encode_scalar_refs && IS_SCALAR_REFERENCE(value)) {  | 
 
| 
603
 | 
 4  | 
 8  | 
         if (!encode_state->reftracker || _check_reference( aTHX_ referent, encode_state)) {  | 
 
| 
 | 
 2  | 
 2  | 
         if (!encode_state->reftracker || _check_reference( aTHX_ referent, encode_state)) {  | 
 
| 
637
 | 
 2  | 
 16965  | 
     if (flags & ENCODE_FLAG_PRESERVE_REFS) {  |