PageRenderTime 20ms CodeModel.GetById 14ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/pool/detail/pool_construct.m4

http://hadesmem.googlecode.com/
m4 | 84 lines | 82 code | 2 blank | 0 comment | 0 complexity | 296b04bc7a4b4c1dc629ea8a508cf306 MD5 | raw file
 1m4_dnl
 2m4_dnl Copyright (C) 2000 Stephen Cleary
 3m4_dnl
 4m4_dnl Distributed under the Boost Software License, Version 1.0. (See accompany-
 5m4_dnl ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 6m4_dnl
 7m4_dnl See http://www.boost.org for updates, documentation, and revision history.
 8m4_dnl
 9m4_dnl
10m4_dnl
11m4_dnl Avoid the use of any m4_* identifiers in this header file,
12m4_dnl  as that may cause incompatibility problems with future
13m4_dnl  versions of m4.
14m4_dnl
15m4_dnl This is a normal header file, except that lines starting
16m4_dnl  with `m4_dnl' will be stripped, TBA_FOR
17m4_dnl  macros will be replaced with repeated text, and text in
18m4_dnl  single quotes (`...') will have their single quotes
19m4_dnl  stripped.
20m4_dnl
21m4_dnl
22m4_dnl Check to make sure NumberOfArguments was defined.  If it's not defined,
23m4_dnl  default to 3
24m4_dnl
25m4_ifdef(`NumberOfArguments', , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is not defined; defaulting to 3
26')m4_define(`NumberOfArguments', 3)')m4_dnl
27m4_ifelse(NumberOfArguments, , `m4_errprint(m4___file__:m4___line__`: NumberOfArguments is defined to be empty; defaulting to 3
28')m4_define(`NumberOfArguments', 3)')m4_dnl
29m4_dnl
30m4_dnl Check to make sure NumberOfArguments >= 1.  If it's not, then fatal error.
31m4_dnl
32m4_ifelse(m4_eval(NumberOfArguments < 1), 1, `m4_errprint(m4___file__:m4___line__`: NumberOfArguments ('NumberOfArguments`) is less than 1
33')m4_m4exit(1)')m4_dnl
34m4_dnl
35m4_dnl Include the BOOST_M4_FOR macro definition
36m4_dnl
37m4_include(`for.m4')`'m4_dnl
38m4_dnl
39m4_dnl Begin the generated file.
40m4_dnl
41// Copyright (C) 2000 Stephen Cleary
42//
43// Distributed under the Boost Software License, Version 1.0. (See accompany-
44// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
45//
46// See http://www.boost.org for updates, documentation, and revision history.
47
48m4_dnl These warnings apply to the file generated from this file.
49m4_dnl Of course, you may freely edit this file.
50// This file was AUTOMATICALLY GENERATED from "m4___file__"
51//  Do NOT include directly!
52//  Do NOT edit!
53
54m4_dnl
55m4_dnl First we define a simple 'cv_qual' macro which takes a number, either
56m4_dnl   0, 1, 2, or 3, and determines cv-qualification.
57m4_dnl
58m4_define(`cv_qual',
59`m4_ifelse($1, 0, `',
60`m4_ifelse($1, 1, `const ',
61`m4_ifelse($1, 2, `volatile ',
62`m4_ifelse($1, 3, `const volatile ',
63`m4_errprint(m4___file__:m4___line__: `Boost m4 script: cv-determiner: Not 0, 1, 2, or 3 (was '$1`)')'
64)')')')')m4_dnl
65m4_dnl
66m4_dnl Next we go through the actual loop.  For each number of arguments from
67m4_dnl   1 to NumberOfArguments, we create a template function that takes that
68m4_dnl   many template arguments, and also generate all cv-qualified permutations
69m4_dnl   of that function.
70m4_dnl
71BOOST_M4_FOR(N, 1, NumberOfArguments + 1,
72`BOOST_M4_FOR(cv, 0, m4_eval(4 ** N),
73  `template <BOOST_M4_FOR(i, 0, N, `typename T`'i', `, ')>
74element_type * construct(BOOST_M4_FOR(i, 0, N,
75    `cv_qual(m4_eval((cv >> (i * 2)) % 4))T`'i & a`'i', `, '))
76{
77  element_type * const ret = (malloc)();
78  if (ret == 0)
79    return ret;
80  try { new (ret) element_type(BOOST_M4_FOR(i, 0, N, `a`'i', `, ')); }
81  catch (...) { (free)(ret); throw; }
82  return ret;
83}
84')')