/************************************************************************
 *
 * test_issue16717.cpp - regression test for Onyx issue #16717
 *
 * $Id$
 *
 ************************************************************************
 *
 * Licensed to the Apache Software  Foundation (ASF) under one or more
 * contributor  license agreements.  See  the NOTICE  file distributed
 * with  this  work  for  additional information  regarding  copyright
 * ownership.   The ASF  licenses this  file to  you under  the Apache
 * License, Version  2.0 (the  "License"); you may  not use  this file
 * except in  compliance with the License.   You may obtain  a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the  License is distributed on an  "AS IS" BASIS,
 * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
 * implied.   See  the License  for  the  specific language  governing
 * permissions and limitations under the License.
 *
 * Copyright 2001-2006 Rogue Wave Software.
 * 
 **************************************************************************/

// ISSUE DESCRIPTION:
//   library headers must privatize all names other than those mandated
//   by the standard according to 17.4.3.1; this includes formal template
//   parameters and function arguments shown in the Standard
//   this test #defines the most common offenders and #includes all
//   library headers with the expectation that violations will be flagged
//   as compilation errors

#include <rw/_defs.h>
#include <driver.h>


#ifdef __SUNPRO_CC
   // included first to work around a SunPro 5.4 bug (PR #26255)
#  include <time.h>
#endif   // SunPro

// include ANSI C headers prior to attempting to induce errors in case
// the C library itself contains violations of this rule
#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>

#ifndef _RWSTD_NO_ISO646_H
#  include <iso646.h>
#endif

#include <limits.h>
#include <locale.h>
#include <math.h>
#include <setjmp.h>
#include <signal.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#ifndef _RWSTD_NO_WCHAR_H
#  include <wchar.h>
#endif

#ifndef _RWSTD_NO_WCTYPE_H
#  include <wctype.h>
#endif

// include system headers included by the library
#include <fcntl.h>

#if defined (_WIN32) || defined (_WIN64)
#  include <io.h>
#else
#  include <unistd.h>
#endif

#include _RWSTD_SYS_TYPES_H

#if defined (_RWSTD_SOLARIS_THREADS)
#  include <synch.h>
#  include <thread.h>
#elif defined (_RWSTD_POSIX_THREADS)
#  include <pthread.h>
#elif defined (_RWSTD_DCE_THREADS)
#  if defined (_RWSTD_NO_DCE_PTHREAD_H)
#    include <pthread.h>
#  else
#    include <dce/pthread.h>
#  endif
#elif defined (_WIN32) || defined (_WIN32)
#  include <windows.h>
#endif


// symbols typically used by programmers for local names
#define a   !ERROR!
#define b   !ERROR!
#define c   !ERROR!

#if !defined (__sgi)
   // a member of __huge_val in /usr/include/math.h and elsewhere
#  define d !ERROR!
#endif

#define e   !ERROR!
#define f   !ERROR!
#define g   !ERROR!

// gets expanded in macros within #include directives
// during the second pass of the preprocessor...
// #define h   !ERROR!

#define i   !ERROR!
#define j   !ERROR!
#define k   !ERROR!
#define m   !ERROR!
#define n   !ERROR!
#define o   !ERROR!
#define p   !ERROR!
#define q   !ERROR!
#define r   !ERROR!
#define s   !ERROR!
#define t   !ERROR!
#define u   !ERROR!
#define v   !ERROR!
#define w   !ERROR!
#define x   !ERROR!
#define y   !ERROR!
#define z   !ERROR!

#define A   !ERROR!
#define B   !ERROR!
#define C   !ERROR!
#define D   !ERROR!
#define E   !ERROR!
#define F   !ERROR!
#define G   !ERROR!
#define H   !ERROR!
#define I   !ERROR!
#define J   !ERROR!
#define K   !ERROR!
#define L   !ERROR!
#define M   !ERROR!
#define N   !ERROR!
#define O   !ERROR!
#define P   !ERROR!
#define Q   !ERROR!
#define R   !ERROR!
#define S   !ERROR!
#define T   !ERROR!
#define U   !ERROR!
#define V   !ERROR!
#define W   !ERROR!
#define X   !ERROR!
#define Y   !ERROR!
#define Z   !ERROR!

// symbols typically used by programmers for names of class members
#define a_  !ERROR!
#define b_  !ERROR!
#define c_  !ERROR!
#define d_  !ERROR!
#define e_  !ERROR!
#define f_  !ERROR!
#define g_  !ERROR!
#define h_  !ERROR!
#define i_  !ERROR!
#define j_  !ERROR!
#define k_  !ERROR!
#define m_  !ERROR!
#define n_  !ERROR!
#define o_  !ERROR!
#define p_  !ERROR!
#define q_  !ERROR!
#define r_  !ERROR!
#define s_  !ERROR!
#define t_  !ERROR!
#define u_  !ERROR!
#define v_  !ERROR!
#define w_  !ERROR!
#define x_  !ERROR!
#define y_  !ERROR!
#define z_  !ERROR!

#define A_  !ERROR!
#define B_  !ERROR!
#define C_  !ERROR!
#define D_  !ERROR!
#define E_  !ERROR!
#define F_  !ERROR!
#define G_  !ERROR!
#define H_  !ERROR!
#define I_  !ERROR!
#define J_  !ERROR!
#define K_  !ERROR!
#define L_  !ERROR!
#define M_  !ERROR!
#define N_  !ERROR!
#define O_  !ERROR!
#define P_  !ERROR!
#define Q_  !ERROR!
#define R_  !ERROR!
#define S_  !ERROR!
#define T_  !ERROR!
#define U_  !ERROR!
#define V_  !ERROR!
#define W_  !ERROR!
#define X_  !ERROR!
#define Y_  !ERROR!
#define Z_  !ERROR!

#define a1  !ERROR!
#define b1  !ERROR!
#define c1  !ERROR!
#define d1  !ERROR!
#define e1  !ERROR!
#define f1  !ERROR!
#define g1  !ERROR!
#define h1  !ERROR!
#define i1  !ERROR!
#define j1  !ERROR!
#define k1  !ERROR!
#define m1  !ERROR!
#define n1  !ERROR!
#define o1  !ERROR!
#define p1  !ERROR!
#define q1  !ERROR!
#define r1  !ERROR!
#define s1  !ERROR!
#define t1  !ERROR!
#define u1  !ERROR!
#define v1  !ERROR!
#define w1  !ERROR!
#define x1  !ERROR!
#define y1  !ERROR!
#define z1  !ERROR!

#define a2  !ERROR!
#define b2  !ERROR!
#define c2  !ERROR!
#define d2  !ERROR!
#define e2  !ERROR!
#define f2  !ERROR!
#define g2  !ERROR!
#define h2  !ERROR!
#define i2  !ERROR!
#define j2  !ERROR!
#define k2  !ERROR!
#define m2  !ERROR!
#define n2  !ERROR!
#define o2  !ERROR!
#define p2  !ERROR!
#define q2  !ERROR!
#define r2  !ERROR!
#define s2  !ERROR!
#define t2  !ERROR!
#define u2  !ERROR!
#define v2  !ERROR!
#define w2  !ERROR!
#define x2  !ERROR!
#define y2  !ERROR!
#define z2  !ERROR!

#define A1  !ERROR!
#define B1  !ERROR!
#define C1  !ERROR!
#define D1  !ERROR!
#define E1  !ERROR!
#define F1  !ERROR!
#define G1  !ERROR!
#define H1  !ERROR!
#define I1  !ERROR!
#define J1  !ERROR!
#define K1  !ERROR!
#define L1  !ERROR!
#define M1  !ERROR!
#define N1  !ERROR!
#define O1  !ERROR!
#define P1  !ERROR!
#define Q1  !ERROR!
#define R1  !ERROR!
#define S1  !ERROR!
#define T1  !ERROR!
#define U1  !ERROR!
#define V1  !ERROR!
#define W1  !ERROR!
#define X1  !ERROR!
#define Y1  !ERROR!
#define Z1  !ERROR!

#define A2  !ERROR!
#define B2  !ERROR!
#define C2  !ERROR!
#define D2  !ERROR!
#define E2  !ERROR!
#define F2  !ERROR!
#define G2  !ERROR!
#define H2  !ERROR!
#define I2  !ERROR!
#define J2  !ERROR!
#define K2  !ERROR!
#define L2  !ERROR!
#define M2  !ERROR!
#define N2  !ERROR!
#define O2  !ERROR!
#define P2  !ERROR!
#define Q2  !ERROR!
#define R2  !ERROR!
#define S2  !ERROR!
#define T2  !ERROR!
#define U2  !ERROR!
#define V2  !ERROR!
#define W2  !ERROR!
#define X2  !ERROR!
#define Y2  !ERROR!
#define Z2  !ERROR!

// symbols beginning with __<N> where is a digit are reserved
// by Sun dbx (see PR #30521)
#define __2logN                 !ERROR!

// symbols reserved by gcc (run `strings cc1plus' from the shell)
// see also http://gcc.gnu.org/libstdc++/17_intro/BADNAMES
#define __aa                    !ERROR!
#define __aad                   !ERROR!
#define __ad                    !ERROR!
#define __addr                  !ERROR!
#define __adv                   !ERROR!
#define __aer                   !ERROR!
#define __als                   !ERROR!
#define __alshift               !ERROR!
#define __amd                   !ERROR!
#define __ami                   !ERROR!
#define __aml                   !ERROR!
#define __amu                   !ERROR!
#define __aor                   !ERROR!
#define __apl                   !ERROR!
#define __array                 !ERROR!
#define __ars                   !ERROR!
#define __arshift               !ERROR!
#define __as                    !ERROR!
#define __bit_and               !ERROR!
#define __bit_ior               !ERROR!
#define __bit_not               !ERROR!
#define __bit_xor               !ERROR!
#define __call                  !ERROR!
#define __cl                    !ERROR!
#define __cm                    !ERROR!
#define __cn                    !ERROR!
#define __co                    !ERROR!
#define __component             !ERROR!
#define __compound              !ERROR!
#define __cond                  !ERROR!
#define __convert               !ERROR!
#define __delete                !ERROR!
#define __dl                    !ERROR!
#define __dv                    !ERROR!
#define __eq                    !ERROR!
#define __er                    !ERROR!
#define __ge                    !ERROR!
#define __gt                    !ERROR!
#define __indirect              !ERROR!
#define __le                    !ERROR!
#define __ls                    !ERROR!
#define __lt                    !ERROR!

#ifndef _MSC_VER
   // MSVC's libc defines __max in <stdlib.h>
#  define __max                 !ERROR!
#endif

#define __md                    !ERROR!
#define __method_call           !ERROR!
#define __mi                    !ERROR!

#ifndef _MSC_VER
   // MSVC's libc defines __min in <stdlib.h>
#  define __min                 !ERROR!
#endif

#define __minus                 !ERROR!
#define __ml                    !ERROR!
#define __mm                    !ERROR!
#define __mn                    !ERROR!
#define __mult                  !ERROR!
#define __mx                    !ERROR!
#define __ne                    !ERROR!
#define __negate                !ERROR!
#define __new                   !ERROR!
#define __nop                   !ERROR!
#define __nt                    !ERROR!
#define __nw                    !ERROR!
#define __oo                    !ERROR!
#define __op                    !ERROR!
#define __or                    !ERROR!
#define __pl                    !ERROR!
#define __plus                  !ERROR!
#define __postdecrement         !ERROR!
#define __postincrement         !ERROR!
#define __pp                    !ERROR!
#define __pt                    !ERROR!
#define __rf                    !ERROR!
#define __rm                    !ERROR!
#define __rs                    !ERROR!
#define __sz                    !ERROR!
#define __trunc_div             !ERROR!
#define __trunc_mod             !ERROR!
#define __truth_andif           !ERROR!
#define __truth_not             !ERROR!
#define __truth_orif            !ERROR!
// __value is reserved by MSVC 8.0
#define __value                 !ERROR!
#define __vc                    !ERROR!
#define __vd                    !ERROR!
#define __vn                    !ERROR!

// symbols reserved by the ARM compiler
#if !defined (sun) && !defined (__sun) && !defined (__sun__)
   // MB_CUR_MAX expands to __ctype on SunOS
#  define __ctype               !ERROR!
#endif

#define __ct                    !ERROR!

// symbols typically used by C++ library implementations
#define Alloc                   !ERROR!
#define Allocator               !ERROR!
#define alloc                   !ERROR!
#define Arg                     !ERROR!
#define Arg1                    !ERROR!
#define Arg2                    !ERROR!
#define adr                     !ERROR!
#define addr                    !ERROR!
#define array                   !ERROR!
#define BidirectionalIter       !ERROR!
#define BidirectionalIterator   !ERROR!
#define BinaryPred              !ERROR!
#define BinaryPredicate         !ERROR!
#define buf                     !ERROR!
#define buffer                  !ERROR!
#define CHAR                    !ERROR!
#define Char                    !ERROR!
#define charT                   !ERROR!
#define CharT                   !ERROR!
#define cmp                     !ERROR!
#define cnt                     !ERROR!
#define cpt                     !ERROR!
#define comp                    !ERROR!
#define Container               !ERROR!
#define Compare                 !ERROR!
#define dist                    !ERROR!
#define Dist                    !ERROR!
#define Distance                !ERROR!
#define finish                  !ERROR!
#define ForwardIter             !ERROR!
#define ForwardIterator         !ERROR!
#define found                   !ERROR! 
#define fun                     !ERROR!
#define Function                !ERROR!
#define hint                    !ERROR!
#define gen                     !ERROR!
#define Gen                     !ERROR!
#define Generator               !ERROR!
#define get_array               !ERROR!
#define get_slice               !ERROR!
#define gs                      !ERROR!
#define InputIter               !ERROR!
#define InputIterator           !ERROR!
#define index                   !ERROR!
#define INT                     !ERROR!
#define inx                     !ERROR!
#define ipfx                    !ERROR!
#define istrm                   !ERROR!
#define last                    !ERROR!
#define len                     !ERROR!
#define lhs                     !ERROR!
#define line                    !ERROR!
#define lineno                  !ERROR!
#define loc                     !ERROR!
#define LONG                    !ERROR!
#define med                     !ERROR!
#define mesg                    !ERROR!
#define middle                  !ERROR!
#define mode                    !ERROR!
#define msg                     !ERROR!
#define msk                     !ERROR!
#define n                       !ERROR!
#define nchar                   !ERROR!
#define nchars                  !ERROR!
#define neg                     !ERROR!
#define negative                !ERROR!
#define num                     !ERROR!
#define numb                    !ERROR!
#define off                     !ERROR!
#define offset                  !ERROR!
#define old                     !ERROR!
#define opfx                    !ERROR!
#define os                      !ERROR!
#define ostrm                   !ERROR!
#define Operation               !ERROR!
#define OutputIter              !ERROR!
#define OutputIterator          !ERROR!
#define pf                      !ERROR!
#define Pointer                 !ERROR!
#define pos                     !ERROR!
#define position                !ERROR!
#define positive                !ERROR!
#define Pred                    !ERROR!
#define Predicate               !ERROR!
#define pend                    !ERROR!
#define pending                 !ERROR!
#define ptr                     !ERROR!
#define quant                   !ERROR!
#define RandomAccessIter        !ERROR!
#define RandomAccessIterator    !ERROR!
#define Reference               !ERROR!
#define Result                  !ERROR!
#define res                     !ERROR!

// used by std::codecvt_base::result
// #define result                  !ERROR!

#define rhs                     !ERROR!
#define rlen                    !ERROR!
#define save                    !ERROR!
#define sec                     !ERROR!
#define sl                      !ERROR!
#define sla                     !ERROR!
#define sb                      !ERROR!
#define SCHAR                   !ERROR!
#define Size                    !ERROR!
#define slen                    !ERROR!
#define smanip                  !ERROR!
#define start                   !ERROR!
#define stream                  !ERROR!
#define strm                    !ERROR!
#define sz                      !ERROR!
#define tag                     !ERROR!
#define temp                    !ERROR!
#define tmp                     !ERROR!
#define Tp                      !ERROR!
#define traits                  !ERROR!
#define Traits                  !ERROR!
#define type                    !ERROR!
#define Type                    !ERROR!
#define UCHAR                   !ERROR!
#define UINT                    !ERROR!
#define ULONG                   !ERROR!
#define ULLONG                  !ERROR!
#define USHRT                   !ERROR!
#define UnaryFunction           !ERROR!
#define val                     !ERROR!
// value used in type traits
// #define value                   !ERROR!
#define var                     !ERROR!
#define way                     !ERROR!
#define which                   !ERROR!
#define xpos                    !ERROR!

// verify that the library gracefully handles
// the frequently #defined function macros
#undef max
#define max()                   !ERROR!
#undef min
#define min()                   !ERROR!

// symbols the DEC cxx compiler/linker/debugger use internally
#define __INTER__               !ERROR!
#define __bptr                  !ERROR!
#define __control               !ERROR!
#define __vptr                  !ERROR!
#define __result_pointer        !ERROR!
#define __result                !ERROR!
#define __vtbl                  !ERROR!
#define __btbl                  !ERROR!
#define evdw                    !ERROR!
#define __external_destructor_functor_list   !ERROR!
#define __fn                    !ERROR!
#define __fw                    !ERROR!
#define __init                  !ERROR!
#define __fini                  !ERROR!


#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>

#include <locale>

// assume <map> isn't #included by any other public header
#undef comp
#include <map>
#define comp                    !ERROR!

#include <memory>
#include <new>
#include <numeric>
#include <ostream>

// assume <queue> isn't #included by any other public header
// `c' and `comp' mandated by the standard
#undef c
#undef comp
#include <queue>
#define c                       !ERROR!
#define comp                    !ERROR!

// assume <set> isn't #included by any other public header
// `comp' mandated by the standard
#undef comp
#include <set>
#define comp                    !ERROR!
#include <sstream>

// assume <stack> isn't #included by any other public header
// `c' mandated by the standard
#undef c
#include <stack>
#define c                       !ERROR!

#include <stdexcept>
#include <streambuf>
#include <string>

#if defined (__SUNPRO_CC) && __SUNPRO_CC <= 0x530
   // working around a SunPro 5.3 bug (see PR #26025)
#  undef rhs
#endif   // SunPro > 5.3

#include <typeinfo>

#define rhs                     !ERROR!

#include <utility>

// assume <valarray> isn't #included by any other public header
// `start' mandated by the standard
#undef start
#include <valarray>
#define start                   !ERROR!
#include <vector>

#ifndef _RWSTD_NO_NEW_HEADER

#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfloat>

#ifndef _RWSTD_NO_ISO646_H
#  include <ciso646>
#endif

#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>


#ifndef _RWSTD_NO_WCHAR_H
#  include <cwchar>
#endif

#ifndef _RWSTD_NO_WCTYPE_H
#  include <cwctype>
#endif

#endif   // _RWSTD_NO_NEW_HEADER

/***********************************************************************/

static int
run_test (int, char**)
{
    // no-op (compile-only test)
    return 0;
}

/***********************************************************************/

int main (int argc, char** argv)
{
    return rw_test (argc, argv, __FILE__,
                    "lib.intro",
                    "checking for namespace pollution",
                    run_test,
                    0, 0);
}
