This file is indexed.

/usr/include/deal.II/base/config.h.in is in libdeal.ii-dev 6.3.1-1.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
/* base/include/base/config.h.in.  Generated from configure.in by autoheader.  */


//----------------------------  config.h  ---------------------------
//    $Id: configure.in 21534 2010-07-18 20:11:46Z bangerth $
//    Version: $Name$
//
//    Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
//
//    This file is subject to QPL and may not be  distributed
//    without copyright and license information. Please refer
//    to the file deal.II/doc/license.html for the  text  and
//    further information on this license.
//
//----------------------------  config.h  ---------------------------
#ifndef __deal2__config_h
#define __deal2__config_h

// Note: you should not usually have to change this file, as it is
// automatically generated from the ./configure file in the top level
// directory. If there are problems with the contents of this file,
// rather than changing it, try to modify the mechanisms in
// configure.in that generated this output. The reason is that you
// would have to make these changes each time you compile a new
// version of the library, or on a different computer. Furthermore, it
// is important not to build different parts of the library with
// different versions of this file.
//
// In case of problems in autodetection of features of your build
// environment, contact the authors of the library.


/**
 * Two macro names that we put at the top and bottom of all deal.II files
 * and that will be expanded to "namespace dealii {" and "}".
 */
#define DEAL_II_NAMESPACE_OPEN namespace dealii {
#define DEAL_II_NAMESPACE_CLOSE }



/* Defined if the prototype of abort() has a no-throw exception specification.
   */
#undef DEAL_II_ABORT_NOTHROW_EXCEPTION

/* Flag indicating whether there is a bug in the compiler that leads to bogus
   warnings for inline class members in anonymous namespaces */
#undef DEAL_II_ANON_NAMESPACE_BOGUS_WARNING

/* Defined if the compiler needs to see the static keyword even for functions
   in anonymous namespaces, to avoid duplicate symbol errors when linking. For
   the details, look at aclocal.m4 in the top-level directory. */
#undef DEAL_II_ANON_NAMESPACE_BUG

/* Another test if the compiler needs to see the static keyword even for
   functions in anonymous namespaces, to avoid duplicate symbol errors when
   linking. For the details, look at aclocal.m4 in the top-level directory. */
#undef DEAL_II_ANON_NAMESPACE_LINKAGE_BUG

/* Defined if the compiler has a problem with using arrays as arguments in
   functions */
#undef DEAL_II_ARRAY_ARG_BUG

/* Defined if the compiler has a problem with assigning arrays in conditionals
   */
#undef DEAL_II_ARRAY_CONDITIONAL_DECAY_BUG

/* Defined if the compiler gets an internal error compiling some code that
   involves boost::bind */
#undef DEAL_II_BOOST_BIND_COMPILER_BUG

/* Defined if the compiler gets an internal error compiling some code that
   involves boost::graph */
#undef DEAL_II_BOOST_GRAPH_COMPILER_BUG

/* Define if the use of socket functionality leads to strange results with
   floating point computations on cygwin systems. */
#undef DEAL_II_BROKEN_SOCKETS

/* Defined if the compiler we use supports the upcoming C++1x standard. */
#undef DEAL_II_CAN_USE_CXX1X

/* Backward compatibility support for functions and classes that do not take
   an explicit mapping variable, but rather use a default Q1 mapping instead
   */
#undef DEAL_II_COMPAT_MAPPING

/* Defined if the compiler supports including <mpi.h> */
#undef DEAL_II_COMPILER_SUPPORTS_MPI

/* Defined if the compiler has a bug in deducing the type of pointers to const
   member functions. */
#undef DEAL_II_CONST_MEMBER_DEDUCTION_BUG

/* disable the function parser in contrib */
#undef DEAL_II_DISABLE_PARSER

/* Defined if the compiler does not honor the explicit keyword on template
   constructors. */
#undef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG

/* Define if we have to work around a bug where the compiler doesn't accept an
   explicit destructor call. See the aclocal.m4 file in the top-level
   directory for a description of this bug. */
#undef DEAL_II_EXPLICIT_DESTRUCTOR_BUG

/* Defined if the compiler needs a workaround for certain problems with taking
   the address of template template functions. For the details, look at
   aclocal.m4 in the top-level directory. */
#undef DEAL_II_FUNPTR_TEMPLATE_TEMPLATE_BUG

/* Defined if the compiler has a bug with dynamic casting and dynamic
   libraries */
#undef DEAL_II_HAVE_DARWIN_DYNACAST_BUG

/* Defined if std::isfinite is available */
#undef DEAL_II_HAVE_ISFINITE

/* Flag indicating whether the library shall be compiled to use the Tecplot
   interface */
#undef DEAL_II_HAVE_TECPLOT

/* Defined if the compiler refuses to compile the definition of a function
   that was previously declared abstract. */
#undef DEAL_II_IMPLEMENTED_PURE_FUNCTION_BUG

/* Define if we have to work around a bug in Sun's Forte compiler. See the
   aclocal.m4 file in the top-level directory for a description of this bug.
   */
#undef DEAL_II_LOCAL_TYPEDEF_COMP_WORKAROUND

/* Defined if the compiler gets an internal compiler upon some code involving
   long doubles, and with optimization. For the details, look at aclocal.m4 in
   the top-level directory. */
#undef DEAL_II_LONG_DOUBLE_LOOP_BUG

/* Major version number of deal.II */
#undef DEAL_II_MAJOR

/* Defined if the compiler refuses to allow the explicit specialization of
   static member arrays. For the exact failure mode, look at aclocal.m4 in the
   top-level directory. */
#undef DEAL_II_MEMBER_ARRAY_SPECIALIZATION_BUG

/* Define if we have to work around a bug in gcc with explicitly instantiating
   template member operators. See the aclocal.m4 file in the top-level
   directory for a description of this bug. */
#undef DEAL_II_MEMBER_OP_TEMPLATE_INST

/* Defined if the compiler refuses to specialize an outer class template while
   keeping a member as a template. For the exact failure mode, look at
   aclocal.m4 in the top-level directory. */
#undef DEAL_II_MEMBER_TEMPLATE_SPECIALIZATION_BUG

/* Defined if the compiler refuses to allow the explicit specialization of
   static member variables. For the exact failure mode, look at aclocal.m4 in
   the top-level directory. */
#undef DEAL_II_MEMBER_VAR_SPECIALIZATION_BUG

/* Minor version number of deal.II */
#undef DEAL_II_MINOR

/* Set to the minimal number of elements a std::vector<bool> can always hold,
   i.e. its minimal capacity. */
#undef DEAL_II_MIN_BOOL_VECTOR_CAPACITY

/* Set to the minimal number of elements a std::vector<T> can always hold,
   i.e. its minimal capacity. */
#undef DEAL_II_MIN_VECTOR_CAPACITY

/* enable multigrid compatibility mode */
#undef DEAL_II_MULTIGRID_COMPATIBILITY

/* Define if we have to work around a bug in gcc with marking all instances of
   a template class as friends to this class if the class is inside a
   namespace. See the aclocal.m4 file in the top-level directory for a
   description of this bug. */
#undef DEAL_II_NAMESP_TEMPL_FRIEND_BUG

/* Define if we have to work around another bug in gcc with marking all
   instances of a template class as friends to this class if the class is
   inside a namespace. See the aclocal.m4 file in the top-level directory for
   a description of this bug. */
#undef DEAL_II_NAMESP_TEMPL_FRIEND_BUG2

/* Defined if the compiler does not properly implement the resolution of
   defect report #45 to the C++ standard, which makes nested types implicit
   friends of the enclosing class. */
#undef DEAL_II_NESTED_CLASS_FRIEND_BUG

/* Defined if the compiler does not understand friend declarations for nested
   member classes when giving a full class specification. */
#undef DEAL_II_NESTED_CLASS_TEMPL_FRIEND_BUG

/* Path to the deal.II directory */
#undef DEAL_II_PATH

/* Defined if the compiler does not support the
   substitution-failure-is-not-an-error paradigm. For the details, look at
   aclocal.m4 in the top-level directory. */
#undef DEAL_II_SFINAE_BUG

/* Define if we have to work around a bug in Sun's Forte compiler. See the
   aclocal.m4 file in the top-level directory for a description of this bug.
   */
#undef DEAL_II_TEMPLATE_SPEC_ACCESS_WORKAROUND

/* Defined if the compiler refuses to allow a typedef to a template template
   class template parameter. For the exact failure mode, look at aclocal.m4 in
   the top-level directory. */
#undef DEAL_II_TEMPLATE_TEMPLATE_TYPEDEF_BUG

/* Defined if the compiler requires the use of the template keyword for
   disambiguation keyword in certain contexts in which it is not supposed to
   do so. For the exact failure mode, look at aclocal.m4 in the top-level
   directory. */
#undef DEAL_II_TEMPL_OP_DISAMBIGUATION_BUG

/* Define if we have to work around a bug with some compilers that will not
   allow us to specify a fully specialized class of a template as a friend.
   See the aclocal.m4 file in the top-level directory for a description of
   this bug. */
#undef DEAL_II_TEMPL_SPEC_FRIEND_BUG

/* Define if the compiler provides a <errno.g> header file which does not
   define all error codes such as EINTR. In that case, use the system include
   file at /usr/include instead. There is probably a better way to do this,
   but it is not apparent by looking at the C/C++ compatibility header
   provided by the compiler. */
#undef DEAL_II_USE_DIRECT_ERRNO_H

/* Defined if a Metis installation was found and is going to be used */
#undef DEAL_II_USE_METIS

/* Flag indicating whether the library shall be compiled for multithreaded
   applications. If so, then it is set to one, otherwise to zero. */
#undef DEAL_II_USE_MT

/* Defined if multi-threading is to be achieved by using the POSIX functions
   */
#undef DEAL_II_USE_MT_POSIX

/* Defined if POSIX is supported but not the newer POSIX barrier functions.
   Barriers will then not work in the library, but the other threading
   functionality is available. */
#undef DEAL_II_USE_MT_POSIX_NO_BARRIERS

/* Defined if a MUMPS installation was found and is going to be used */
#undef DEAL_II_USE_MUMPS

/* Defined if a PETSc installation was found and is going to be used */
#undef DEAL_II_USE_PETSC

/* Defined if a PETSc installation was found with complex scalar type and is
   going to be used */
#undef DEAL_II_USE_PETSC_COMPLEX

/* Defined if a SLEPc installation was found and is going to be used */
#undef DEAL_II_USE_SLEPC

/* Defined if a Trilinos installation was found and is going to be used */
#undef DEAL_II_USE_TRILINOS

/* Define if vector iterators are just plain pointers */
#undef DEAL_II_VECTOR_ITERATOR_IS_POINTER

/* This error appears in the Apple edition of the gcc 3.3, which ships with
   Darwin7.9.0 and probably previous version. It leads to problems during
   linking. For the details, look at aclocal.m4 in the top-level directory. */
#undef DEAL_II_WEAK_LINKAGE_BUG

/* Define to 1 if you have the <Amesos.h> header file. */
#undef HAVE_AMESOS_H

/* Define to 1 if you have the <AztecOO.h> header file. */
#undef HAVE_AZTECOO_H

/* Define to 1 if you have the <AztecOO_Operator.h> header file. */
#undef HAVE_AZTECOO_OPERATOR_H

/* Define if the compiler provides __builtin_expect */
#undef HAVE_BUILTIN_EXPECT

/* Define to 1 if you have the `daxpy_' function. */
#undef HAVE_DAXPY_

/* Define to 1 if you have the `dgeevx_' function. */
#undef HAVE_DGEEVX_

/* Define to 1 if you have the `dgeev_' function. */
#undef HAVE_DGEEV_

/* Define to 1 if you have the `dgemm_' function. */
#undef HAVE_DGEMM_

/* Define to 1 if you have the `dgemv_' function. */
#undef HAVE_DGEMV_

/* Define to 1 if you have the `dgeqrf_' function. */
#undef HAVE_DGEQRF_

/* Define to 1 if you have the `dgesvd_' function. */
#undef HAVE_DGESVD_

/* Define to 1 if you have the `dgetrf_' function. */
#undef HAVE_DGETRF_

/* Define to 1 if you have the `dgetri_' function. */
#undef HAVE_DGETRI_

/* Define to 1 if you have the `dgetrs_' function. */
#undef HAVE_DGETRS_

/* Define to 1 if you have the `dorgqr_' function. */
#undef HAVE_DORGQR_

/* Define to 1 if you have the `dormqr_' function. */
#undef HAVE_DORMQR_

/* Define to 1 if you have the `dstev_' function. */
#undef HAVE_DSTEV_

/* Define to 1 if you have the `dsygv_' function. */
#undef HAVE_DSYGV_

/* Define to 1 if you have the `dtrtrs_' function. */
#undef HAVE_DTRTRS_

/* Define to 1 if you have the <Epetra_CrsGraph.h> header file. */
#undef HAVE_EPETRA_CRSGRAPH_H

/* Define to 1 if you have the <Epetra_CrsMatrix.h> header file. */
#undef HAVE_EPETRA_CRSMATRIX_H

/* Define to 1 if you have the <Epetra_Import.h> header file. */
#undef HAVE_EPETRA_IMPORT_H

/* Define to 1 if you have the <Epetra_LinearProblem.h> header file. */
#undef HAVE_EPETRA_LINEARPROBLEM_H

/* Define to 1 if you have the <Epetra_Map.h> header file. */
#undef HAVE_EPETRA_MAP_H

/* Define to 1 if you have the <Epetra_MultiVector.h> header file. */
#undef HAVE_EPETRA_MULTIVECTOR_H

/* Define to 1 if you have the <Epetra_Operator.h> header file. */
#undef HAVE_EPETRA_OPERATOR_H

/* Define to 1 if you have the <Epetra_SerialComm.h> header file. */
#undef HAVE_EPETRA_SERIALCOMM_H

/* Define to 1 if you have the <Epetra_Vector.h> header file. */
#undef HAVE_EPETRA_VECTOR_H

/* Define to 1 if you have the `gethostname' function. */
#undef HAVE_GETHOSTNAME

/* Define to 1 if you have the `getpid' function. */
#undef HAVE_GETPID

/* Define if deal.II is linked against a libc that provides stacktrace debug
   information that can be printed out in the exception class */
#undef HAVE_GLIBC_STACKTRACE

/* Availability of the MA27 algorithm from HSL */
#undef HAVE_HSL_MA27

/* Availability of the MA47 algorithm from HSL */
#undef HAVE_HSL_MA47

/* Define to 1 if you have the <Ifpack.h> header file. */
#undef HAVE_IFPACK_H

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Defined if deal.II was configured with BLAS support */
#undef HAVE_LIBBLAS

/* Defined if deal.II was configured with LAPACK support */
#undef HAVE_LIBLAPACK

/* Define to 1 if you have the `NetCDF' library (-lnetcdf). */
#undef HAVE_LIBNETCDF

/* Define if the std c++ library provides a demangler conforming to the GCC
   libstdc++ interface. */
#undef HAVE_LIBSTDCXX_DEMANGLER

/* UMFPACK is */
#undef HAVE_LIBUMFPACK

/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define if you have the rand_r function */
#undef HAVE_RAND_R

/* Define to 1 if you have the <Sacado.hpp> header file. */
#undef HAVE_SACADO_HPP

/* Define to 1 if you have the `saxpy_' function. */
#undef HAVE_SAXPY_

/* Define to 1 if you have the `sgeevx_' function. */
#undef HAVE_SGEEVX_

/* Define to 1 if you have the `sgeev_' function. */
#undef HAVE_SGEEV_

/* Define to 1 if you have the `sgemm_' function. */
#undef HAVE_SGEMM_

/* Define to 1 if you have the `sgemv_' function. */
#undef HAVE_SGEMV_

/* Define to 1 if you have the `sgeqrf_' function. */
#undef HAVE_SGEQRF_

/* Define to 1 if you have the `sgesvd_' function. */
#undef HAVE_SGESVD_

/* Define to 1 if you have the `sgetrf_' function. */
#undef HAVE_SGETRF_

/* Define to 1 if you have the `sgetri_' function. */
#undef HAVE_SGETRI_

/* Define to 1 if you have the `sgetrs_' function. */
#undef HAVE_SGETRS_

/* Define to 1 if you have the `sorgqr_' function. */
#undef HAVE_SORGQR_

/* Define to 1 if you have the `sormqr_' function. */
#undef HAVE_SORMQR_

/* Define to 1 if you have the `sstev_' function. */
#undef HAVE_SSTEV_

/* Define to 1 if you have the `ssygv_' function. */
#undef HAVE_SSYGV_

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Define if the compiler provides an <iosfwd> header file */
#undef HAVE_STD_IOSFWD_HEADER

/* Define if the compiler's library in use provides a std::iterator class
   (early gcc versions did not) */
#undef HAVE_STD_ITERATOR_CLASS

/* Define if the compiler's library in use provides std::numeric_limits
   classes in the appropriate header file */
#undef HAVE_STD_NUMERIC_LIMITS

/* Define if the compiler provides an <ostream> header file */
#undef HAVE_STD_OSTREAM_HEADER

/* Define if the compiler's library in use provides std::i/ostringstream
   classes (early gcc versions did not) */
#undef HAVE_STD_STRINGSTREAM

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if you have the `strtrs_' function. */
#undef HAVE_STRTRS_

/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

/* Define to 1 if you have the <sys/syscall.h> header file. */
#undef HAVE_SYS_SYSCALL_H

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to 1 if you have the <Teuchos_ParameterList.hpp> header file. */
#undef HAVE_TEUCHOS_PARAMETERLIST_HPP

/* Define to 1 if you have the <Teuchos_RCP.hpp> header file. */
#undef HAVE_TEUCHOS_RCP_HPP

/* Define to 1 if you have the <Teuchos_RefCountPtr.hpp> header file. */
#undef HAVE_TEUCHOS_REFCOUNTPTR_HPP

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define if the compiler provides __verbose_terminate_handler */
#undef HAVE_VERBOSE_TERMINATE

/* On SunOS 4.x, the getrusage() function exists, but is not declared in the
   respective header file <resource.h>, as one would think when reading the
   man pages. Then we have to declare this function ourselves in those files
   that use this function. The question whether we have to do so is controlled
   by the preprocessor variable. */
#undef NO_HAVE_GETRUSAGE

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the home page for this package. */
#undef PACKAGE_URL

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* Make sure PETSc doesn't re-define the underscore through the preprocessor,
   since this interferes with boost. PETSc redefines the underscore to be
   "__gterr =", but then forgets to undef this thing. Boost simply wants to
   concatenate the underscore with another string to form a class name, which
   then of course isn't valid any more. See mails in early Feb 2006. */
#undef PETSC_SKIP_UNDERSCORE_CHKERR

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* If already available, do not define at all. Otherwise, define to __func__
   if that is available. In all other cases, indicate that no information
   about the present function is available for this compiler. */
#undef __PRETTY_FUNCTION__


/**
 * Depending on the use of threads, we will have to make some variables
 * volatile. We do this here in a very old-fashioned C-style, but still
 * convenient way.
 */
#if DEAL_II_USE_MT != 0
#  define DEAL_VOLATILE volatile
#else
#  define DEAL_VOLATILE
#endif

/*
 * There is an annoying problem in the Trilinos header ml_config.h: It
 * #define's HAVE_INTTYPES_H but doesn't give the symbol a value. This
 * conflicts with the result of running deal.II's ./configure which
 * #define's it and gives it the value "1". The result is a compiler
 * warning. So if we use Trilinos and if the symbol is already
 * #define'd, then #undef it again here. deal.II doesn't use the
 * #define anyway and this way if we include any of the Trilinos
 * headers they can feel free to set it again to whatever they wish.
 *
 * The form of the #undef with the comment in the middle is necessary
 * to avoid that the pattern substitution of ./configure turns the
 * #undef into a #define again.
 */
#if defined(DEAL_II_USE_TRILINOS) && defined(HAVE_INTTYPES_H)
#  undef /**/ HAVE_INTTYPES_H
#endif

/**
 * These macros are defined to make testing for PETSc versions within
 * the deal.II main code as simple as possible. In brief they are used
 * like this: (i) DEAL_II_PETSC_VERSION_LT is used to advance the
 * PETScWrappers to newer versions of PETSc while preserving backward
 * compatibility; and (ii) DEAL_II_PETSC_VERSION_GTE is used to add
 * functionality to the PETScWrappers that does not exist in previous
 * versions of PETSc.  Examples of usage can be found in
 * lac/source/petsc_matrix_base.h.  Note: SLEPcWrappers do not need
 * their own anological macros, since SLEPc and PETSc must have
 * identical version numbers anyways.
 */
#define DEAL_II_PETSC_VERSION_LT(major,minor,subminor) \
  ((PETSC_VERSION_MAJOR * 10000 + \
    PETSC_VERSION_MINOR * 100 + \
    PETSC_VERSION_SUBMINOR) \
    <  \
    (major)*10000 + (minor)*100 + (subminor))

#define DEAL_II_PETSC_VERSION_GTE(major,minor,subminor) \
  ((PETSC_VERSION_MAJOR * 10000 + \
    PETSC_VERSION_MINOR * 100 + \
    PETSC_VERSION_SUBMINOR) \
    >=  \
    (major)*10000 + (minor)*100 + (subminor))

#include <base/numbers.h>
#include <base/types.h>

/**
 * If the compiler supports the upcoming C++1x standard, allow us to refer
 * to things in namespace std through namespace std_cxx1x (the namespace
 * into which we import BOOST components if we don't have C++1x support).
 */
#ifdef DEAL_II_CAN_USE_CXX1X
namespace std_cxx1x = std;
#endif

#endif