/**
	\file "ResInt.h"
	Procedures internal to the resist module.  
	$Id: ResInt.h,v 1.2 2006/02/08 03:48:12 fang Exp $
 */

#ifndef	__RESIS_RESINT_H__
#define	__RESIS_RESINT_H__

#include <stdio.h>
#include "resis/resis_types.h"
#include "utils/geometry_types.h"
#include "database/database_types.h"
#include "tiles/tile_types.h"

extern void ResMergeNodes(resNode*, resNode*, resNode**, resNode**);
extern void ResDeleteResPointer(resNode*, resResistor*);
extern void ResEliminateResistor(resResistor*, resResistor**);
extern void ResCleanNode(resNode*, int, resNode**, resNode**);
extern void ResAddToQueue(resNode*, resNode**);
extern void ResRemoveFromQueue(resNode*, resNode**);
extern void ResDoneWithNode(resNode*);
extern int ResFracture(Plane*, Rect*);
extern void ResPreProcessTransistors(ResTranTile*, resTransistor*, CellDef*);
extern bool ResExtractNet(ResFixPoint*, ResGlobalParams*);
extern void ResPrintNodeList(FILE*, resNode*);
extern void ResPrintResistorList(FILE*, resResistor*);
extern void ResPrintTransistorList(FILE*, resTransistor*);
extern int ResReadSim(char*, int (*fetproc)(), int (*capproc)(), 
	int (*resproc)(), int (*attrproc)(), int(*mergeproc)());
extern int ResReadNode(char*);
extern void ResPrintStats(ResGlobalParams*, char*);
extern int ResDoSimplify(float, float, ResGlobalParams*);
extern void ResCleanUpEverything(void);
extern void ResPrintExtTran(FILE*, RTran*);
extern void ResPrintExtNode(FILE*, resNode*, char*);
extern void ResPrintExtRes(FILE*, resResistor*, char*);
extern void ResDoContacts(ResContactPoint*, resNode**, resResistor**);
extern void ResNewSDTransistor(Tile*, Tile*, int, int, int, resNode**);
extern void ResProcessJunction(Tile*, Tile*, int, int, resNode**);
extern int ResCalcTileResistance(Tile*, tileJunk*, resNode**, resNode**);

#endif	/* __RESIS_RESINT_H__ */
