/usr/include/dx/invalid.h is in libdx4-dev 1:4.4.4-9+b1.
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | /***********************************************************************/
/* Open Visualization Data Explorer */
/* (C) Copyright IBM Corp. 1989,1999 */
/* ALL RIGHTS RESERVED */
/* This code licensed under the */
/* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */
/***********************************************************************/
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
#ifndef _DXI_INVALID_H_
#define _DXI_INVALID_H_
/* TeX starts here. Do not remove this comment. */
/*
\section{Invalid Data}
In order to support the selective elimination of positions and
connections from datasets, fields may contain ``invalid positions''
and ``invalid connections'' components. These contain flags in a
one-to-one correspondence with the elements of the positions and
connections components that denote the current validity of the
correspondong element. Elements carrying a {\tt DATA\_INVALID}
validity status will not participate in further processing.
Note: in the current release of the Data Explorer, invalid data
marking is not supported by all modules.
Data may be invalidated by modifying (creating, if necessary) these
invalid positions and invalid connections arrays. If none exists, all
elements are assumed to be valid and an invalid array may be created
and initialized to {\tt DATA\_VALID} for all elements. Once positions
have been invalidated, it is possible to propagate the validity of
positions to the connections that are incident on them by calling {\tt
DXInvalidateConnections} which will create an invalid connections
component, if necessary. Note that the ``invalid connections''
component cannot be assumed to be up-to-date with regard to invalid
positions unless this routine is called.
Invalid positions and connections (and their dependent information) may
be actually removed from the data set be calling {\tt DXCull}. This
routine removes all invalidated positions and connections and the
corresponding elements of components that are dependent on positions
and connections, renumbers components that reference positions or
connections (inserting a -1 for indices that refer to removed positions
or connections) and, finally, removes the invalid positions and
connections components.
The removal of invalid positions and connections may have significantly
detrimental effect on the performance of the system as a whole since it
may require the conversion or regular positions and connections
components to irregular form, thereby increasing the memory usage for
these components dramatically. However, the invalid components can
then be removed, saving space. {\tt DXCullConditional} is included to
weigh these considerations for the calling application. {\tt
DXCullConditional} may either return the original structure with invalid
components intact, cull the connections component, leaving the invalid
positions component intact, or cull both positions and connections.
*/
#define DATA_VALID 0
#define DATA_INVALID 1
Object DXInvalidateConnections(Object object);
/**
\index{DXInvalidateConnections}
Propagate the validity of positions within the fields of {\tt object}
to the connections. A connection is invalidated if any position on
which it is incident is invalid. An ``invalid connections'' component
will be created if necessary. Returns the updated object on success,
or returns null and sets the error code to indicate an error.
**/
Object DXInvalidateUnreferencedPositions(Object object);
/**
\index{DXInvalidateUnreferencedPositions}
Determine which positions in the constituent fields of {\tt object}
are not referenced by any connections element and invalidate them. An
``invalid positions'' component will be created if necessary. Returns
the updated object, or returns null and sets the error code to
indicate an error.
**/
Object DXCull(Object object);
/**
\index{DXCull}
DXRemove any invalidated positions and/or connections from the
constituent fields of {\tt object}. DXRemove corresponding elements
from components that are dependent on positions or connections.
Renumber components that reference either positions and connections,
inserting -1 for indices that reference removed positions or
connections. DXRemove "invalid positions" and "invalid connections"
components. Returns the updated object, or returns null and sets the
error code to indicate an error.
**/
Object DXCullConditional(Object object);
/**
\index{DXCullConditional}
Conditionally cull {\tt object}. Based on effiency criteria, {\tt
DXCullConditional} may either leave the original structure with invalid
components intact, cull the connections component, leaving the invalid
positions component intact, or cull both positions and connections.
Components dependent on a culled component are culled. Components
that reference culled components are renumbered. Returns the updated
object, or returns null and sets the error code to indicate an error.
**/
#define IC_HASH 1
#define IC_DEP_ARRAY 2
#define IC_SEGLIST 3
#define IC_SORTED_LIST 4
#define IC_ALL_MARKED 5
#define IC_ALL_UNMARKED 6
#define IC_ELEMENT_MARKED DATA_INVALID
#define IC_ELEMENT_UNMARKED DATA_VALID
#define IC_MARKS_INDICATE_VALID 0
#define IC_MARKS_INDICATE_INVALID 1
typedef struct invalidComponentHandle
{
int type; /* current type, eg. dep array or hash */
int myData; /* did I allocate the data pointer? */
int nItems; /* total number of items in component */
int nMarkedItems; /* current number of marked items */
char *iName; /* invalid component name */
HashTable hash; /* hash table pointer */
Pointer data; /* data pointer */
SegList *seglist; /* seg list pointer */
int next; /* next pointer for sequential queries */
Array array; /* original array */
int sense; /* do marks indicate valid? */
/*
* For iteration
*/
int *sortList; /* for hashed handles */
int sortListSize;
int nextSlot;
int nextCand;
int nextMark;
int nextMarkI;
} *InvalidComponentHandle;
InvalidComponentHandle DXCreateInvalidComponentHandle(Object, Array, char *);
Error DXFreeInvalidComponentHandle(InvalidComponentHandle);
Error DXSaveInvalidComponent(Field, InvalidComponentHandle);
Array DXGetInvalidComponentArray(InvalidComponentHandle);
Error DXSetElementInvalid(InvalidComponentHandle, int);
Error DXSetElementValid(InvalidComponentHandle, int);
Error DXInvertValidity(InvalidComponentHandle);
Error DXSetAllValid(InvalidComponentHandle);
Error DXSetAllInvalid(InvalidComponentHandle);
int DXIsElementInvalid(InvalidComponentHandle, int);
int DXIsElementValid(InvalidComponentHandle, int);
int DXIsElementValidSequential(InvalidComponentHandle, int);
int DXIsElementInvalidSequential(InvalidComponentHandle, int);
int DXGetInvalidCount(InvalidComponentHandle);
int DXGetValidCount(InvalidComponentHandle);
Error DXInitGetNextInvalidElementIndex(InvalidComponentHandle);
Error DXInitGetNextValidElementIndex(InvalidComponentHandle);
int DXGetNextValidElementIndex(InvalidComponentHandle);
int DXGetNextInvalidElementIndex(InvalidComponentHandle);
Array DXForceInvalidArrayDependent(Array, Array);
#endif /* _DXI_INVALID_H_ */
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
|