Home | History | Annotate | Download | only in include
      1 // -*- C++ -*- compatibility header.
      2 
      3 // Copyright (C) 2007-2014 Free Software Foundation, Inc.
      4 //
      5 // This file is part of the GNU ISO C++ Library.  This library is free
      6 // software; you can redistribute it and/or modify it under the
      7 // terms of the GNU General Public License as published by the
      8 // Free Software Foundation; either version 3, or (at your option)
      9 // any later version.
     10 
     11 // This library is distributed in the hope that it will be useful,
     12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 // GNU General Public License for more details.
     15 
     16 // Under Section 7 of GPL version 3, you are granted additional
     17 // permissions described in the GCC Runtime Library Exception, version
     18 // 3.1, as published by the Free Software Foundation.
     19 
     20 // You should have received a copy of the GNU General Public License and
     21 // a copy of the GCC Runtime Library Exception along with this program;
     22 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     23 // <http://www.gnu.org/licenses/>.
     24 
     25 /** @file complex.h
     26  *  This is a Standard C++ Library header.
     27  */
     28 
     29 #ifndef _GLIBCXX_COMPLEX_H
     30 #define _GLIBCXX_COMPLEX_H 1
     31 
     32 #if __cplusplus >= 201103L
     33 # include <ccomplex>
     34 #else // C++98 and C++03
     35 
     36 // The C++ <complex> header is incompatible with the C99 <complex.h> header,
     37 // they cannot be included into a single translation unit portably. Notably,
     38 // C++11's <ccomplex> does not include C99's <complex.h> and in C++11's
     39 // <complex.h> is defined to provide only what C++11's <ccomplex> does in a
     40 // different namespace.
     41 #ifdef _GLIBCXX_COMPLEX
     42 # error Cannot include both <complex> and C99's <complex.h>
     43 #endif
     44 
     45 // Delegate to a system complex.h if we don't provide it as part of the C++
     46 // implementation.
     47 #include_next <complex.h>
     48 
     49 // Provide a define indicating that a C99-style <complex.h> has been included.
     50 #define _GLIBCXX_C99_COMPLEX_H
     51 
     52 #endif // C++98 and C++03
     53 
     54 #endif
     55