2006-09-04 10:26:34 +02:00
|
|
|
INCLUDEFILE(mailus)
|
|
|
|
|
|
|
|
includefile(concrete/intro)
|
|
|
|
|
|
|
|
lsect(FDSTREAMBUFFER)(Using file descriptors with `streambuf' classes)
|
|
|
|
|
|
|
|
lsubsect(OFDNBUF)(Classes for output operations)
|
|
|
|
includefile(concrete/fdout)
|
|
|
|
|
|
|
|
lsubsect(STRBUF)(Classes for input operations)
|
|
|
|
includefile(concrete/fdinput)
|
|
|
|
|
|
|
|
lsubsubsect(IFDBUF)(Using a one-character buffer)
|
|
|
|
includefile(concrete/fdinbuf)
|
|
|
|
|
|
|
|
lsubsubsect(IFDNBUF)(Using an n-character buffer)
|
|
|
|
includefile(concrete/fdninbuf)
|
|
|
|
|
|
|
|
lsubsubsect(IFDSEEK)(Seeking positions in `streambuf' objects)
|
|
|
|
includefile(concrete/fdinseek)
|
|
|
|
|
2010-02-23 16:42:24 +01:00
|
|
|
subsubsect(Multiple `unget' calls in `streambuf' objects)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/fdunget)
|
|
|
|
|
2011-05-26 09:56:03 +02:00
|
|
|
subsect(Fixed-sized field extraction from istream objects)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/fistream)
|
|
|
|
|
2011-05-26 09:56:03 +02:00
|
|
|
subsubsect(Member functions and example)
|
|
|
|
includefile(concrete/fistreamexample)
|
2011-06-08 21:22:06 +02:00
|
|
|
|
2010-02-24 16:47:33 +01:00
|
|
|
lsect(FORK)(The `fork' system call)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/fork)
|
|
|
|
|
2011-06-04 10:53:37 +02:00
|
|
|
subsect(A basic Fork class)
|
|
|
|
includefile(concrete/basicfork)
|
|
|
|
|
|
|
|
subsect(Parents and Children)
|
2011-06-08 21:22:06 +02:00
|
|
|
includefile(concrete/parents)
|
2011-06-04 10:53:37 +02:00
|
|
|
|
2006-09-04 10:26:34 +02:00
|
|
|
lsubsect(REDIRECTION)(Redirection revisited)
|
|
|
|
includefile(concrete/redirection)
|
|
|
|
|
|
|
|
lsubsect(DAEMON)(The `Daemon' program)
|
|
|
|
includefile(concrete/daemon)
|
|
|
|
|
|
|
|
lsubsect(PIPE)(The class `Pipe')
|
|
|
|
includefile(concrete/pipes)
|
|
|
|
|
|
|
|
subsect(The class `ParentSlurp')
|
|
|
|
includefile(concrete/parentslurp)
|
|
|
|
|
|
|
|
subsect(Communicating with multiple children)
|
|
|
|
includefile(concrete/children)
|
|
|
|
|
2011-06-04 10:53:37 +02:00
|
|
|
subsubsect(The class `Selector': interface)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/select)
|
|
|
|
|
2011-06-04 10:53:37 +02:00
|
|
|
subsubsect(The class `Selector': implementation)
|
|
|
|
includefile(concrete/selectimpl)
|
|
|
|
|
|
|
|
lsubsubsect(MONITOR)(The class `Monitor': interface)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/monitor)
|
|
|
|
|
2011-06-04 10:53:37 +02:00
|
|
|
subsubsect(The class `Monitor': s_handler)
|
|
|
|
includefile(concrete/shandler)
|
|
|
|
|
|
|
|
subsubsect(The class `Monitor': the member `run')
|
|
|
|
includefile(concrete/run)
|
|
|
|
|
|
|
|
subsubsect(The class `Monitor': example)
|
|
|
|
includefile(concrete/monitorexample)
|
|
|
|
|
2006-09-04 10:26:34 +02:00
|
|
|
lsubsubsect(CHILD)(The class `Child')
|
|
|
|
includefile(concrete/child)
|
|
|
|
|
|
|
|
lsect(BITFUN)(Function objects performing bitwise operations)
|
|
|
|
includefile(concrete/bitwise)
|
|
|
|
|
2014-01-11 18:08:19 +01:00
|
|
|
COMMENT(
|
|
|
|
lsect(A2X)(A text to anything converter)
|
|
|
|
includefile(concrete/a2x)
|
|
|
|
END)
|
2006-09-04 10:26:34 +02:00
|
|
|
|
2011-05-30 21:34:30 +02:00
|
|
|
sect(Adding binary operators to classes)
|
|
|
|
includefile(concrete/binop)
|
|
|
|
|
2011-06-17 17:36:48 +02:00
|
|
|
subsect(Binary operators allowing promotions)
|
|
|
|
includefile(concrete/promotions)
|
|
|
|
|
2014-01-13 21:08:12 +01:00
|
|
|
lsect(RANGER)(Range-based for-loops and pointer-ranges)
|
2012-01-05 17:07:45 +01:00
|
|
|
includefile(concrete/ranger)
|
2012-02-26 17:19:16 +01:00
|
|
|
|
2010-02-26 15:50:36 +01:00
|
|
|
lsect(PROXY)(Distinguishing lvalues from rvalues with operator[]())
|
|
|
|
includefile(concrete/proxy)
|
|
|
|
|
2010-02-26 21:44:29 +01:00
|
|
|
lsect(CONCRETEITER)(Implementing a `reverse_iterator')
|
|
|
|
includefile(concrete/iterators)
|
|
|
|
|
2012-02-22 22:24:03 +01:00
|
|
|
lsect(BisonAndFlex)(Using `bisonc++' and `flexc++')
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/bisonflex)
|
|
|
|
|
2012-02-22 22:24:03 +01:00
|
|
|
lsubsect(Flexpp)(Using `flexc++' to create a scanner)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/usingflex)
|
|
|
|
|
|
|
|
subsubsect(The derived class `Scanner')
|
|
|
|
includefile(concrete/lexer)
|
|
|
|
|
2011-06-13 14:17:48 +02:00
|
|
|
subsubsect(The lexical scanner specification file)
|
|
|
|
includefile(concrete/lexerspec)
|
|
|
|
|
2006-09-04 10:26:34 +02:00
|
|
|
subsubsect(Implementing `Scanner')
|
|
|
|
includefile(concrete/scanner)
|
|
|
|
|
|
|
|
subsubsect(Using a `Scanner' object)
|
|
|
|
includefile(concrete/scanmain)
|
|
|
|
|
2012-02-24 16:21:11 +01:00
|
|
|
lsubsubsect(BUILDFLEX)(Building the program)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/scancompile)
|
|
|
|
|
2012-02-22 22:24:03 +01:00
|
|
|
lsubsect(BISONFLEX)(Using `bisonc++' and `flexc++')
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/usingbison)
|
|
|
|
|
|
|
|
subsubsect(The `bisonc++' specification file)
|
|
|
|
includefile(concrete/bison)
|
|
|
|
|
2010-02-27 22:16:23 +01:00
|
|
|
lsubsubsubsect(BISONDEF)(The declaration section)
|
|
|
|
includefile(concrete/definition)
|
2006-09-04 10:26:34 +02:00
|
|
|
|
2010-02-27 22:16:23 +01:00
|
|
|
subsubsubsect(The grammar rules)
|
|
|
|
includefile(concrete/rules)
|
2006-09-04 10:26:34 +02:00
|
|
|
|
2010-02-27 22:16:23 +01:00
|
|
|
subsubsubsect(The Parser's header file)
|
|
|
|
includefile(concrete/parserh)
|
2006-09-04 10:26:34 +02:00
|
|
|
|
2012-02-24 16:21:11 +01:00
|
|
|
subsubsect(The `flexc++' specification file)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/bisonflexspec)
|
|
|
|
|
2012-02-24 16:21:11 +01:00
|
|
|
subsubsect(Building the program)
|
2006-09-04 10:26:34 +02:00
|
|
|
includefile(concrete/codegeneration)
|
2007-10-29 16:56:55 +01:00
|
|
|
|
2012-02-25 15:58:00 +01:00
|
|
|
lsubsect(BISONSEM)(Bisonc++: using polymorphic semantic values)
|
2007-10-29 16:56:55 +01:00
|
|
|
includefile(concrete/polymorphic)
|
|
|
|
|
|
|
|
subsubsect(The parser using a polymorphic semantic value type)
|
|
|
|
includefile(concrete/parser.yo)
|
|
|
|
|
2012-02-24 16:21:11 +01:00
|
|
|
lsubsubsect(TAG)
|
|
|
|
(Tagging the actual semantic type: the `enum class Tag')
|
|
|
|
includefile(concrete/tag)
|
|
|
|
|
|
|
|
subsubsect((Im)mutable semantic data: two base-structs)
|
|
|
|
includefile(concrete/mutable)
|
|
|
|
|
|
|
|
lsubsubsect(TAGTRAIT)
|
|
|
|
(Traits of semantic type tags: the `TagTrait' trait class)
|
|
|
|
includefile(concrete/tagtrait)
|
|
|
|
|
|
|
|
subsubsect(Accessing data from derived classes)
|
|
|
|
includefile(concrete/access)
|
|
|
|
|
|
|
|
subsubsect(The polymorphic base class `SemBase')
|
|
|
|
includefile(concrete/sembase)
|
|
|
|
|
|
|
|
subsubsect(The class template `Semantic', derived from `SemBase')
|
|
|
|
includefile(concrete/semantic)
|
|
|
|
|
|
|
|
subsubsect(Adding new semantic data types)
|
|
|
|
includefile(concrete/addtypes)
|
|
|
|
|
2012-02-26 17:11:11 +01:00
|
|
|
lsubsubsect(SPSEMBASE)(The parser's semantic value: `spSemBase')
|
2012-02-24 16:21:11 +01:00
|
|
|
includefile(concrete/spsembase)
|
|
|
|
|
2012-02-25 15:58:00 +01:00
|
|
|
subsubsect(The parser specification file)
|
|
|
|
includefile(concrete/polygram)
|
|
|
|
|
2007-10-29 16:56:55 +01:00
|
|
|
subsubsect(The scanner using a polymorphic semantic value type)
|
|
|
|
includefile(concrete/semscanner.yo)
|
2012-01-03 21:28:09 +01:00
|
|
|
|
2012-02-25 15:58:00 +01:00
|
|
|
COMMENT(
|
2014-01-13 21:08:12 +01:00
|
|
|
subsect(Using unrestricted unions as semantic values)
|
2012-01-09 18:45:24 +01:00
|
|
|
includefile(concrete/unrestricted)
|
2012-02-25 15:58:00 +01:00
|
|
|
END)
|