blob: 8d2b139d236c6cfa07966e4aa05f59582e621e5d [file] [log] [blame]
/*
*
* vcg.h
*
*/
/*
*
* Includes.
*
*/
#include "types.h"
#ifndef VCG_H
#define VCG_H
/*
*
* Defines.
*
*/
#define EMPTY 0
#define EMPTY_HALF_EMPTY 2
#define EMPTY_FULL 3
#define HALF_EMPTY 4
#define HALF_EMPTY_FULL 5
#define FULL 6
/*
*
* Types.
*
*/
typedef struct _constraintVCGType {
ulong top;
ulong bot;
ulong col;
ulong removed;
} constraintVCGType;
typedef struct _nodeVCGType {
constraintVCGType * netsAboveHook;
ulong netsAbove;
ulong netsAboveLabel;
ulong netsAboveReached;
constraintVCGType * netsBelowHook;
ulong netsBelow;
ulong netsBelowLabel;
ulong netsBelowReached;
} nodeVCGType;
/*
*
* Globals.
*
*/
#ifdef VCG_CODE
nodeVCGType * VCG;
constraintVCGType * storageRootVCG;
constraintVCGType * storageVCG;
ulong storageLimitVCG;
constraintVCGType * * removeVCG;
ulong removeTotalVCG;
ulong * SCC;
ulong totalSCC;
ulong * perSCC;
#else /* VCG_CODE */
extern nodeVCGType * VCG;
extern constraintVCGType * storageRootVCG;
extern constraintVCGType * storageVCG;
extern ulong storageLimitVCG;
extern constraintVCGType * * removeVCG;
extern ulong removeTotalVCG;
extern ulong * SCC;
extern ulong totalSCC;
extern ulong * perSCC;
#endif /* VCG_CODE */
/*
*
* Prototypes.
*
*/
#ifdef VCG_CODE
void
AllocVCG(void);
void
FreeVCG(void);
void
BuildVCG(void);
void
DFSClearVCG(nodeVCGType *);
void
DumpVCG(nodeVCGType *);
void
DFSAboveVCG(nodeVCGType *,
ulong);
void
DFSBelowVCG(nodeVCGType *,
ulong);
void
SCCofVCG(nodeVCGType *,
ulong *,
ulong *);
void
SCC_DFSAboveVCG(nodeVCGType *,
ulong,
ulong *);
void
SCC_DFSBelowVCG(nodeVCGType *,
ulong,
ulong);
void
DumpSCC(ulong *,
ulong *);
void
AcyclicVCG(void);
void
RemoveConstraintVCG(nodeVCGType *,
ulong *,
ulong *,
constraintVCGType * *);
ulong
ExistPathAboveVCG(nodeVCGType *,
ulong,
ulong);
void
LongestPathVCG(nodeVCGType *,
ulong);
ulong
DFSAboveLongestPathVCG(nodeVCGType *,
ulong);
ulong
DFSBelowLongestPathVCG(nodeVCGType *,
ulong);
ulong
VCV(nodeVCGType *,
ulong,
ulong,
ulong *);
#else /* VCG_CODE */
extern void
AllocVCG(void);
extern void
FreeVCG(void);
extern void
BuildVCG(void);
extern void
DFSClearVCG(nodeVCGType *);
extern void
DumpVCG(nodeVCGType *);
extern void
DFSAboveVCG(nodeVCGType *,
ulong);
extern void
DFSBelowVCG(nodeVCGType *,
ulong);
extern void
SCCofVCG(nodeVCGType *,
ulong *,
ulong *);
extern void
SCC_DFSAboveVCG(nodeVCGType *,
ulong,
ulong *);
extern void
SCC_DFSBelowVCG(nodeVCGType *,
ulong,
ulong);
extern void
DumpSCC(ulong *,
ulong *);
extern void
AcyclicVCG(void);
extern void
RemoveConstraintVCG(nodeVCGType *,
ulong *,
ulong *,
constraintVCGType * *);
extern ulong
ExistPathAboveVCG(nodeVCGType *,
ulong,
ulong);
extern void
LongestPathVCG(nodeVCGType *,
ulong);
extern ulong
DFSAboveLongestPathVCG(nodeVCGType *,
ulong);
extern ulong
DFSBelowLongestPathVCG(nodeVCGType *,
ulong);
extern ulong
VCV(nodeVCGType *,
ulong,
ulong,
ulong *);
#endif /* VCG_CODE */
#endif /* VCG_H */