head	1.28;
access;
symbols
	r2_1:1.6
	r2_0:1.3;
locks
	thoth:1.28; strict;
comment	@// @;


1.28
date	95.01.16.22.10.25;	author fjsoria;	state Exp;
branches;
next	1.27;

1.27
date	94.12.28.21.45.45;	author ljr;	state Exp;
branches;
next	1.26;

1.26
date	94.12.22.23.54.13;	author ljr;	state Exp;
branches;
next	1.25;

1.25
date	94.12.22.23.48.32;	author ljr;	state Exp;
branches;
next	1.24;

1.24
date	94.12.22.23.35.49;	author ljr;	state Exp;
branches;
next	1.23;

1.23
date	94.12.22.23.32.59;	author ljr;	state Exp;
branches;
next	1.22;

1.22
date	94.12.13.18.15.24;	author fjsoria;	state Exp;
branches;
next	1.21;

1.21
date	94.12.12.20.20.17;	author fjsoria;	state Exp;
branches;
next	1.20;

1.20
date	94.12.12.15.37.28;	author fjsoria;	state Exp;
branches;
next	1.19;

1.19
date	94.12.08.17.04.12;	author ljr;	state Exp;
branches;
next	1.18;

1.18
date	94.12.06.18.41.33;	author gmt;	state Exp;
branches;
next	1.17;

1.17
date	94.12.01.15.43.37;	author fjsoria;	state Exp;
branches;
next	1.16;

1.16
date	94.11.10.19.14.15;	author ljr;	state Exp;
branches;
next	1.15;

1.15
date	94.11.10.18.48.35;	author ljr;	state Exp;
branches;
next	1.14;

1.14
date	94.10.31.18.52.11;	author fjsoria;	state Exp;
branches;
next	1.13;

1.13
date	94.10.17.19.09.02;	author fjsoria;	state Exp;
branches;
next	1.12;

1.12
date	94.10.07.17.21.07;	author fjsoria;	state Exp;
branches;
next	1.11;

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

1.10
date	94.09.28.22.35.35;	author gmt;	state Exp;
branches;
next	1.9;

1.9
date	94.09.27.19.41.09;	author fjsoria;	state Exp;
branches;
next	1.8;

1.8
date	94.09.27.01.39.49;	author gmt;	state Exp;
branches;
next	1.7;

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

1.6
date	94.09.13.21.19.25;	author fjsoria;	state Exp;
branches;
next	1.5;

1.5
date	94.09.13.19.07.07;	author ljr;	state Exp;
branches;
next	1.4;

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

1.3
date	94.08.17.01.59.51;	author gmt;	state Exp;
branches;
next	1.2;

1.2
date	94.08.17.01.57.01;	author gmt;	state Exp;
branches;
next	1.1;

1.1
date	94.08.12.21.13.59;	author ljr;	state Exp;
branches;
next	;


desc
@Initial revision
@


1.28
log
@added gaurd for dummy_op
@
text
@// Emacs -*- C++ -*-

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

// $Log: compat.h,v $
// Revision 1.27  1994/12/28  21:45:45  ljr
// Doesn't define __CFRONT__ if appropriate, anymore, as per jnw.
//
// Revision 1.26  1994/12/22  23:54:13  ljr
// Added pid_t typedef for IA_NEED_TYPES.
//
// Revision 1.25  1994/12/22  23:48:32  ljr
// Now defines __CFRONT__ if not using BC++, G++, or SC++, as per jnw.
//
// Revision 1.24  1994/12/22  23:35:49  ljr
// Defined __NO_FRIEND_TEMPLATE_SUPPORT for BC++.
//
// Revision 1.23  1994/12/22  23:32:59  ljr
// Defined IA_NEED_CUSTOM_RAND48_H for BC++ and G++.
//
// Revision 1.22  1994/12/13  18:15:24  fjsoria
// and external reference to mktemp C system call
//
// Revision 1.21  1994/12/12  20:20:17  fjsoria
// added __BROKEN_TYPE_CONVERSION for g++
// some simple conversions are not working
// ex. IA_Bit to Int found in Bit.h
//
// Revision 1.20  1994/12/12  15:37:28  fjsoria
// added __NO_FRIEND_TEMPLATE_SUPPORT for image
//
// Revision 1.19  1994/12/08  17:04:12  ljr
// Defined IA_BCPP_CONCAT_OVERLOAD_RESOLUTION for BC++.
//
// Revision 1.18  1994/12/06  18:41:33  gmt
// Added IA_NO_CONSTRUCTOR_ON_RETURN.
//
// Revision 1.17  1994/12/01  15:43:37  fjsoria
// changed misleading gaurd fron NO_INLINE_DESTRUCTORS to
// NO_OOUTLINE_DESTRUCTORS
//
// Revision 1.16  1994/11/10  19:14:15  ljr
// Defined IA_NO_RCS_STATIC_DATA for G++.
//
// Revision 1.15  1994/11/10  18:48:35  ljr
// Defined IA_NO_RCS_STATIC_DATA for BC++.
//
// Revision 1.14  1994/10/31  18:52:11  fjsoria
// added gaurds for #include IntPS DblPs found in Set.h
//
// Revision 1.13  1994/10/17  19:09:02  fjsoria
// added IIPRI
//
// Revision 1.12  1994/10/07  17:21:07  fjsoria
// *** empty log message ***
//
// Revision 1.11  1994/10/03  19:49:31  thoth
// g++ std library has Complex, not complex.
// Symantec has problems with nested types in
// a function signature.
//
// Revision 1.10  1994/09/28  22:35:35  gmt
// Added define "NO_VOLATILE_FUNCTIONS"
//
// Revision 1.9  1994/09/27  19:41:09  fjsoria
// g++ v2.6 does not support non-inlined destructors
// added __NO_INLINE_DESTRUCTORS
//
// Revision 1.8  1994/09/27  01:39:49  gmt
// SC++ does not handle automatic autoinstantiation of static data, so
// define IA_NO_AUTOINST_OF_STATIC_DATA.
//
// Revision 1.7  1994/09/23  15:46:44  thoth
// Functions were in the library, but just weren't in the header files.
//
// Revision 1.6  1994/09/13  21:19:25  fjsoria
// added ansi compatibility for math.h for g++ v2.6
//
// Revision 1.5  1994/09/13  19:07:07  ljr
// changed to #define IA_NO_TEMPS_IN_CONDITIONAL_EXPRS for BC++
//
// Revision 1.4  1994/09/12  23:32:33  thoth
// screwy new symbol for g++ bug.
//
// Revision 1.3  1994/08/17  01:59:51  gmt
// Added log and id comments for RCS stuff.
//

// $Id: compat.h,v 1.27 1994/12/28 21:45:45 ljr Exp fjsoria $

#ifndef IA_compat_h_
#define IA_compat_h_

/* first section.

   Based on what compiler you have, turn on/off various symbols to
control woejus hack workarounds.

*/

#define NO_INST_TEMPLATE 

#ifdef __GNUC__

#undef NO_INST_TEMPLAT
#define IA_NO_NESTED_ENUMS
#define __NO_OUTLINE_DESTRUCTORS
#define __NO_FRIEND_TEMPLATE_SUPPORT
#define __BROKEN_TYPE_CONVERSION
#define IA_UNRESOLVED_OPERATOR
//#define IA_PRII
#ifdef sun
// g++ still has a few problems

// bloody broken includes
extern "C" {
    double aint(double);
    int nint(double);
    double anint(double);
    int irint(double);
    char *mktemp(char *); // used in UchartDI.c and BitDI.c
}

#endif // sun

#define IA_NO_AUTOINST_OF_STATIC_DATA
class Complex;
typedef Complex complex;	// gotta standardize on something.

#define IA_NO_RCS_STATIC_DATA
#define IA_NEED_CUSTOM_RAND48_H

#endif // __GNUC__

#ifdef __BCPLUSPLUS__
#define IA_NEED_TYPES
#define IA_NEED_AINT
#define IA_NEED_NINT
#define IA_NEED_ANINT
#define IA_NEED_RINT
#define IA_NEED_IRINT
#define IA_NO_TEMPS_IN_CONDITIONAL_EXPRS
#define IA_NO_VOLATILE_FUNCTIONS
#define IA_NO_RCS_STATIC_DATA
#define IA_BCPP_CONCAT_OVERLOAD_RESOLUTION
#define IA_NEED_CUSTOM_RAND48_H
#define __NO_FRIEND_TEMPLATE_SUPPORT
#endif

#ifdef __SC__
#define IA_NEED_TYPES
#define IA_NEED_AINT
#define IA_NEED_NINT
#define IA_NEED_ANINT
#define IA_NEED_RINT
#define IA_NEED_IRINT
#define IA_NO_VOLATILE_FUNCTIONS

#define IA_NO_NESTED_ENUMS

#define IA_NO_CONSTRUCTOR_ON_RETURN

#pragma template_access extern

#define IA_NO_AUTOINST_OF_STATIC_DATA

#endif // __SC__

/*
   Second section.

  Based on symbols defined in the compiler-dependent section above,
perform varios disgusting hacks to work around bustedness in various
compilers.

 */


#ifndef IA_NO_VOLATILE_FUNCTIONS
#define VOL_F
#else
#define VOL_F volatile
#endif

#ifdef IA_NEED_TYPES
typedef unsigned char u_char;
typedef int pid_t;
#else
#include <sys/types.h>
#endif

extern "C" {

#ifdef IA_NEED_AINT
double aint(double x);
#endif

#ifdef IA_NEED_NINT
int nint(double x);
#endif

#ifdef IA_NEED_ANINT
double anint(double x);
#endif

#ifdef IA_NEED_RINT
double rint(double x);
#endif

#ifdef IA_NEED_IRINT
int irint(double x);
#endif

}

#endif // IA_compat_h_
@


1.27
log
@Doesn't define __CFRONT__ if appropriate, anymore, as per jnw.
@
text
@d7 3
d90 1
a90 1
// $Id: compat.h,v 1.26 1994/12/22 23:54:13 ljr Exp ljr $
d111 1
@


1.26
log
@Added pid_t typedef for IA_NEED_TYPES.
@
text
@d7 3
d87 1
a87 1
// $Id: compat.h,v 1.25 1994/12/22 23:48:32 ljr Exp ljr $
a97 4

#ifndef __BCPLUSPLUS__ || __GNUC__ || __SC__
#define __CFRONT__
#endif
@


1.25
log
@Now defines __CFRONT__ if not using BC++, G++, or SC++, as per jnw.
@
text
@d7 3
d84 1
a84 1
// $Id: compat.h,v 1.24 1994/12/22 23:35:49 ljr Exp ljr $
d185 1
@


1.24
log
@Defined __NO_FRIEND_TEMPLATE_SUPPORT for BC++.
@
text
@d7 3
d81 1
a81 1
// $Id: compat.h,v 1.23 1994/12/22 23:32:59 ljr Exp ljr $
d92 5
@


1.23
log
@Defined IA_NEED_CUSTOM_RAND48_H for BC++ and G++.
@
text
@d7 3
d78 1
a78 1
// $Id: compat.h,v 1.22 1994/12/13 18:15:24 fjsoria Exp ljr $
d134 1
@


1.22
log
@and external reference to mktemp C system call
@
text
@d7 3
d75 1
a75 1
// $Id: compat.h,v 1.21 1994/12/12 20:20:17 fjsoria Exp fjsoria $
d115 1
d130 1
@


1.21
log
@added __BROKEN_TYPE_CONVERSION for g++
some simple conversions are not working
ex. IA_Bit to Int found in Bit.h
@
text
@d7 5
d72 1
a72 1
// $Id: compat.h,v 1.20 1994/12/12 15:37:28 fjsoria Exp fjsoria $
d102 1
a102 1

@


1.20
log
@added __NO_FRIEND_TEMPLATE_SUPPORT for image
@
text
@d7 3
d67 1
a67 1
// $Id: compat.h,v 1.19 1994/12/08 17:04:12 ljr Exp fjsoria $
d86 1
@


1.19
log
@Defined IA_BCPP_CONCAT_OVERLOAD_RESOLUTION for BC++.
@
text
@d7 3
d64 1
a64 1
// $Id: compat.h,v 1.18 1994/12/06 18:41:33 gmt Exp ljr $
d82 1
a82 1

@


1.18
log
@Added IA_NO_CONSTRUCTOR_ON_RETURN.
@
text
@d7 3
d61 1
a61 1
// $Id: compat.h,v 1.17 1994/12/01 15:43:37 fjsoria Exp gmt $
d113 1
@


1.17
log
@changed misleading gaurd fron NO_INLINE_DESTRUCTORS to
NO_OOUTLINE_DESTRUCTORS
@
text
@d7 4
d58 1
a58 1
// $Id: compat.h,v 1.16 1994/11/10 19:14:15 ljr Exp fjsoria $
d122 2
@


1.16
log
@Defined IA_NO_RCS_STATIC_DATA for G++.
@
text
@d7 3
d54 1
a54 1
// $Id: compat.h,v 1.15 1994/11/10 18:48:35 ljr Exp ljr $
d71 1
a71 1
#define __NO_INLINE_DESTRUCTORS
@


1.15
log
@Defined IA_NO_RCS_STATIC_DATA for BC++.
@
text
@d7 3
d51 1
a51 1
// $Id: compat.h,v 1.14 1994/10/31 18:52:11 fjsoria Exp ljr $
d88 2
@


1.14
log
@added gaurds for #include IntPS DblPs found in Set.h
@
text
@d7 3
d48 1
a48 1
// $Id: compat.h,v 1.13 1994/10/17 19:09:02 fjsoria Exp fjsoria $
d97 1
@


1.13
log
@added IIPRI
@
text
@d7 3
d45 1
a45 1
// $Id: compat.h,v 1.12 1994/10/07 17:21:07 fjsoria Exp fjsoria $
d56 1
d59 2
d63 1
@


1.12
log
@*** empty log message ***
@
text
@d7 3
d42 1
a42 1
// $Id: compat.h,v 1.11 1994/10/03 19:49:31 thoth Exp fjsoria $
d55 1
a55 1

d57 1
@


1.11
log
@g++ std library has Complex, not complex.
Symantec has problems with nested types in
a function signature.
@
text
@d7 5
d39 1
a39 1
// $Id: compat.h,v 1.10 1994/09/28 22:35:35 gmt Exp thoth $
d69 1
@


1.10
log
@Added define "NO_VOLATILE_FUNCTIONS"
@
text
@d7 3
d34 1
a34 1
// $Id: compat.h,v 1.9 1994/09/27 19:41:09 fjsoria Exp gmt $
d58 1
d64 1
d87 2
@


1.9
log
@g++ v2.6 does not support non-inlined destructors
added __NO_INLINE_DESTRUCTORS
@
text
@d7 4
d31 1
a31 1
// $Id: compat.h,v 1.8 1994/09/27 01:39:49 gmt Exp fjsoria $
d71 1
d81 1
d98 6
@


1.8
log
@SC++ does not handle automatic autoinstantiation of static data, so
define IA_NO_AUTOINST_OF_STATIC_DATA.
@
text
@d7 4
d27 1
a27 1
// $Id: compat.h,v 1.7 1994/09/23 15:46:44 thoth Exp gmt $
d40 2
@


1.7
log
@Functions were in the library, but just weren't in the header files.
@
text
@d7 3
d23 1
a23 1
// $Id: compat.h,v 1.6 1994/09/13 21:19:25 fjsoria Exp thoth $
d72 3
@


1.6
log
@added ansi compatibility for math.h for g++ v2.6
@
text
@d7 3
d20 1
a20 1
// $Id: compat.h,v 1.5 1994/09/13 19:07:07 ljr Exp fjsoria $
d31 18
a48 6
#if defined(__GNUC__) && defined(__cplusplus) && defined(sun)
#define IA_NEED_AINT
#define IA_NEED_NINT
#define IA_NEED_ANINT
#define IA_NEED_IRINT
#endif
a70 5
#ifdef __GNUC__
// g++ still has a few problems
#define IA_NO_AUTOINST_OF_STATIC_DATA
#endif // __GNUC__

d87 2
d108 2
@


1.5
log
@changed to #define IA_NO_TEMPS_IN_CONDITIONAL_EXPRS for BC++
@
text
@d7 3
d17 1
a17 1
// $Id: compat.h,v 1.4 1994/09/12 23:32:33 thoth Exp ljr $
d28 6
@


1.4
log
@screwy new symbol for g++ bug.
@
text
@d7 3
d14 1
a14 1
// $Id: compat.h,v 1.3 1994/08/17 01:59:51 gmt Exp thoth $
d33 1
@


1.3
log
@Added log and id comments for RCS stuff.
@
text
@d6 4
a9 1
// $Log$
d11 1
a11 1
// $Id$
d16 7
d42 14
@


1.2
log
@Added a section of defines for Symantec C++ V7 for the Mac.
Also added the pragma "template_access extern" which forces explicit
instantiation of templates.
@
text
@d6 4
@


1.1
log
@Initial revision
@
text
@d18 12
@
