includefile(coroutines/intro.yo)

sect(Defining a coroutine)
includefile(coroutines/defining.yo)

    subsect(The coroutine's State class (promise_type))
    includefile(coroutines/state.yo)

        subsubsect(What if `suspend_never' is used?)
        includefile(coroutines/suspendnever.yo)

    lsubsect(STATEBASE)(Simplifying the state class)
    includefile(coroutines/statebase1.yo)
        
sect(Embedding coroutines in classes)
includefile(coroutines/embedding.yo)

    subsect(The `Reader' coroutine handler)
    includefile(coroutines/reader.yo)

    subsect(The `Writer' coroutine handler)
    includefile(coroutines/writer.yo)

sect(`Awaitables', `Awaiters' and `co_await')
includefile(coroutines/coawait.yo)
    
    lsect(AWAITER)(The class `Awaiter')
    includefile(coroutines/awaiter.yo)

    lsect(SETSTATE)(Accessing State from inside coroutines)
    includefile(coroutines/access.yo)

lsect(FSACORO)(Finite State Automatons via coroutines)
includefile(coroutines/fsa.yo)

    subsect(The `Start' handler class)
    includefile(coroutines/starthandler.yo)

    subsect(Completing the Finite State Automaton)
    includefile(coroutines/completingfsa.yo)

sect(Recursive coroutines)
includefile(coroutines/recursive.yo)

    subsect(Recursively calling recursiveCoro)
    includefile(coroutines/recursively.yo)

    subsect(Beyond a single recursive call)
    includefile(coroutines/beyond.yo)

sect(Coroutine iterators)
includefile(coroutines/iterators.yo)

sect(Visiting directories using coroutines)
includefile(coroutines/visiting.yo)

    subsect(The `Dir' class showing directory entries)
    includefile(coroutines/dir.yo)

    subsect(Visiting directories using coroutines)
    includefile(coroutines/corodir.yo)

    subsect(Functions vs. coroutines)
    includefile(coroutines/comparing.yo)

