github.com/ethereum/go-ethereum@v1.16.1/crypto/secp256k1/libsecp256k1/src/scratch.h (about)

     1  /***********************************************************************
     2   * Copyright (c) 2017 Andrew Poelstra                                  *
     3   * Distributed under the MIT software license, see the accompanying    *
     4   * file COPYING or https://www.opensource.org/licenses/mit-license.php.*
     5   ***********************************************************************/
     6  
     7  #ifndef SECP256K1_SCRATCH_H
     8  #define SECP256K1_SCRATCH_H
     9  
    10  /* The typedef is used internally; the struct name is used in the public API
    11   * (where it is exposed as a different typedef) */
    12  typedef struct secp256k1_scratch_space_struct {
    13      /** guard against interpreting this object as other types */
    14      unsigned char magic[8];
    15      /** actual allocated data */
    16      void *data;
    17      /** amount that has been allocated (i.e. `data + offset` is the next
    18       *  available pointer)  */
    19      size_t alloc_size;
    20      /** maximum size available to allocate */
    21      size_t max_size;
    22  } secp256k1_scratch;
    23  
    24  typedef struct secp256k1_scratch_space_struct secp256k1_scratch_space;
    25  
    26  static secp256k1_scratch* secp256k1_scratch_create(const secp256k1_callback* error_callback, size_t max_size);
    27  
    28  static void secp256k1_scratch_destroy(const secp256k1_callback* error_callback, secp256k1_scratch* scratch);
    29  
    30  /** Returns an opaque object used to "checkpoint" a scratch space. Used
    31   *  with `secp256k1_scratch_apply_checkpoint` to undo allocations. */
    32  static size_t secp256k1_scratch_checkpoint(const secp256k1_callback* error_callback, const secp256k1_scratch* scratch);
    33  
    34  /** Applies a check point received from `secp256k1_scratch_checkpoint`,
    35   *  undoing all allocations since that point. */
    36  static void secp256k1_scratch_apply_checkpoint(const secp256k1_callback* error_callback, secp256k1_scratch* scratch, size_t checkpoint);
    37  
    38  /** Returns the maximum allocation the scratch space will allow */
    39  static size_t secp256k1_scratch_max_allocation(const secp256k1_callback* error_callback, const secp256k1_scratch* scratch, size_t n_objects);
    40  
    41  /** Returns a pointer into the most recently allocated frame, or NULL if there is insufficient available space */
    42  static void *secp256k1_scratch_alloc(const secp256k1_callback* error_callback, secp256k1_scratch* scratch, size_t n);
    43  
    44  #endif