// Emacs: -*- C++ -*-

//
//	Copyright 1993, Center for Computer Vision and Visualization,
//	University of Florida.  All rights reserved.
//

static char copyright[] = "Copyright 1993, Center for Computer Vision and Visualization,\nUniversity of Florida.  All rights reserved.\n";


static char UcharDI_rcsid[] = "$Id: closure.c,v 1.4 93/06/10 17:24:32 thoth Exp Locker: thoth $";

//
// $Log:	closure.c,v $
// Revision 1.4  93/06/10  17:24:32  thoth
// new placebos
// 
// Revision 1.3  93/05/27  11:36:33  thoth
// Copyright Notices
// 
// Revision 1.2  93/05/18  21:42:33  thoth
// *** empty log message ***
// 
// Revision 1.1  93/03/18  11:18:10  thoth
// Initial revision
// 

//
// workarounds for template closure generation problems.
//
#include "Array.h"
#include "ValueSet.h"
#include "BasePS.h"
#include "PredicatePS.h"
#include "IntPoint.h"
#include "FloatPoint.h"
#include "IntPointSet.h"
#include "IPSIter.h"
#include "SetStructure.h"
#include "PredicatePS.h"
#include "FloatPointSet.h"
#include "ImageDisplayProtocol.h"

class ostream;

IA_IntPointSet::IA_IntPointSet() {}
IA_IntPointSet::IA_IntPointSet(const IA_IntPoint&) {}
IA_IntPointSet::IA_IntPointSet(const IA_IntPoint&, const IA_IntPoint&) {}
IA_IntPointSet::IA_IntPointSet(unsigned, const IA_IntPoint*, unsigned) {}
IA_IntPointSet::IA_IntPointSet(const IA_PSPred<IA_IntPoint>&) { }
IA_IntPointSet::~IA_IntPointSet() {}
IA_IntPointSet operator&(const IA_IntPointSet&,const IA_IntPointSet&) { return IA_IntPointSet(); }
IA_IntPointSet operator/(const IA_IntPointSet&,const IA_IntPointSet&) { return IA_IntPointSet(); }
IA_IntPointSet operator^(const IA_IntPointSet&,const IA_IntPointSet&) { return IA_IntPointSet(); }
IA_IntPointSet operator|(const IA_IntPointSet&,const IA_IntPointSet&) { return IA_IntPointSet(); }
IA_IntPointSet intersect_with_structure (const IA_IntPointSet &, const IA_IntPointSet &, IA_SetStructure *)
{ return IA_IntPointSet(); }
IA_IntPointSet intersect_with_dualstruct (const IA_IntPointSet &, const IA_IntPointSet &, IA_SetStructure *)
{ return IA_IntPointSet(); }
IA_IntPointSet union_with_structure (const IA_IntPointSet &, const IA_IntPointSet &, IA_SetStructure *)
{ return IA_IntPointSet(); }

IA_IntPointSet operator+(const IA_IntPointSet&, const IA_IntPoint &) { return IA_IntPointSet(); }
IA_IntPointSet operator+(const IA_IntPointSet&, const IA_IntPointSet &) { return IA_IntPointSet(); }
IA_IntPointSet IA_BlackHole(unsigned) { return IA_IntPointSet(); }
IA_IntPointSet IA_WhiteHole(unsigned) { return IA_IntPointSet(); }

IA_IntPointSet& IA_IntPointSet::operator=(const IA_IntPointSet&) { return *this; }

IA_BaseIPSIter *IA_IPSIter::make_iter(const IA_IntPointSet&) { return 0; }

//

ostream & operator<<(ostream& o,const IA_IntPoint&) { return o; }

//

IA_ValueSet<float>::IA_ValueSet(const float* , unsigned) { }

int IA_ValueSet<float>::contains(float ) const { return 0; }

IA_ValueSet<int>::IA_ValueSet(const int * , unsigned) { }

int IA_ValueSet<int>::contains(int ) const { return 0; }

//

unsigned IA_BasePS<IA_IntPoint>::index(const IA_IntPoint&) const { return 0; }
IA_IntPoint IA_BasePS<IA_IntPoint>::index(unsigned) const { return IA_IntPoint(); }
void IA_BasePS<IA_IntPoint>::output(ostream&, unsigned) const {  }

unsigned IA_BasePS<IA_FloatPoint>::index(const IA_FloatPoint&) const { return 0; }
IA_FloatPoint IA_BasePS<IA_FloatPoint>::index(unsigned) const { return IA_FloatPoint(); }
void IA_BasePS<IA_FloatPoint>::output(ostream&, unsigned) const {  }

//


void IA_PSPred<IA_IntPoint>::output(ostream&,unsigned) const { }
void IA_PSPred<IA_FloatPoint>::output(ostream&,unsigned) const { }

char IA_PSPred<IA_IntPoint>::type_;
char IA_PSPred<IA_FloatPoint>::type_;

IA_FloatPointSet:: IA_FloatPointSet() {}
IA_FloatPointSet:: IA_FloatPointSet(const IA_PSPred<IA_FloatPoint>&) {}
IA_FloatPointSet:: IA_FloatPointSet(const IA_FloatPointSet&) {}
IA_FloatPointSet:: ~IA_FloatPointSet() {}
void IA_FloatPointSet:: associate(IA_BasePS<IA_FloatPoint> *) { }

const IA_SetStructure IA_SetStructure::SECOND_ONLY;
const IA_SetStructure IA_SetStructure::BOTH;
const IA_SetStructure IA_SetStructure::FIRST_ONLY;
IA_SetStructure::IA_SetStructure() {}
IA_SetStructure::IA_SetStructure( const IA_SetStructure&) {}
IA_SetStructure::~IA_SetStructure() {}
unsigned IA_SetStructure::nintervals() const { return 0; }
IA_ss_interval IA_SetStructure::retrieve_interval(unsigned) const { return *(IA_ss_interval*)0; }


IA_IntPoint::IA_IntPoint(const IA_IntPoint&) { }
IA_IntPoint::IA_IntPoint(int *, unsigned, int) { }
IA_IntPoint IA_IntPoint::operator+(int) const { return IA_IntPoint(); }
IA_IntPoint IA_IntPoint::operator+(const IA_IntPoint &) const { return IA_IntPoint(); }
IA_IntPoint IA_IntPoint::operator-(const IA_IntPoint &) const { return IA_IntPoint(); }
IA_IntPoint &IA_IntPoint::operator=(const IA_IntPoint&) { return *this; }
int IA_IntPointSet::boxy() const { return 0; }
void IA_IntPointSet::lookup_and_set(IA_BasePS<IA_IntPoint>*) { }

IA_FloatPoint::IA_FloatPoint(const IA_IntPoint&) { }

int IDP::PacketHeader::my_version;
IDP::LinkID IDP::WriteImage(IDP::LinkID temp, const char * , IDP::ImageType, unsigned, IA_Array<unsigned>,  const void *) {return temp;}

//

IA_Array<unsigned>::IA_Array(const IA_Array<unsigned>&) { }
IA_Array<unsigned>::IA_Array(unsigned) { }
unsigned& IA_Array<unsigned>::operator[](unsigned) { unsigned u; return u; }
unsigned IA_Array<unsigned>::operator[](unsigned) const { return 0; }

IA_Array<unsigned char>::IA_Array(unsigned char*,unsigned,int) { }
unsigned char& IA_Array<unsigned char>::operator[](unsigned) { unsigned char u; return u; }
unsigned char IA_Array<unsigned char>::operator[](unsigned) const { return 0; }

IA_Array<float>::IA_Array(float*,unsigned,int) { }
float& IA_Array<float>::operator[](unsigned) { float u; return u; }
float IA_Array<float>::operator[](unsigned) const { return 0; }

IA_Array<int>::IA_Array(int*,unsigned,int) { }
int& IA_Array<int>::operator[](unsigned) { int u; return u; }
int IA_Array<int>::operator[](unsigned) const { return 0; }

IA_Array<IA_ss_interval>::IA_Array(const IA_Array<IA_ss_interval>&) { }
IA_Array<IA_ss_interval>::IA_Array(unsigned) { }
unsigned IA_Array<IA_ss_interval>::lengthen(unsigned) { return 0; }
IA_ss_interval& IA_Array<IA_ss_interval>::operator[](unsigned) { IA_ss_interval u; return u; }
IA_ss_interval IA_Array<IA_ss_interval>::operator[](unsigned) const { return IA_ss_interval(); }

IA_ValueSet<float>::IA_ValueSet(float) { }
IA_ValueSet<int>::IA_ValueSet(int) { }
IA_ValueSet<unsigned char>::IA_ValueSet(const unsigned char *,unsigned) { }
IA_ValueSet<unsigned char>::IA_ValueSet(unsigned char) { }
int IA_ValueSet<unsigned char>::contains(unsigned char) const { return 0; }


//

void ia_throw(IA::Error, char *, int) { }
