includefile(polymorphism/intro)

lsect(virfunc)(Virtual functions)
includefile(polymorphism/function)

    lsubsect(CONSPOLY)(Constructors of polymorhic classes)
    includefile(polymorphism/construct)

lsect(VIRTDES)(Virtual destructors)
includefile(polymorphism/destructor)

sect(Pure virtual functions)
includefile(polymorphism/pure)

    subsect(Implementing pure virtual functions)
    includefile(polymorphism/implementing)

lsect(FINAL)(Explicit virtual overrides)
includefile(polymorphism/explicit)
COMMENT(FBB: TODO: transaction_safe, transaction_safe_dynamic)

lsect(MULTIPLEPOLYMORPH)(Virtual functions and multiple inheritance)
includefile(polymorphism/multiple)

    subsect(Ambiguity in multiple inheritance)
    includefile(polymorphism/ambiguity)

    lsubsect(VIRTUALBASE)(Virtual base classes)
    includefile(polymorphism/base)

    subsect(When virtual derivation is not appropriate)
    includefile(polymorphism/notvirtual)

lsect(RTTI)(Run-time type identification)
includefile(polymorphism/rtti)

        lsubsect(DYNAMICCAST)(The dynamic_cast operator)
        includefile(polymorphism/dynamiccast)

        lsubsect(TYPEID)(The `typeid' operator)
        includefile(polymorphism/typeid)

lsect(INHERITWHY)(Inheritance: when to use to achieve what?)
includefile(polymorphism/inheritance)

lsect(STREAMBUF)(The `streambuf' class)
includefile(polymorphism/streambufdef)

    lsubsect(SBPROTECTED)(Protected `streambuf' members)
    includefile(polymorphism/protectedstreambuf)

        subsubsect(Protected members for input operations)
        includefile(polymorphism/protectedinput)

        subsubsect(Protected members for output operations)
        includefile(polymorphism/protectedoutput)

        subsubsect(Protected members for buffer manipulation)
        includefile(polymorphism/protectedbuffer)

        subsubsect(Deriving classes from `streambuf')
        includefile(polymorphism/derivingfromstreambuf)

    lsubsect(IOSTREAMBUF)(A streambuf used for input and output)
    includefile(polymorphism/iostreambuf)

        subsubsect(Keeping track of the offset)
        includefile(polymorphism/offset)

        subsubsect(The members overflow and underflow)
        includefile(polymorphism/overunder)
        
        subsubsect(Overriding uflow?)
        includefile(polymorphism/uflow)
        
        subsubsect(When are which members called?)
        includefile(polymorphism/whencalled)
        
        subsubsect(The member xsgetn)
        includefile(polymorphism/xsgetn)

        subsubsect(The member xsputn)
        includefile(polymorphism/xsputn)

    lsubsect(FILEBUF)(The class `filebuf')
    includefile(polymorphism/filebuf)

COMMENT(
* OBS:    lsubsect(STREAMINIT)
*         (Safely interfacing streams to another std::streambuf)
*     includefile(polymorphism/init)
* 
* OBS: lsect(IOSTREAM)(Reading and writing using `std::iostream')
* includefile(polymorphism/iostream)
END)


lsect(POLYMORPHEXCEPTION)(A polymorphic exception class)
includefile(polymorphism/exception)

lsect(howpolymorphism)(How polymorphism is implemented)
includefile(polymorphism/implementation)

lsect(VTABLE)(Undefined reference to vtable ...)
includefile(polymorphism/undefined)

lsect(VIRTCONS)(Virtual constructors)
includefile(polymorphism/constructors)

