/*
 * gcrInt.h --
 *
 *	Prototypes for routines internal to the gcr module.  
 *
 *     *********************************************************************
 *     * Copyright (C) 1985, 1990 Regents of the University of California. *
 *     * Permission to use, copy, modify, and distribute this              *
 *     * software and its documentation for any purpose and without        *
 *     * fee is hereby granted, provided that the above copyright          *
 *     * notice appear in all copies.  The University of California        *
 *     * makes no representations about the suitability of this            *
 *     * software for any purpose.  It is provided "as is" without         *
 *     * express or implied warranty.  Export of this software outside     *
 *     * of the United States of America may require an export license.    *
 *     *********************************************************************
 *
 *
 * rcsid "$Header: /ufs/repository/magic/gcr/gcr.h,v 1.1.1.1.2.1 2005/11/26 07:1
6:57 fang Exp $"
 */

#ifndef	__GCR_GCRINT_H__
#define	__GCR_GCRINT_H__

#include "gcr/gcr_types.h"

/* from "gcr/gcrInit.c" */
extern void gcrUnlinkPin(register GCRPin*);
extern void gcrBuildNets(GCRChannel*);
extern void gcrSetEndDist(register GCRChannel*);
extern int gcrDensity(GCRChannel*);
extern void gcrInitCol(GCRChannel*, GCRPin*);

/* from "gcr/gcrColl.c" */
extern void gcrEvalPat(GCRColEl** col, int freed, int size);
extern void gcrInitCollapse(int);
extern void gcrCollapse(GCRColEl**, int, int, int, int);
extern void gcrPickBest( GCRChannel*);
extern void gcrReduceRange(GCRColEl*, int); 

/* from "gcr/gcrDebug.c" */
extern void gcrDumpResult(GCRChannel *ch, bool showResult);
extern void gcrPrintCol(GCRChannel *ch, int i, int showResult);
extern void gcrCheckCol(GCRChannel*, int, char*);

/* from "gcr/gcrEdge.c" */
extern void gcrWanted(GCRChannel*, int, int);
extern void gcrMarkWanted(GCRChannel*);
extern void gcrUncollapse(GCRChannel*, GCRColEl**, int, int, int, int); 

/* from "gcr/gcrFeasible.c" */
extern void gcrFeasible(GCRChannel*, int);

/* from "gcr/gcrFlags.c" */
extern void gcrSetFlags(GCRChannel*);

/* from "gcr/gcrLib.c" */
extern bool gcrVertClear(GCRColEl*, int, int);
extern void gcrMoveTrack(GCRColEl*, GCRNet*, int, int);
extern bool gcrBlocked(GCRColEl*, int, GCRNet*, int);
extern void gcrLinkTrack(GCRColEl*, GCRNet*, int, int);
extern void gcrShellSort(register GCRNet**, int, bool);

/* from "gcr/gcrRiver.c" */
extern bool gcrRiverRoute(GCRChannel*);

/* from "gcr/gcrUnsplit.c" */
extern void gcrVacate(GCRChannel*, int);
extern void gcrMakeRuns(GCRChannel*, int, GCRNet**, int, bool);

#endif	/* __GCR_GCRINT_H__ */

