mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
81 lines
2.9 KiB
Text
81 lines
2.9 KiB
Text
interface Bytes
|
|
exposes
|
|
[
|
|
Bytes,
|
|
parseUtf8Usv,
|
|
parseUtf16Usv,
|
|
parseUtf8Grapheme,
|
|
parseUtf16Grapheme,
|
|
parsePastUtf8,
|
|
parsePastUtf16,
|
|
parseU16,
|
|
parseI16,
|
|
parseU32,
|
|
parseI32,
|
|
parseU64,
|
|
parseI64,
|
|
parseU128,
|
|
parseI128,
|
|
]
|
|
imports []
|
|
|
|
# Conversion
|
|
|
|
fromList : List U8 -> Bytes
|
|
|
|
toList : Bytes -> List U8
|
|
|
|
len : Bytes -> Nat
|
|
|
|
isEmpty : Bytes -> Bool
|
|
|
|
## The [endianness](https://en.wikipedia.org/wiki/Endianness) of the currently running system.
|
|
hostEndi : Endi
|
|
|
|
## [Endianness](https://en.wikipedia.org/wiki/Endianness)
|
|
##
|
|
## Be - Big Endian
|
|
## Le - Little Endian
|
|
Endi : [ Be, Le ]
|
|
|
|
# Access
|
|
|
|
splitFirst : Bytes -> Result { first : U8, rest : Bytes } [ NoBytes ]*
|
|
|
|
take : Bytes, Nat -> Bytes
|
|
|
|
# Building
|
|
|
|
appendLe : Bytes, Num * -> Bytes
|
|
appendBe : Bytes, Num * -> Bytes
|
|
concat : Bytes, Bytes -> Bytes
|
|
|
|
# Parsing
|
|
|
|
## Parse a [Unicode Scalar Value](http://www.unicode.org/glossary/#unicode_scalar_value)
|
|
## (USV) encoded as UTF-8.
|
|
##
|
|
## To parse an entire UTF-8 string, you can use #Bytes.toUtf8 or #Bytes.parsePastUtf8.
|
|
parseUsvUtf8 : Bytes -> Result { val : Usv, rest : Bytes } [ Expected [ Utf8Usv ]* Bytes ]*
|
|
parseUsvUtf16 : Bytes, Endi -> Result { val : Usv, rest : Bytes } [ Expected [ Utf16Usv Endi ]* Bytes ]*
|
|
parseGraphemeUtf8 : Bytes -> Result { val : Str, rest : Bytes } [ Expected [ Utf8Grapheme ]* Bytes ]*
|
|
parseGraphemeUtf16 : Bytes, Endi -> Result { val : Str, rest : Bytes } [ Expected [ Utf16Grapheme Endi ]* Bytes ]*
|
|
|
|
## If the bytes begin with the given UTF-8 string, return whatever bytes come
|
|
## after it.
|
|
chompUtf8 : Bytes, Str -> Result Bytes [ Expected [ ExactStr Str ]* Bytes ]*
|
|
chompUtf16 : Bytes, Endi, Str -> Result Bytes [ Expected [ ExactStr Str ]* Bytes ]*
|
|
chompUsvUtf8 : Usv -> Result Str [ Expected [ ExactUsv Usv ]* Bytes ]*
|
|
chompUsvUtf16 : Usv, Endi -> Result Str [ Expected [ ExactUsv Usv ]* Bytes ]*
|
|
## If the bytes begin with the given bytes, return whatever bytes come
|
|
## after them.
|
|
chompBytes : Bytes, Bytes -> Result Bytes [ Expected [ ExactStr Str ]* Bytes ]*
|
|
|
|
parseU16 : Bytes, Endi -> Result { val : U16, rest : Bytes } [ Expected [ U16 Endi ]* Bytes ]*
|
|
parseI16 : Bytes, Endi -> Result { val : I16, rest : Bytes } [ Expected [ I16 Endi ]* Bytes ]*
|
|
parseU32 : Bytes, Endi -> Result { val : U32, rest : Bytes } [ Expected [ U32 Endi ]* Bytes ]*
|
|
parseI32 : Bytes, Endi -> Result { val : I32, rest : Bytes } [ Expected [ I32 Endi ]* Bytes ]*
|
|
parseU64 : Bytes, Endi -> Result { val : U64, rest : Bytes } [ Expected [ U64 Endi ]* Bytes ]*
|
|
parseI64 : Bytes, Endi -> Result { val : I64, rest : Bytes } [ Expected [ I64 Endi ]* Bytes ]*
|
|
parseU128 : Bytes, Endi -> Result { val : U128, rest : Bytes } [ Expected [ U128 Endi ]* Bytes ]*
|
|
parseI128 : Bytes, Endi -> Result { val : I128, rest : Bytes } [ Expected [ I128 Endi ]* Bytes ]*
|