head	1.17;
access;
symbols
	r2_1:1.14
	r2_0:1.14
	r1_1_beta:1.12
	r1_1_alpha:1.11
	r1_0:1.11
	r0_11:1.10
	r0_10:1.9
	r0_9:1.8
	Eglin_alpha_1:1.4;
locks; strict;
comment	@// @;


1.17
date	94.11.14.16.08.45;	author thoth;	state Exp;
branches;
next	1.16;

1.16
date	94.10.04.18.27.26;	author thoth;	state Exp;
branches;
next	1.15;

1.15
date	94.10.04.18.14.56;	author thoth;	state Exp;
branches;
next	1.14;

1.14
date	94.08.22.15.12.29;	author thoth;	state Exp;
branches;
next	1.13;

1.13
date	94.08.18.23.39.28;	author thoth;	state Exp;
branches;
next	1.12;

1.12
date	94.07.25.16.58.52;	author thoth;	state Exp;
branches;
next	1.11;

1.11
date	94.05.08.19.37.45;	author thoth;	state Exp;
branches;
next	1.10;

1.10
date	94.03.14.15.40.13;	author thoth;	state Exp;
branches;
next	1.9;

1.9
date	94.01.31.16.39.34;	author thoth;	state Exp;
branches;
next	1.8;

1.8
date	93.11.17.18.07.37;	author thoth;	state Exp;
branches;
next	1.7;

1.7
date	93.10.20.15.52.30;	author thoth;	state Exp;
branches;
next	1.6;

1.6
date	93.09.15.12.40.52;	author thoth;	state Exp;
branches;
next	1.5;

1.5
date	93.08.08.13.22.04;	author thoth;	state Exp;
branches;
next	1.4;

1.4
date	93.06.10.17.15.17;	author thoth;	state Exp;
branches;
next	1.3;

1.3
date	93.05.26.16.57.55;	author thoth;	state Exp;
branches;
next	1.2;

1.2
date	93.05.19.14.46.11;	author thoth;	state Exp;
branches;
next	1.1;

1.1
date	93.05.10.08.34.51;	author thoth;	state Exp;
branches;
next	;


desc
@build the closure of the library.
@


1.17
log
@Needed vtbl from BaseSet<Point<double>>
@
text
@// Emacs: -*- C++ -*-

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

//
// $Log: closure.c,v $
// Revision 1.16  1994/10/04  18:27:26  thoth
// Had the wrong placebo for ValueSet::dummy.
//
// Revision 1.15  1994/10/04  18:14:56  thoth
// Prevent double-declaration in the defmap.
// Add new placebos for BaseSet and the new Set iterator of ValueSet.
//
// Revision 1.14  1994/08/22  15:12:29  thoth
// derangement had been redone.  New placebo installed.
//
// Revision 1.13  1994/08/18  23:39:28  thoth
// DOS-inspired filename rework
//
// Revision 1.12  1994/07/25  16:58:52  thoth
// \Name sanitization
//
// Revision 1.11  1994/05/08  19:37:45  thoth
// New intpointset decomposition capability.
//
// Revision 1.10  1994/03/14  15:40:13  thoth
// ValueSet is no longer public.
//

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

#include "ClosurePS.h"
#include "IntPoint.h"
#include "DblPoint.h"
#include "BaseSet.h"	// prevent double-declaration in ptrepository/defmap
#include "../valueset/ValueSet.h"
#include "IntPS.h"
#include "PSIter.h"

template <class P>
class empty_ps:public IA_ClosurePS<P> {
  public:
    IA_ClosurePS<P> *clone_self() const;
    int contains(const P &ip) const;
    empty_ps(unsigned dim) :IA_ClosurePS<P>(dim) {};
};

template <class P>
IA_ClosurePS<P> *empty_ps<P>::clone_self() const
{
    return new empty_ps<P>(dimen);
}

template <class P>
int empty_ps<P>::contains(const P &) const
{
    return 0;
}

empty_ps<IA_Point<int> >	tempI(2);
empty_ps<IA_Point<double> >	tempF(2);

void exercise(const IA_Set<IA_Point<int> > &ps)
{
    IA_PSIter<IA_Point<int> >	iter1,
				iter2(ps);
    IA_PSIter<IA_Point<int> >	iter3(iter1);

    iter1 = iter2;
    iter3 = iter2.domain();

    IA_Point<int> ip;
    if (iter1(ip))
	iter1.reset();

    IA_SetStructure	ss1;
    IA_SetStructure	ss2(ss1);
    ss1 = ss2;
    (void)(ss1 == ss2);
    (void)(ss1 != ss2);
    ss1.add_interval(0, ss1);
    ss1.retrieve_interval(0);
    ss1.nintervals();
    ss1.ensure_space(0);
    

    IA_PointSetDecomposition	psd;
    IA_PointSetDecomposition	psd2(psd);
    psd2 = psd;
    IA_decomp_frag	whatever;
    whatever = whatever;
    whatever = psd.get_frag(0);
}


void exercise(const IA_Set<IA_Point<double> > &ps)
{
    IA_PSIter<IA_Point<double> >	iter1,
	iter2(ps);
    IA_PSIter<IA_Point<double> >	iter3(iter1);

    iter1 = iter2;
    iter3 = iter2.domain();

    IA_Point<double> ip;
    if (iter1(ip))
	iter1.reset();
}


// placate the stupid ptlink

// so you need a BaseSet vtbl?
int IA_BaseSet<IA_Point<double> >::extensive() const { return 0; }

unsigned IA_BaseSet<IA_Point<double> >::card() const { return 0; }
IA_Point<double> IA_BaseSet<IA_Point<double> >::min() const { return IA_Point<double>(); }
IA_Point<double> IA_BaseSet<IA_Point<double> >::max() const { return IA_Point<double>(); }
IA_Point<double> IA_BaseSet<IA_Point<double> >::choice() const { return IA_Point<double>(); }
int IA_BaseSet<IA_Point<double> >::empty() const { return 0; }
IA_BaseSetIter<IA_Point<double> >* IA_BaseSet<IA_Point<double> >::iterator() const { return 0; }


//

IA_ValueSet<IA_Point<double> >::IA_ValueSet(IA_Point<double>) { }

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


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

IA_BaseSetIter<IA_Point<double> > *
IA_ValueSet<IA_Point<double> >::iterator() const {
  return 0;
}

char IA_ValueSet<IA_Point<double> >::dummy;

//


ostream &operator<<(ostream &o, const IA_Point<int>&) {
  return o;
}

ostream &operator<<(ostream &o, const IA_ValueSet<IA_Point<double> >&) {
  return o;
};


//
//
//

int pointcmp(const IA_Point<int>&, const IA_Point<int>&) {
  return 0;
}
int pointcmp(const IA_Point<double>&, const IA_Point<double>&) {
  return 0;
}

IA_Point<double>::IA_Point(const IA_Point<double>&) { }
IA_Point<double>& IA_Point<double>::operator= (const IA_Point<double>&) { return *this; }

IA_Point<int> IA_Point<int>:: operator+(const IA_Point<int>&) const { return IA_Point<int>(); }
IA_Point<int> IA_Point<int>:: operator-(const IA_Point<int>&) const { return IA_Point<int>(); }
int IA_Point<int>::operator==(const IA_Point<int>&) const { return 0; }
int IA_Point<int>::operator<=(const IA_Point<int>&) const { return 0; }

IA_Point<int> inf(const IA_Point<int>&, const IA_Point<int>&) { return IA_Point<int>(); }
IA_Point<int> sup(const IA_Point<int>&, const IA_Point<int>&) { return IA_Point<int>(); }
IA_Point<int>::IA_Point(const IA_Point<int>&) { }
IA_Point<int>& IA_Point<int>::operator= (const IA_Point<int>&) { return *this; }

IA_Point<int> cdr(const IA_Point<int>&, int) { return IA_Point<int>(); }
IA_Point<int>::IA_Point(int*, unsigned, int) {}
IA_Point<int> concat(int, const IA_Point<int>&) { return IA_Point<int>(); }

IA_Point<int> derange(const IA_Point<int> &p,unsigned, unsigned) {
    return p;
}

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

@


1.16
log
@Had the wrong placebo for ValueSet::dummy.
@
text
@d10 3
d117 1
@


1.15
log
@Prevent double-declaration in the defmap.
Add new placebos for BaseSet and the new Set iterator of ValueSet.
@
text
@d10 4
d139 1
a139 1
char IA_ValueSet<int>::dummy;
@


1.14
log
@derangement had been redone.  New placebo installed.
@
text
@d10 3
d31 1
d109 12
d130 5
d136 2
@


1.13
log
@DOS-inspired filename rework
@
text
@d10 3
d154 2
a155 2
IA_Point<int> IA_Point<int>::derange(unsigned, unsigned) const {
    return IA_Point<int>();
@


1.12
log
@\Name sanitization
@
text
@d10 3
d24 1
a24 1
#include "DoublePoint.h"
d26 1
a26 1
#include "IntPointSet.h"
@


1.11
log
@New intpointset decomposition capability.
@
text
@d10 3
d21 1
a21 1
#include "FloatPoint.h"
d47 1
a47 1
empty_ps<IA_FloatPoint>	tempF(2);
d49 1
a49 1
void exercise(const IA_IntPointSet &ps)
d51 1
a51 1
    IA_PSIter<IA_IntPoint>	iter1,
d53 1
a53 1
    IA_PSIter<IA_IntPoint>	iter3(iter1);
d58 1
a58 1
    IA_IntPoint ip;
a80 1
typedef IA_PSIter<IA_FloatPoint> IA_FPSIter;
d82 1
a82 1
void exercise(const IA_FloatPointSet &ps)
d84 1
a84 1
    IA_FPSIter	iter1,
d86 1
a86 1
    IA_FPSIter	iter3(iter1);
d91 1
a91 1
    IA_FloatPoint ip;
d99 1
a99 1
IA_ValueSet<IA_FloatPoint>::IA_ValueSet(IA_FloatPoint) { }
d101 1
a101 1
IA_ValueSet<IA_FloatPoint>::IA_ValueSet(const IA_FloatPoint*, unsigned) { }
d104 1
a104 1
int IA_ValueSet<IA_FloatPoint>::contains(IA_FloatPoint) const {
d115 1
a115 1
ostream &operator<<(ostream &o, const IA_ValueSet<IA_FloatPoint>&) {
@


1.10
log
@ValueSet is no longer public.
@
text
@d9 4
a12 1
// $Log$
d58 18
@


1.9
log
@derangement is used in transpose.
@
text
@d8 3
d16 1
a16 1
#include "ValueSet.h"
d84 2
@


1.8
log
@IPSIter is now PSIter<IntPoint>
Pointcmp is now pointcmp
@
text
@d120 4
@


1.7
log
@New naming scheme.  Closures are named Closure.
@
text
@d15 1
a15 1
#include "IPSIter.h"
d42 3
a44 3
    IA_IPSIter	iter1,
	iter2(ps);
    IA_IPSIter	iter3(iter1);
d96 1
a96 1
int Pointcmp(const IA_Point<int>&, const IA_Point<int>&) {
d99 1
a99 1
int Pointcmp(const IA_Point<double>&, const IA_Point<double>&) {
@


1.6
log
@*** empty log message ***
@
text
@d10 1
a10 1
#include "PredicatePS.h"
d18 1
a18 1
class empty_ps:public IA_PSPred<P> {
d20 1
a20 1
    IA_PSPred<P> *clone_self() const;
d22 1
a22 1
    empty_ps(unsigned dim) :IA_PSPred<P>(dim) {};
d26 1
a26 1
IA_PSPred<P> *empty_ps<P>::clone_self() const
@


1.5
log
@Parametrization of the pointsets on the point type using
template specialization.
Incomplete FloatPointSet instantiation.
@
text
@d99 3
@


1.4
log
@more placebos.
@
text
@d14 2
d37 1
a37 1
empty_ps<IA_IntPoint>	tempI(2);
d40 31
d83 1
a83 1
ostream &operator<<(ostream &o, const IA_IntPoint&) {
d96 1
a96 1
int Pointcmp(const IA_IntPoint&, const IA_IntPoint&) {
d100 2
a101 2
IA_FloatPoint::IA_FloatPoint(const IA_FloatPoint&) { }
IA_FloatPoint& IA_FloatPoint::operator= (const IA_FloatPoint&) { return *this; }
d103 4
a106 4
IA_IntPoint IA_IntPoint:: operator+(const IA_IntPoint&) const { return IA_IntPoint(); }
IA_IntPoint IA_IntPoint:: operator-(const IA_IntPoint&) const { return IA_IntPoint(); }
int IA_IntPoint::operator==(const IA_IntPoint&) const { return 0; }
int IA_IntPoint::operator<=(const IA_IntPoint&) const { return 0; }
d108 4
a111 4
IA_IntPoint inf(const IA_IntPoint&, const IA_IntPoint&) { return IA_IntPoint(); }
IA_IntPoint sup(const IA_IntPoint&, const IA_IntPoint&) { return IA_IntPoint(); }
IA_IntPoint::IA_IntPoint(const IA_IntPoint&) { }
IA_IntPoint& IA_IntPoint::operator= (const IA_IntPoint&) { return *this; }
d113 3
a115 3
IA_IntPoint cdr(const IA_IntPoint&, int) { return IA_IntPoint(); }
IA_IntPoint::IA_IntPoint(int*, unsigned, int) {}
IA_IntPoint concat(int, const IA_IntPoint&) { return IA_IntPoint(); }
d118 1
@


1.3
log
@Copyright Notices
@
text
@d42 1
d44 1
d57 28
@


1.2
log
@*** empty log message ***
@
text
@d1 9
@


1.1
log
@Initial revision
@
text
@d4 1
d28 18
@
