diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/classical_components.c | 36 |
1 files changed, 36 insertions, 0 deletions
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 <assert.h> +#include <stdlib.h> + +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; +} |
