Github User Fetcher
1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
duktape-1.5.2/src-separate/duk_util_bitencoder.c
Go to the documentation of this file.
1
/*
2
* Bitstream encoder.
3
*/
4
5
#include "
duk_internal.h
"
6
7
DUK_INTERNAL
void
duk_be_encode
(
duk_bitencoder_ctx
*ctx, duk_uint32_t data,
duk_small_int_t
bits) {
8
duk_uint8_t tmp;
9
10
DUK_ASSERT
(ctx !=
NULL
);
11
DUK_ASSERT
(ctx->
currbits
< 8);
12
13
/* This limitation would be fixable but adds unnecessary complexity. */
14
DUK_ASSERT
(bits >= 1 && bits <= 24);
15
16
ctx->
currval
= (ctx->
currval
<< bits) | data;
17
ctx->
currbits
+= bits;
18
19
while
(ctx->
currbits
>= 8) {
20
if
(ctx->
offset
< ctx->
length
) {
21
tmp = (duk_uint8_t) ((ctx->
currval
>> (ctx->
currbits
- 8)) & 0xff);
22
ctx->
data
[ctx->
offset
++] = tmp;
23
}
else
{
24
/* If buffer has been exhausted, truncate bitstream */
25
ctx->
truncated
= 1;
26
}
27
28
ctx->
currbits
-= 8;
29
}
30
}
31
32
DUK_INTERNAL
void
duk_be_finish
(
duk_bitencoder_ctx
*ctx) {
33
duk_small_int_t
npad;
34
35
DUK_ASSERT
(ctx !=
NULL
);
36
DUK_ASSERT
(ctx->
currbits
< 8);
37
38
npad = (
duk_small_int_t
) (8 - ctx->
currbits
);
39
if
(npad > 0) {
40
duk_be_encode
(ctx, 0, npad);
41
}
42
DUK_ASSERT
(ctx->
currbits
== 0);
43
}
duk_small_int_t
int duk_small_int_t
Definition
duktape-1.5.2/src-noline/duk_config.h:1807
DUK_INTERNAL
#define DUK_INTERNAL
Definition
duktape-1.5.2/src-noline/duk_config.h:2548
DUK_ASSERT
#define DUK_ASSERT(x)
Definition
duktape-1.5.2/src-noline/duktape.c:7755
duk_internal.h
duk_be_encode
DUK_INTERNAL void duk_be_encode(duk_bitencoder_ctx *ctx, duk_uint32_t data, duk_small_int_t bits)
Definition
duktape-1.5.2/src-separate/duk_util_bitencoder.c:7
duk_be_finish
DUK_INTERNAL void duk_be_finish(duk_bitencoder_ctx *ctx)
Definition
duktape-1.5.2/src-separate/duk_util_bitencoder.c:32
NULL
#define NULL
Definition
gmacros.h:924
duk_bitencoder_ctx
Definition
duktape-1.5.2/src-noline/duktape.c:1769
duk_bitencoder_ctx::currval
duk_uint32_t currval
Definition
duktape-1.5.2/src-noline/duktape.c:1773
duk_bitencoder_ctx::truncated
duk_small_int_t truncated
Definition
duktape-1.5.2/src-noline/duktape.c:1775
duk_bitencoder_ctx::currbits
duk_small_int_t currbits
Definition
duktape-1.5.2/src-noline/duktape.c:1774
duk_bitencoder_ctx::length
duk_size_t length
Definition
duktape-1.5.2/src-noline/duktape.c:1772
duk_bitencoder_ctx::data
duk_uint8_t * data
Definition
duktape-1.5.2/src-noline/duktape.c:1770
duk_bitencoder_ctx::offset
duk_size_t offset
Definition
duktape-1.5.2/src-noline/duktape.c:1771
vendor
civetweb
third_party
duktape-1.5.2
src-separate
duk_util_bitencoder.c
Generated by
1.10.0