/************************************************************************
 *
 * 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)
#  include <windows.h>
#  if defined (_MSC_VER) && 1400 <= _MSC_VER
#    include <intrin.h>
#  endif   // 1400 <= _MSC_VER
#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);
}
