1
0
Fork 0
mirror of https://codeberg.org/icewind/bitbuffer.git synced 2026-06-03 16:44:06 +02:00

flake updates

This commit is contained in:
Robin Appelman 2025-05-23 22:22:43 +02:00
commit acb6265b83
3 changed files with 59 additions and 45 deletions

View file

@ -4,27 +4,40 @@
# bitbuffer
Tools for reading and writing data types of arbitrary bit length and might not be byte-aligned in the source data
Tools for reading and writing data types of arbitrary bit length and might not
be byte-aligned in the source data
The main way of reading the binary data is to first create a `BitReadBuffer` ,wrap it into a `BitReadStream` and then read from the stream.
The main way of reading the binary data is to first create a `BitReadBuffer`
,wrap it into a `BitReadStream` and then read from the stream.
Once you have a BitStream, there are 2 different approaches of reading data
- read primitives, Strings and byte arrays, using `read_bool`, `read_int`, `read_float`, `read_bytes` and `read_string`
- read any type implementing the `BitRead` or `BitReadSized` traits using `read` and `read_sized`
- `BitRead` is for types that can be read without requiring any size info (e.g. null-terminal strings, floats, whole integers, etc)
- `BitReadSized` is for types that require external sizing information to be read (fixed length strings, arbitrary length integers
- read primitives, Strings and byte arrays, using `read_bool`, `read_int`,
`read_float`, `read_bytes` and `read_string`
- read any type implementing the `BitRead` or `BitReadSized` traits using `read`
and `read_sized`
- `BitRead` is for types that can be read without requiring any size info
(e.g. null-terminal strings, floats, whole integers, etc)
- `BitReadSized` is for types that require external sizing information to be
read (fixed length strings, arbitrary length integers
The `BitRead` and `BitReadSized` traits can be used with `#[derive]` if all fields implement `BitRead` or `BitReadSized`.
The `BitRead` and `BitReadSized` traits can be used with `#[derive]` if all
fields implement `BitRead` or `BitReadSized`.
For writing the data you wrap the output `Vec` into a `BitWriteStream` which can then be used in a manner similar to the `BitReadStream`
For writing the data you wrap the output `Vec` into a `BitWriteStream` which can
then be used in a manner similar to the `BitReadStream`
- write primitives, Strings and byte arrays, using `write_bool`, `write_int`, `write_float`, `write_bytes` and `write_string`
- write any type implementing the `BitWrite` or `BitWriteSized` traits using `write` and `write_sized`
- `BitWrite` is for types that can be written without requiring any size info (e.g. null-terminal strings, floats, whole integers, etc)
- `BitWriteSized` is for types that require external sizing information to be written (fixed length strings, arbitrary length integers
- write primitives, Strings and byte arrays, using `write_bool`, `write_int`,
`write_float`, `write_bytes` and `write_string`
- write any type implementing the `BitWrite` or `BitWriteSized` traits using
`write` and `write_sized`
- `BitWrite` is for types that can be written without requiring any size info
(e.g. null-terminal strings, floats, whole integers, etc)
- `BitWriteSized` is for types that require external sizing information to be
written (fixed length strings, arbitrary length integers
Just like the read counterparts, `BitWrite` and `BitWriteSized` traits can be used with `#[derive]` if all fields implement `BitWrite` or `BitWriteSized`.
Just like the read counterparts, `BitWrite` and `BitWriteSized` traits can be
used with `#[derive]` if all fields implement `BitWrite` or `BitWriteSized`.
# Examples
@ -62,14 +75,15 @@ write_stream.write(&ComplexType {
Licensed under either of
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
https://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
https://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.

42
flake.lock generated
View file

@ -2,11 +2,11 @@
"nodes": {
"crane": {
"locked": {
"lastModified": 1739936662,
"narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=",
"lastModified": 1742394900,
"narHash": "sha256-vVOAp9ahvnU+fQoKd4SEXB2JG2wbENkpqcwlkIXgUC0=",
"owner": "ipetkov",
"repo": "crane",
"rev": "19de14aaeb869287647d9461cbd389187d8ecdb7",
"rev": "70947c1908108c0c551ddfd73d4f750ff2ea67cd",
"type": "github"
},
"original": {
@ -22,11 +22,11 @@
]
},
"locked": {
"lastModified": 1739796086,
"narHash": "sha256-jxpUiVJ6O+V1YsXsvWdMgqnv8zk9TFiqF86CRdGGGH4=",
"lastModified": 1747659009,
"narHash": "sha256-3FFAthqh4rWKTClF+WgM+9CmMDlnfWcPdd3hGBFVNHc=",
"owner": "nix-community",
"repo": "flakelight",
"rev": "540efca2f9015aff7dc574c7a03404e5fa72d42f",
"rev": "93d72adbe0b022791b0faadfb31cb6e98c37f0ad",
"type": "github"
},
"original": {
@ -44,26 +44,26 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1740345481,
"narHash": "sha256-1lAgc6UhpYTHwKm88BUNSnC9nlT4a00rc6UmaE2n0LY=",
"owner": "icewind1991",
"repo": "mill-scale",
"rev": "582f15f238322a7f9c129aa5adef12dde3f0a5ce",
"type": "github"
"lastModified": 1748035164,
"narHash": "sha256-PMWOFLi3oU/Eb+y4a0MlHS0IcUZ+UFCoGmA1Q7DnoW4=",
"ref": "refs/heads/main",
"rev": "e6d5d797b3d2c738309152f2545518b2b117f72b",
"revCount": 48,
"type": "git",
"url": "https://codeberg.org/icewind/mill-scale.git"
},
"original": {
"owner": "icewind1991",
"repo": "mill-scale",
"type": "github"
"type": "git",
"url": "https://codeberg.org/icewind/mill-scale.git"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1740162160,
"narHash": "sha256-SSYxFhqCOb3aiPb6MmN68yEzBIltfom8IgRz7phHscM=",
"lastModified": 1747862697,
"narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "11415c7ae8539d6292f2928317ee7a8410b28bb9",
"rev": "2baa12ff69913392faf0ace833bc54bba297ea95",
"type": "github"
},
"original": {
@ -88,11 +88,11 @@
]
},
"locked": {
"lastModified": 1740277845,
"narHash": "sha256-NNU0CdiaSbAeZ8tpDG4aFi9qtcdlItRvk8Xns9oBrVU=",
"lastModified": 1742697269,
"narHash": "sha256-Lpp0XyAtIl1oGJzNmTiTGLhTkcUjwSkEb0gOiNzYFGM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "f933070c29f9c1c5457447a51903f27f76ebb519",
"rev": "01973c84732f9275c50c5f075dd1f54cc04b3316",
"type": "github"
},
"original": {

View file

@ -6,7 +6,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
mill-scale = {
url = "github:icewind1991/mill-scale";
url = "git+https://codeberg.org/icewind/mill-scale.git";
inputs.flakelight.follows = "flakelight";
};
};