summaryrefslogtreecommitdiff
path: root/cli-tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli-tests')
-rw-r--r--cli-tests/build/root.build3
-rw-r--r--cli-tests/combined/driver.cxx3
-rw-r--r--cli-tests/ctor/driver.cxx3
-rw-r--r--cli-tests/erase/driver.cxx4
-rw-r--r--cli-tests/file/driver.cxx3
-rw-r--r--cli-tests/group/driver.cxx43
-rw-r--r--cli-tests/group/testscript84
-rw-r--r--cli-tests/headings/buildfile6
-rw-r--r--cli-tests/headings/testscript36
-rw-r--r--cli-tests/inheritance/driver.cxx4
-rw-r--r--cli-tests/manifest6
-rw-r--r--cli-tests/merge/driver.cxx4
-rw-r--r--cli-tests/note/buildfile6
-rw-r--r--cli-tests/note/testscript197
-rw-r--r--cli-tests/position/buildfile9
-rw-r--r--cli-tests/position/driver.cxx47
-rw-r--r--cli-tests/position/test.cli13
-rw-r--r--cli-tests/position/testscript36
-rw-r--r--cli-tests/specifier/driver.cxx4
-rw-r--r--cli-tests/toc/buildfile6
-rw-r--r--cli-tests/toc/testscript155
21 files changed, 249 insertions, 423 deletions
diff --git a/cli-tests/build/root.build b/cli-tests/build/root.build
index 5f4b348..90a319a 100644
--- a/cli-tests/build/root.build
+++ b/cli-tests/build/root.build
@@ -16,7 +16,8 @@ if ($cxx.target.system == 'win32-msvc')
if ($cxx.class == 'msvc')
cxx.coptions += /wd4251 /wd4275 /wd4800
-using cli
+if ($build.mode != 'skeleton')
+ using cli
# Every exe{} in this project is by default a test.
#
diff --git a/cli-tests/combined/driver.cxx b/cli-tests/combined/driver.cxx
index dcbdd34..3e96f0c 100644
--- a/cli-tests/combined/driver.cxx
+++ b/cli-tests/combined/driver.cxx
@@ -9,6 +9,9 @@
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
int
diff --git a/cli-tests/ctor/driver.cxx b/cli-tests/ctor/driver.cxx
index ed306f4..72c1954 100644
--- a/cli-tests/ctor/driver.cxx
+++ b/cli-tests/ctor/driver.cxx
@@ -4,6 +4,9 @@
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
int
main (int argc, char* argv[])
{
diff --git a/cli-tests/erase/driver.cxx b/cli-tests/erase/driver.cxx
index af35836..a46df20 100644
--- a/cli-tests/erase/driver.cxx
+++ b/cli-tests/erase/driver.cxx
@@ -6,10 +6,12 @@
//
#include <string>
-#include <cassert>
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
int
diff --git a/cli-tests/file/driver.cxx b/cli-tests/file/driver.cxx
index eef7ef1..fe923cc 100644
--- a/cli-tests/file/driver.cxx
+++ b/cli-tests/file/driver.cxx
@@ -10,6 +10,9 @@
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
int
diff --git a/cli-tests/group/driver.cxx b/cli-tests/group/driver.cxx
index 68f6107..9a3c710 100644
--- a/cli-tests/group/driver.cxx
+++ b/cli-tests/group/driver.cxx
@@ -5,10 +5,14 @@
// Test group_scanner.
//
+#include <string>
#include <iostream>
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
int
@@ -25,27 +29,58 @@ main (int argc, char* argv[])
//
string m (argv[1]);
+ bool sa (m.find ('s') != string::npos);
+ bool sg (m.find ('g') != string::npos);
+
argv_scanner as (--argc, ++argv);
group_scanner s (as);
+ // Verify previous two args are still valid for good measure.
+ //
+ const char* prev_a (0);
+ string prev_s;
+
+ // Verify position.
+ //
+ size_t pos (0); // argv_scanner starts from 1.
+
while (s.more ())
{
- if (m.find ('s') == string::npos)
+ assert (pos < s.position ());
+ pos = s.position ();
+
+ s.peek ();
+ assert (pos == s.position ());
+
+ const char* a (0);
+ if (!sa)
{
- const char* a (s.next ());
+ a = s.next ();
cout << "'" << a << "'";
}
else
s.skip ();
- if (m.find ('g') == string::npos)
+ if (!sg)
{
scanner& gs (s.group ());
while (gs.more ())
cout << " '" << gs.next () << "'";
}
- cout << endl;
+ if (!sa || !sg)
+ cout << endl;
+
+ if (!sa && !sg)
+ {
+ s.more ();
+
+ if (prev_a != 0)
+ assert (prev_a == prev_s);
+
+ prev_a = a;
+ prev_s = a;
+ }
}
return 0;
diff --git a/cli-tests/group/testscript b/cli-tests/group/testscript
index 6269ca2..0b1d939 100644
--- a/cli-tests/group/testscript
+++ b/cli-tests/group/testscript
@@ -19,6 +19,14 @@ $* '' { --foo --bar }+ arg1 arg2 >>EOO
'arg2'
EOO
+: group-pre-pack
+:
+$* '' { --foo --bar }+ { arg1 arg2 } arg3 >>EOO
+'arg1' '--foo' '--bar'
+'arg2' '--foo' '--bar'
+'arg3'
+EOO
+
: group-pre-multi
:
$* '' { --foo }+ { --bar }+ arg1 arg2 >>EOO
@@ -26,6 +34,14 @@ $* '' { --foo }+ { --bar }+ arg1 arg2 >>EOO
'arg2'
EOO
+: group-pre-multi-pack
+:
+$* '' { --foo }+ { --bar }+ { arg1 arg2 } arg3 >>EOO
+'arg1' '--foo' '--bar'
+'arg2' '--foo' '--bar'
+'arg3'
+EOO
+
: group-post
:
$* '' arg1 arg2 +{ foo bar } >>EOO
@@ -33,6 +49,14 @@ $* '' arg1 arg2 +{ foo bar } >>EOO
'arg2' 'foo' 'bar'
EOO
+: group-post-pack
+:
+$* '' arg1 { arg2 arg3 } +{ foo bar } >>EOO
+'arg1'
+'arg2' 'foo' 'bar'
+'arg3' 'foo' 'bar'
+EOO
+
: group-post-multi
:
$* '' arg1 arg2 +{ foo } +{ bar } >>EOO
@@ -40,6 +64,14 @@ $* '' arg1 arg2 +{ foo } +{ bar } >>EOO
'arg2' 'foo' 'bar'
EOO
+: group-post-multi-pack
+:
+$* '' arg1 { arg2 arg3 } +{ foo } +{ bar } >>EOO
+'arg1'
+'arg2' 'foo' 'bar'
+'arg3' 'foo' 'bar'
+EOO
+
: group-both
:
$* '' arg1 { --foo --bar }+ arg2 +{ foo bar } arg3 >>EOO
@@ -48,6 +80,15 @@ $* '' arg1 { --foo --bar }+ arg2 +{ foo bar } arg3 >>EOO
'arg3'
EOO
+: group-both-pack
+:
+$* '' arg1 { --foo --bar }+ { arg2 arg3 } +{ foo bar } arg4 >>EOO
+'arg1'
+'arg2' '--foo' '--bar' 'foo' 'bar'
+'arg3' '--foo' '--bar' 'foo' 'bar'
+'arg4'
+EOO
+
: group-both-multi
:
$* '' arg1 { --foo }+ { --bar }+ arg2 +{ foo } +{ bar } arg3 >>EOO
@@ -56,6 +97,15 @@ $* '' arg1 { --foo }+ { --bar }+ arg2 +{ foo } +{ bar } arg3 >>EOO
'arg3'
EOO
+: group-both-multi-pack
+:
+$* '' arg1 { --foo }+ { --bar }+ { arg2 arg3 } +{ foo } +{ bar } arg4 >>EOO
+'arg1'
+'arg2' '--foo' '--bar' 'foo' 'bar'
+'arg3' '--foo' '--bar' 'foo' 'bar'
+'arg4'
+EOO
+
: multi-group
:
$* '' { --foo }+ arg1 arg2 +{ bar } >>EOO
@@ -63,6 +113,15 @@ $* '' { --foo }+ arg1 arg2 +{ bar } >>EOO
'arg2' 'bar'
EOO
+: multi-group-pack
+:
+$* '' { --foo }+ { arg1 arg2 } { arg3 arg4 } +{ bar } >>EOO
+'arg1' '--foo'
+'arg2' '--foo'
+'arg3' 'bar'
+'arg4' 'bar'
+EOO
+
: empty-group
:
$* '' { }+ arg1 arg2 +{ } >>EOO
@@ -70,6 +129,13 @@ $* '' { }+ arg1 arg2 +{ } >>EOO
'arg2'
EOO
+: empty-group-pack
+:
+$* '' { }+ { arg1 arg2 } +{ } >>EOO
+'arg1'
+'arg2'
+EOO
+
: escape-arg
:
$* '' '\{' '\}' '\+{' '\}+' '{x' '}x' >>EOO
@@ -87,10 +153,16 @@ $* '' { '\{' '\}' '\+{' '\}+' '{x' '}x' }+ arg >>EOO
'arg' '{' '}' '+{' '}+' '{x' '}x'
EOO
-: not-group
+: pack-no-group
:
-$* '' { --foo } 2>>EOE != 0
-expected group separator '}+' instead of '}', use '\}' to escape
+$* '' { --foo } { arg2 }+ 2>>EOE != 0
+unexpected group separator '{', use '\{' to escape
+EOE
+
+: empty-pack
+:
+$* '' { --foo }+ { } 2>>EOE != 0
+unexpected group separator '{', use '\{' to escape
EOE
: no-arg-pre
@@ -135,6 +207,8 @@ EOE
: unhandled-group-skip
:
-$* 'sg' { --foo }+ arg +{ bar } >>EOO
+$* 'sg' { --foo }+ arg +{ bar }
-EOO
+: unhandled-group-skip-pack
+:
+$* 'sg' { --foo }+ { arg1 arg2 } +{ bar }
diff --git a/cli-tests/headings/buildfile b/cli-tests/headings/buildfile
deleted file mode 100644
index af3ae75..0000000
--- a/cli-tests/headings/buildfile
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : headings/buildfile
-# license : MIT; see accompanying LICENSE file
-
-./: testscript $cli
-
-testscript{*}: test = $cli
diff --git a/cli-tests/headings/testscript b/cli-tests/headings/testscript
deleted file mode 100644
index 0efb7ae..0000000
--- a/cli-tests/headings/testscript
+++ /dev/null
@@ -1,36 +0,0 @@
-# file : headings/testscript
-# license : MIT; see accompanying LICENSE file
-
-: auto-headings
-:
-: Note that auto-headings break if we split into multiple doc strings.
-:
-cat <<EOI >=map.cli;
-"
-\h1|Heading 1|
-
-\h|Heading 1.1|
-
-\h2|Heading 1.1.1|
-
-\h|Heading 1.2|
-
-\h2|Heading 1.2.1|
-
-\h1|Heading 2|
-"
-EOI
-$* --generate-html --stdout map.cli >>EOO
- <h1>Heading 1</h1>
-
- <h2>Heading 1.1</h2>
-
- <h3>Heading 1.1.1</h3>
-
- <h2>Heading 1.2</h2>
-
- <h3>Heading 1.2.1</h3>
-
- <h1>Heading 2</h1>
-
-EOO
diff --git a/cli-tests/inheritance/driver.cxx b/cli-tests/inheritance/driver.cxx
index 4acab0d..f0860fd 100644
--- a/cli-tests/inheritance/driver.cxx
+++ b/cli-tests/inheritance/driver.cxx
@@ -6,11 +6,13 @@
//
#include <string>
-#include <cassert>
#include <iostream>
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
int
diff --git a/cli-tests/manifest b/cli-tests/manifest
index 0ff0825..4c3626b 100644
--- a/cli-tests/manifest
+++ b/cli-tests/manifest
@@ -1,6 +1,6 @@
: 1
name: cli-tests
-version: 1.2.0-b.7.z
+version: 1.2.0
project: cli
summary: Tests for the CLI compiler for C++
license: MIT
@@ -10,5 +10,5 @@ doc-url: https://www.codesynthesis.com/projects/cli/doc/guide/
src-url: https://git.codesynthesis.com/cgit/cli/cli/tree/cli-tests/
email: cli-users@codesynthesis.com ; Mailing list
requires: c++14
-depends: * build2 >= 0.13.0
-depends: * bpkg >= 0.13.0
+depends: * build2 >= 0.16.0
+depends: * bpkg >= 0.16.0
diff --git a/cli-tests/merge/driver.cxx b/cli-tests/merge/driver.cxx
index 43b1c59..94dc16e 100644
--- a/cli-tests/merge/driver.cxx
+++ b/cli-tests/merge/driver.cxx
@@ -6,10 +6,12 @@
//
#include <string>
-#include <cassert>
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
template <typename T, int N1, int N2>
diff --git a/cli-tests/note/buildfile b/cli-tests/note/buildfile
deleted file mode 100644
index c8cf49b..0000000
--- a/cli-tests/note/buildfile
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : note/buildfile
-# license : MIT; see accompanying LICENSE file
-
-./: testscript $cli
-
-testscript{*}: test = $cli
diff --git a/cli-tests/note/testscript b/cli-tests/note/testscript
deleted file mode 100644
index 9f00811..0000000
--- a/cli-tests/note/testscript
+++ /dev/null
@@ -1,197 +0,0 @@
-# file : note/testscript
-# license : MIT; see accompanying LICENSE file
-
-: block-basics
-:
-cat <<EOI >=test.cli;
-"
-Leading paragraph.
-
-\N|This is a note block one.|
-
-Interleaving paragraph that is quite long and therefore it may span many
-lines in order to make text easy to read.
-
-\N|This is a note block two that is quite long and therefore it may span many
-lines in order to make text easy to read.|
-
-Trailing paragraph.
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
- <p>Leading paragraph.</p>
-
- <div class="note">
- <p>This is a note block one.</p>
- </div>
-
- <p>Interleaving paragraph that is quite long and therefore it may span many
- lines in order to make text easy to read.</p>
-
- <div class="note">
- <p>This is a note block two that is quite long and therefore it may span
- many lines in order to make text easy to read.</p>
- </div>
-
- <p>Trailing paragraph.</p>
-
-EOO
- $* --generate-txt --stdout test.cli >>EOO
-Leading paragraph.
-
-| This is a note block one.
-
-Interleaving paragraph that is quite long and therefore it may span many lines
-in order to make text easy to read.
-
-| This is a note block two that is quite long and therefore it may span many
-| lines in order to make text easy to read.
-
-Trailing paragraph.
-EOO
-
-
-: block-multi-para
-:
-cat <<EOI >=test.cli;
-"
-\N|
-This is a note para one that is quite long and therefore it may span many
-lines in order to make text easy to read.
-
-This is a note para two.
-|
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
- <div class="note">
- <p>This is a note para one that is quite long and therefore it may span many
- lines in order to make text easy to read.</p>
-
- <p>This is a note para two.</p>
- </div>
-
-EOO
-$* --generate-txt --stdout test.cli >>EOO
-| This is a note para one that is quite long and therefore it may span many
-| lines in order to make text easy to read.
-|
-| This is a note para two.
-EOO
-
-: block-pre
-:
-cat <<EOI >=test.cli;
-"
-
-\N|
-This is a note para one.
-
-\
-And this is a
-pre-formatter text fragment.
-\
-
-|
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
- <div class="note">
- <p>This is a note para one.</p>
-
- <pre>And this is a
-pre-formatter text fragment.</pre>
- </div>
-
-EOO
-$* --generate-txt --stdout test.cli >>EOO
-| This is a note para one.
-|
-| And this is a
-| pre-formatter text fragment.
-EOO
-
-# This is not yet supported (see txt_wrap_lines()).
-#
-#\
-: block-list
-:
-cat <<EOI >=test.cli;
-"
-\N|This is a note para one followed by a list.
-
-\ul|
-
-\li|This is a list item that is quite long and therefore it may span many
-lines in order to make text easy to read.|||
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
-EOO
-$* --generate-txt --stdout test.cli >>EOO
-EOO
-#\
-
-: block-in-list
-:
-cat <<EOI >=test.cli;
-"
-\ul|
-
-\li|Normal text para.
-
-\N|This is a note para one that is quite long and therefore it may span many
-lines in order to make text easy to read.|||
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
- <ul>
- <li>Normal text para.
-
- <div class="note">
- <p>This is a note para one that is quite long and therefore it may span many
- lines in order to make text easy to read.</p>
- </div></li>
- </ul>
-
-EOO
-$* --generate-txt --stdout test.cli >>EOO
-* Normal text para.
-
- | This is a note para one that is quite long and therefore it may span many
- | lines in order to make text easy to read.
-EOO
-
-
-: span-basics
-:
-cat <<EOI >=test.cli;
-"
-This is normal text. \N{This is a note.} And this is normal text again.
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
- <p>This is normal text. <span class="note">This is a note.</span> And this
- is normal text again.</p>
-
-EOO
- $* --generate-txt --stdout test.cli >>EOO
-This is normal text. [Note: This is a note.] And this is normal text again.
-EOO
-
-
-: span-nested-link
-:
-cat <<EOI >=test.cli;
-"
-\N{This is a note with a \l{https://example.com link} inside.}
-"
-EOI
-$* --generate-html --stdout test.cli >>EOO;
- <p><span class="note">This is a note with a <a
- href="https://example.com">link</a> inside.</span></p>
-
-EOO
-$* --generate-txt --stdout test.cli >>EOO
-[Note: This is a note with a link (https://example.com) inside.]
-EOO
diff --git a/cli-tests/position/buildfile b/cli-tests/position/buildfile
new file mode 100644
index 0000000..371cc54
--- /dev/null
+++ b/cli-tests/position/buildfile
@@ -0,0 +1,9 @@
+# file : position/buildfile
+# license : MIT; see accompanying LICENSE file
+
+exe{driver}: {hxx cxx}{* -test} cli.cxx{test} testscript
+
+cxx.poptions =+ "-I$out_base"
+
+cli.cxx{test}: cli{test}
+cli.options = --generate-file-scanner --generate-specifier
diff --git a/cli-tests/position/driver.cxx b/cli-tests/position/driver.cxx
new file mode 100644
index 0000000..df45f5b
--- /dev/null
+++ b/cli-tests/position/driver.cxx
@@ -0,0 +1,47 @@
+// file : position/driver.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// license : MIT; see accompanying LICENSE file
+
+// Test argument/option position.
+//
+#include <iostream>
+
+#include "test.hxx"
+
+#undef NDEBUG
+#include <cassert>
+
+using namespace std;
+
+int
+main (int argc, char* argv[])
+{
+ try
+ {
+ cli::argv_file_scanner scan (argc, argv, "--file");
+ options ops (scan);
+
+ if (ops.a_specified ())
+ cout << ops.a ().second << ": " << "-a " << ops.a ().first << endl;
+
+ for (const pair<int, size_t>& b: ops.b ())
+ {
+ cout << b.second << ": " << "-b " << b.first << endl;
+ }
+
+ while (scan.more ())
+ {
+ // Note that calling position() inside `cout << ...` depends on order of
+ // argument evaluation.
+ //
+ size_t p (scan.position ());
+ cout << p << ": " << scan.next () << endl;
+ }
+
+ cout << "max: " << scan.position () << endl;
+ }
+ catch (const cli::exception& e)
+ {
+ cerr << e << endl;
+ }
+}
diff --git a/cli-tests/position/test.cli b/cli-tests/position/test.cli
new file mode 100644
index 0000000..7fc8655
--- /dev/null
+++ b/cli-tests/position/test.cli
@@ -0,0 +1,13 @@
+// file : position/test.cli
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// license : MIT; see accompanying LICENSE file
+
+include <vector>;
+include <utility>;
+include <cstddef>;
+
+class options
+{
+ std::pair<int, std::size_t> -a;
+ std::vector<std::pair<int, std::size_t> > -b;
+};
diff --git a/cli-tests/position/testscript b/cli-tests/position/testscript
new file mode 100644
index 0000000..568e571
--- /dev/null
+++ b/cli-tests/position/testscript
@@ -0,0 +1,36 @@
+# file : position/testscript
+# license : MIT; see accompanying LICENSE file
+
+: basics
+:
+$* -b 1 -a 2 -b 3 foo bar baz >>EOO
+3: -a 2
+1: -b 1
+5: -b 3
+7: foo
+8: bar
+9: baz
+max: 10
+EOO
+
+: override
+:
+$* -a 1 -a 2 >>EOO
+3: -a 2
+max: 5
+EOO
+
+: file
+:
+cat <<EOI >=test.ops;
+-a 2
+EOI
+$* -b 1 --file test.ops -b 2 foo bar baz >>EOO
+5: -a 2
+1: -b 1
+7: -b 2
+9: foo
+10: bar
+11: baz
+max: 12
+EOO
diff --git a/cli-tests/specifier/driver.cxx b/cli-tests/specifier/driver.cxx
index 50b9cf5..15b9695 100644
--- a/cli-tests/specifier/driver.cxx
+++ b/cli-tests/specifier/driver.cxx
@@ -6,10 +6,12 @@
//
#include <string>
-#include <cassert>
#include "test.hxx"
+#undef NDEBUG
+#include <cassert>
+
using namespace std;
int
diff --git a/cli-tests/toc/buildfile b/cli-tests/toc/buildfile
deleted file mode 100644
index 3be6359..0000000
--- a/cli-tests/toc/buildfile
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : toc/buildfile
-# license : MIT; see accompanying LICENSE file
-
-./: testscript $cli
-
-testscript{*}: test = $cli
diff --git a/cli-tests/toc/testscript b/cli-tests/toc/testscript
deleted file mode 100644
index 70e9065..0000000
--- a/cli-tests/toc/testscript
+++ /dev/null
@@ -1,155 +0,0 @@
-# file : toc/testscript
-# license : MIT; see accompanying LICENSE file
-
-: toc
-:
-cat <<EOI >=toc.cli;
-"\h1|Table of Contents|"
-"\$TOC$"
-
-"
-\h0#preface|Preface|
-
-This document describes something awesome.
-
-\h#about-document|About This Document|
-
-And this document is also awesome.
-
-\h#more-information|More Information|
-
-It is so awesome that no further information will be required."
-
-"
-\H#part1|PART I|
-
-Start of part one.
-
-\h1#intro|Introduction|
-
-Beginning of the first chapter.
-
-\h#arch-flow|Architecture and Workflow|
-
-Some basics.
-
-\h#benefits|Benefits|
-
-You will like them.
-
-\h1#hello|Hello World|
-
-Beginning of the second chapter.
-
-\h#hell-setup|Setup|
-
-More basics.
-
-\h#hello-compile|Compiling|
-
-How to build the example
-
-\h2#hello-compile-gcc|Compiling with GCC|
-
-GCC. For Clang see \l{#hello-compile-clang Compiling with Clang}.
-
-\h2#hello-compile-clang|Compiling with Clang|
-
-Clang. For GCC see \l{#hello-compile-gcc Compiling with GCC}.
-
-\h#hello-conclusion|Conclusion|
-
-Some remarks.
-"
-EOI
-$* --generate-html --stdout toc.cli >>EOO
- <h1>Table of Contents</h1>
-
- <table class="toc">
- <tr><td class="preface" colspan="2"><a href="#preface">Preface</a>
- <table class="toc">
- <tr><td class="preface" colspan="2"><a href="#about-document">About
-This Document</a></td></tr>
- <tr><td class="preface" colspan="2"><a href="#more-information">More
-Information</a></td></tr>
- </table>
- </td></tr>
- <tr><th colspan="2"><a href="#part1">PART I</a></th></tr>
- <tr><th>1</th><td><a href="#intro">Introduction</a>
- <table class="toc">
- <tr><th>1.1</th><td><a href="#arch-flow">Architecture and
-Workflow</a></td></tr>
- <tr><th>1.2</th><td><a href="#benefits">Benefits</a></td></tr>
- </table>
- </td></tr>
- <tr><th>2</th><td><a href="#hello">Hello World</a>
- <table class="toc">
- <tr><th>2.1</th><td><a href="#hell-setup">Setup</a></td></tr>
- <tr><th>2.2</th><td><a href="#hello-compile">Compiling</a>
- <table class="toc">
- <tr><th>2.2.1</th><td><a href="#hello-compile-gcc">Compiling with
-GCC</a></td></tr>
- <tr><th>2.2.2</th><td><a href="#hello-compile-clang">Compiling
-with Clang</a></td></tr>
- </table>
- </td></tr>
- <tr><th>2.3</th><td><a href="#hello-conclusion">Conclusion</a></td></tr>
- </table>
- </td></tr>
- </table>
-
- <h1 id="preface" class="preface">Preface</h1>
-
- <p>This document describes something awesome.</p>
-
- <h2 id="about-document">About This Document</h2>
-
- <p>And this document is also awesome.</p>
-
- <h2 id="more-information">More Information</h2>
-
- <p>It is so awesome that no further information will be required.</p>
-
- <h1 id="part1" class="part">PART I</h1>
-
- <p>Start of part one.</p>
-
- <h1 id="intro">1 Introduction</h1>
-
- <p>Beginning of the first chapter.</p>
-
- <h2 id="arch-flow">1.1 Architecture and Workflow</h2>
-
- <p>Some basics.</p>
-
- <h2 id="benefits">1.2 Benefits</h2>
-
- <p>You will like them.</p>
-
- <h1 id="hello">2 Hello World</h1>
-
- <p>Beginning of the second chapter.</p>
-
- <h2 id="hell-setup">2.1 Setup</h2>
-
- <p>More basics.</p>
-
- <h2 id="hello-compile">2.2 Compiling</h2>
-
- <p>How to build the example</p>
-
- <h3 id="hello-compile-gcc">2.2.1 Compiling with GCC</h3>
-
- <p>GCC. For Clang see <a href="#hello-compile-clang">Compiling with
- Clang</a>.</p>
-
- <h3 id="hello-compile-clang">2.2.2 Compiling with Clang</h3>
-
- <p>Clang. For GCC see <a href="#hello-compile-gcc">Compiling with
- GCC</a>.</p>
-
- <h2 id="hello-conclusion">2.3 Conclusion</h2>
-
- <p>Some remarks.</p>
-
-EOO