mirror of
https://github.com/janet-lang/janet
synced 2024-12-30 18:30:26 +00:00
janet_marshal_bytes, janet_unmarshal_bytes size_t
Instead of a int32_t as the length argument, use size_t to match up better with typearray.c and probably most idiomatic C libraries. Janet uses int32_t for length internally for consistency, space efficiency, ability to fit int32_t in double, and various other reasons.
This commit is contained in:
parent
b57e530553
commit
c4f6f1d256
@ -299,9 +299,10 @@ void janet_marshal_byte(JanetMarshalContext *ctx, uint8_t value) {
|
||||
pushbyte(st, value);
|
||||
};
|
||||
|
||||
void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, int32_t len) {
|
||||
void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, size_t len) {
|
||||
MarshalState *st = (MarshalState *)(ctx->m_state);
|
||||
pushbytes(st, bytes, len);
|
||||
if (len > INT32_MAX) janet_panic("size_t too large to fit in buffer");
|
||||
pushbytes(st, bytes, (int32_t) len);
|
||||
}
|
||||
|
||||
void janet_marshal_janet(JanetMarshalContext *ctx, Janet x) {
|
||||
@ -960,7 +961,7 @@ void janet_unmarshal_byte(JanetMarshalContext *ctx, uint8_t *b) {
|
||||
*b = *(ctx->data++);
|
||||
};
|
||||
|
||||
void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, int32_t len) {
|
||||
void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, size_t len) {
|
||||
UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
|
||||
MARSH_EOS(st, ctx->data + len - 1);
|
||||
memcpy(dest, ctx->data, len);
|
||||
|
@ -291,9 +291,9 @@ static int is_ta_anytype(Janet x) {
|
||||
}
|
||||
|
||||
static int is_ta_type(Janet x, JanetTArrayType type) {
|
||||
return janet_checktype(x, JANET_ABSTRACT) &&
|
||||
(type < TA_COUNT_TYPES) &&
|
||||
(janet_abstract_type(janet_unwrap_abstract(x)) == &ta_array_types[type]);
|
||||
return janet_checktype(x, JANET_ABSTRACT) &&
|
||||
(type < TA_COUNT_TYPES) &&
|
||||
(janet_abstract_type(janet_unwrap_abstract(x)) == &ta_array_types[type]);
|
||||
}
|
||||
|
||||
#define CASE_TYPE_INITIALIZE(type) case JANET_TARRAY_TYPE_##type : ta_init_##type(view,buffer,size,offset,stride); break
|
||||
|
@ -1259,13 +1259,13 @@ JANET_API FILE *janet_getfile(const Janet *argv, int32_t n, int *flags);
|
||||
JANET_API void janet_marshal_int(JanetMarshalContext *ctx, int32_t value);
|
||||
JANET_API void janet_marshal_size(JanetMarshalContext *ctx, size_t value);
|
||||
JANET_API void janet_marshal_byte(JanetMarshalContext *ctx, uint8_t value);
|
||||
JANET_API void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, int32_t len);
|
||||
JANET_API void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, size_t len);
|
||||
JANET_API void janet_marshal_janet(JanetMarshalContext *ctx, Janet x);
|
||||
|
||||
JANET_API void janet_unmarshal_int(JanetMarshalContext *ctx, int32_t *i);
|
||||
JANET_API void janet_unmarshal_size(JanetMarshalContext *ctx, size_t *i);
|
||||
JANET_API void janet_unmarshal_byte(JanetMarshalContext *ctx, uint8_t *b);
|
||||
JANET_API void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, int32_t len);
|
||||
JANET_API void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, size_t len);
|
||||
JANET_API void janet_unmarshal_janet(JanetMarshalContext *ctx, Janet *out);
|
||||
|
||||
JANET_API void janet_register_abstract_type(const JanetAbstractType *at);
|
||||
|
Loading…
Reference in New Issue
Block a user