/usr/include/ap_reducedproduct.h is in libapron-dev 0.9.10-5.2ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | /* ************************************************************************* */
/* reducedproduct.h: generic reduced product of N domains */
/* ************************************************************************* */
/* This file is part of the APRON Library, released under LGPL license. Please
read the COPYING file packaged in the distribution */
#ifndef _AP_REDUCEDPRODUCT_H_
#define _AP_REDUCEDPRODUCT_H_
#include <stdlib.h>
#include <stdio.h>
#include "ap_global0.h"
#ifdef __cplusplus
extern "C" {
#endif
/* (internal) abstract value for a product */
typedef struct ap_reducedproduct_t {
bool reduced; /* is the product reduced ? */
void* p[0]; /* array of internal abstract values,
the size of which is specified in the associated
ap_reducedproduct_internal_t */
} ap_reducedproduct_t;
/* internal field of manager */
typedef struct ap_reducedproduct_internal_t {
void (*reduce)(ap_manager_t*, ap_reducedproduct_t*);
/* reduce function */
void (*approximate)(ap_manager_t*, ap_reducedproduct_t*, int n);
/* approximate function */
char* library; /* (constructed) library name */
char* version; /* (constructed) library version */
size_t size; /* size of the product */
ap_manager_t* tmanagers[0]; /* of size size */
} ap_reducedproduct_internal_t;
/* ============================================================ */
/* IV. Allocating a manager */
/* ============================================================ */
ap_manager_t* ap_reducedproduct_manager_alloc
(
char* library, /* library name */
ap_manager_t** tab, /* Array of managers */
size_t size, /* size of array */
void (*reduce)(ap_manager_t*, ap_reducedproduct_t*),
/* reduce function */
void (*approximate)(ap_manager_t*, ap_reducedproduct_t*, int n)
/* approximate function */
);
/* ============================================================ */
/* V. Extra functions */
/* ============================================================ */
void** ap_reducedproduct_decompose(ap_manager_t* manager, bool destructive, ap_reducedproduct_t* a);
/* Decompose an product abstract values into an array of abstract values,
the size of which corresponds to the size of the (product) manager.
Be cautious: no type checking is performed.
If destructive is true, then a is freed at the end of the call.
Otherwise, abstract values are copied into the result, and the argument
and the result do not share any more information.
*/
ap_reducedproduct_t* ap_reducedproduct_compose(ap_manager_t* manager, bool destructive, void** tabs);
/* Create a product abstract value from an array of size the size of the (product) manager.
Be cautious: no type checking is performed.
If destructive is true, the array tabs cannot be used any more, but may
require a call to free() if dynamically allocated.
Otherwise, abstract values are copied into the result, and the argument
and the result do not share any more information.
*/
#ifdef __cplusplus
}
#endif
#endif
|