freesasa-sys 0.1.12

Rust raw FFI bindings for the freesasa C library
#ifndef FREESASA_NB_H
#define FREESASA_NB_H

#include <stdlib.h>

#include "coord.h"

/**
   @file
   @author Simon Mitternacht

   Functions to compute neighbor lists. The function
   freesasa_nb_contact() is mainly intended for checking consistency,
   in performance-critical code it is advisible to use the struct (as
   demonstrated in sasa_lr.c and sasa_sr.c).
 */

/** Neighbor list */
typedef struct {
    int n;         /**< number of elements */
    int **nb;      /**< neighbors to each element */
    int *nn;       /**< number of neighbors to each element */
    double **xyd;  /**< distance between neighbors in xy-plane */
    double **xd;   /**< signed distance between neighbors along x-axis */
    double **yd;   /**< signed distance between neighbors along y-axis */
    int *capacity; /**< keeps track of memory chunks (don't change this) */
} nb_list;

/**
    Creates a neigbor list based on a set of coordinates with
    corresponding sphere radii.

    Implemented using cell lists, giving O(N) performance. Should be
    freed with freesasa_nb_free(). For efficient calculations
    using this list the members of the returned struct should be used
    directly and not freesasa_nb_contact().

    @param coord a set of coordinates
    @param radii radii for the coordinates
    @return a neigbor list. Returns NULL if either argument is null or
      if there were any problems constructing the list (see error
      messages).
 */
nb_list *
freesasa_nb_new(const coord_t *coord,
                const double *radii);

/**
    Frees a neigbor list created by freesasa_nb_new().

    @param nb The neigbor list to free
 */
void freesasa_nb_free(nb_list *nb);

/**
    Checks if two atoms are in contact. Only included for reference.

    @param nb The neigbor list
    @param i Index of first coordinate
    @param j Index of second coordinate
    @return 1 if contact, 0 else.
 */
int freesasa_nb_contact(const nb_list *nb,
                        int i,
                        int j);

#endif /* FREESASA_NB_H */