diff options
Diffstat (limited to 'src/gen/curve.c')
| -rw-r--r-- | src/gen/curve.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/gen/curve.c b/src/gen/curve.c index da4a630..7ea2fb5 100644 --- a/src/gen/curve.c +++ b/src/gen/curve.c @@ -3,81 +3,7 @@ * Copyright (C) 2017-2018 J08nY */ #include "curve.h" -#include "math/subgroup.h" #include "math/twists.h" -#include "seed.h" -#include "util/memory.h" - -curve_t *curve_new(void) { return try_calloc(sizeof(curve_t)); } - -curve_t *curve_copy(const curve_t *src, curve_t *dest) { - if (src->seed) dest->seed = seed_new_copy(src->seed); - if (src->field) dest->field = gcopy(src->field); - if (src->a) dest->a = gcopy(src->a); - if (src->b) dest->b = gcopy(src->b); - if (src->curve) dest->curve = gcopy(src->curve); - if (src->order) dest->order = gcopy(src->order); - if (src->generators) { - dest->generators = subgroups_new_copy(src->generators, src->ngens); - dest->ngens = src->ngens; - } - return dest; -} - -curve_t *curve_new_copy(const curve_t *src) { - curve_t *result = curve_new(); - return curve_copy(src, result); -} - -curve_t *curve_clone(const curve_t *src, curve_t *dest) { - if (src->seed) dest->seed = seed_new_clone(src->seed); - if (src->field) dest->field = gclone(src->field); - if (src->a) dest->a = gclone(src->a); - if (src->b) dest->b = gclone(src->b); - if (src->curve) dest->curve = gclone(src->curve); - if (src->order) dest->order = gclone(src->order); - if (src->generators) { - dest->generators = subgroups_new_clone(src->generators, src->ngens); - dest->ngens = src->ngens; - } - return dest; -} - -curve_t *curve_new_clone(const curve_t *src) { - curve_t *result = curve_new(); - return curve_clone(src, result); -} - -void curve_free(curve_t **curve) { - if (*curve) { - seed_free(&(*curve)->seed); - subgroups_free_deep(&(*curve)->generators, (*curve)->ngens); - - if ((*curve)->curve) { - // TODO, this is possibly dangerous... - obj_free((*curve)->curve); - if (isclone((*curve)->curve)) { - gunclone((*curve)->curve); - } - } - - if ((*curve)->field && isclone((*curve)->field)) { - gunclone((*curve)->field); - } - if ((*curve)->a && isclone((*curve)->a)) { - gunclone((*curve)->a); - } - if ((*curve)->b && isclone((*curve)->b)) { - gunclone((*curve)->b); - } - if ((*curve)->order && isclone((*curve)->order)) { - gunclone((*curve)->order); - } - - try_free(*curve); - *curve = NULL; - } -} GENERATOR(curve_gen_any) { pari_sp ltop = avma; |
