From baecb524fb2b8162409d86d84cdddbd20b930c50 Mon Sep 17 00:00:00 2001 From: hachem Date: Sun, 6 Sep 2026 21:06:02 +0200 Subject: add: classical bits and registers --- src/core/classical_components.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/core/classical_components.c (limited to 'src/core/classical_components.c') diff --git a/src/core/classical_components.c b/src/core/classical_components.c new file mode 100644 index 0000000..836784c --- /dev/null +++ b/src/core/classical_components.c @@ -0,0 +1,36 @@ +#include "core/classical_components.h" + +#include +#include + +struct PsiClassicalBit psi_new_classical_bit(const char *name, bool state) +{ + return (struct PsiClassicalBit) + { + name, + state, + }; +} + +struct PsiClassicalRegister psi_new_classical_register(const char *name, const char **names, size_t count) +{ + struct PsiClassicalBit *bits = malloc(count * sizeof(struct PsiClassicalBit)); + assert(bits != NULL || count == 0); + + for (size_t i = 0; i < count; i++) + bits[i] = psi_new_classical_bit(names[i], false); + + return (struct PsiClassicalRegister) + { + name, + bits, + count, + }; +} + +void psi_free_classical_register(struct PsiClassicalRegister *reg) +{ + free(reg->bits); + reg->bits = NULL; + reg->num_bits = 0; +} -- cgit v1.3