/usr/lib/petscdir/3.7.7/x86_64-linux-gnu-real-debug/include/petsc/private/dmlabelimpl.h is in libpetsc3.7.7-dbg 3.7.7+dfsg1-2build5.
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 | #if !defined(_LABELIMPL_H)
#define _LABELIMPL_H
#include <petscdmlabel.h>
#include <petscbt.h>
#include <../src/sys/utils/hash.h>
/* This is an integer map, in addition it is also a container class
Design points:
- Low storage is the most important design point
- We want flexible insertion and deletion
- We can live with O(log) query, but we need O(1) iteration over strata
*/
struct _n_DMLabel {
PetscInt refct;
PetscObjectState state;
char *name; /* Label name */
PetscInt numStrata; /* Number of integer values */
PetscInt defaultValue; /* Background value when no value explicitly given */
PetscInt *stratumValues; /* Value of each stratum */
/* Basic sorted array storage */
PetscBool *arrayValid; /* The array storage is valid (no additions need to be merged in) */
PetscInt *stratumSizes; /* Size of each stratum */
PetscInt **points; /* Points for each stratum, always sorted */
/* Hashtable for fast insertion */
PetscHashI *ht; /* Hash table for fast insertion */
/* Index for fast search */
PetscInt pStart, pEnd; /* Bounds for index lookup */
PetscBT bt; /* A bit-wise index */
};
#endif
|