summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/erl_bits.h
diff options
context:
space:
mode:
Diffstat (limited to 'erts/emulator/beam/erl_bits.h')
-rw-r--r--erts/emulator/beam/erl_bits.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_bits.h b/erts/emulator/beam/erl_bits.h
index 25aff39047..5ac6dd9ca7 100644
--- a/erts/emulator/beam/erl_bits.h
+++ b/erts/emulator/beam/erl_bits.h
@@ -182,7 +182,10 @@ Eterm erts_bs_get_utf8(ErlBinMatchBuffer* mb);
Eterm erts_bs_get_utf16(ErlBinMatchBuffer* mb, Uint flags);
Eterm erts_bs_append(Process* p, Eterm* reg, Uint live, Eterm build_size_term,
Uint extra_words, Uint unit);
+Eterm erts_bs_append_checked(Process* p, Eterm* reg, Uint live, Uint size,
+ Uint extra_words, Uint unit);
Eterm erts_bs_private_append(Process* p, Eterm bin, Eterm sz, Uint unit);
+Eterm erts_bs_private_append_checked(Process* p, Eterm bin, Uint size, Uint unit);
Eterm erts_bs_init_writable(Process* p, Eterm sz);
/*
@@ -204,7 +207,7 @@ Eterm erts_extract_sub_binary(Eterm **hp, Eterm base_bin, byte *base_data,
#define EXTRACT_SUB_BIN_HEAP_NEED (heap_bin_size(ERL_ONHEAP_BIN_LIMIT))
/*
- * Flags for bs_get_* / bs_put_* / bs_init* instructions.
+ * Flags for bs_create_bin / bs_get_* / bs_put_* / bs_init* instructions.
*/
#define BSF_ALIGNED 1 /* Field is guaranteed to be byte-aligned. */
@@ -213,4 +216,24 @@ Eterm erts_extract_sub_binary(Eterm **hp, Eterm base_bin, byte *base_data,
#define BSF_EXACT 8 /* Size in bs_init is exact. */
#define BSF_NATIVE 16 /* Native endian. */
+/*
+ * Binary construction operations.
+ */
+
+#define BSC_APPEND 0
+#define BSC_PRIVATE_APPEND 1
+#define BSC_BINARY 2
+#define BSC_BINARY_FIXED_SIZE 3
+#define BSC_BINARY_ALL 4
+#define BSC_FLOAT 5
+#define BSC_FLOAT_FIXED_SIZE 6
+#define BSC_INTEGER 7
+#define BSC_INTEGER_FIXED_SIZE 8
+#define BSC_STRING 9
+#define BSC_UTF8 10
+#define BSC_UTF16 11
+#define BSC_UTF32 12
+
+#define BSC_NUM_ARGS 5
+
#endif /* __ERL_BITS_H__ */