/usr/include/geomview/reference.h is in libgeomview-dev 1.9.5-2.
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 | /* Copyright (C) 1992-1998 The Geometry Center
* Copyright (C) 1998-2000 Stuart Levy, Tamara Munzner, Mark Phillips
*
* This file is part of Geomview.
*
* Geomview is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* Geomview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Geomview; see the file COPYING. If not, write
* to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
* USA, or visit http://www.gnu.org.
*/
/* Authors: Charlie Gunn, Stuart Levy, Tamara Munzner, Mark Phillips */
#ifndef _GV_REFERENCE_H_
#define _GV_REFERENCE_H_
#include "ooglutil.h"
#include "dbllist.h"
/*
* Public definitions for Reference & Communications package
*/
#define REFERENCEFIELDS \
unsigned magic; \
int ref_count; \
DblListNode handles
typedef struct Ref {
REFERENCEFIELDS;
} Ref ;
#define REFCNT(obj) RefCount((Ref *)(obj))
#define REFINCR(obj) RefIncr((Ref *)(obj))
#define REFDECR(obj) RefDecr((Ref *)(obj))
#define REFGET(type, obj) (REFINCR((obj)), (type *)(obj))
#define REFPUT(obj) REFDECR(obj)
/* Initializes a Reference */
static inline void RefInit(Ref *ref, int magic)
{
ref->ref_count = 1;
ref->magic = magic;
DblListInit(&ref->handles);
}
/* Returns current ref count */
static inline int RefCount(Ref *ref)
{
return ref != NULL ? ref->ref_count : 0;
}
/* Increments count, returns object */
static inline int RefIncr(Ref *ref)
{
if (ref != NULL) {
return ++ref->ref_count;
} else {
return 0;
}
}
/* Decrements count, returns it */
static inline int RefDecr(Ref *ref)
{
if (ref == NULL) {
return 0;
}
if (--ref->ref_count < 0) {
OOGLError(1, "RefDecr: ref %x count %d < 0!", ref, ref->ref_count);
abort();
}
return ref->ref_count;
}
/* Returns magic number */
static inline int RefMagic(Ref *ref) {
return ref->magic;
}
#endif
/*
* Local Variables: ***
* c-basic-offset: 2 ***
* End: ***
*/
|