Data::Hopen::Toolchain - SUPERSEDED base class for hopen toolchains


TODO - change this to "Tool" instead of "Toolchain" - permit loading any number of tools - The Generator specifies a default list of tools rather than a single default toolchain. - add G::ToolOp to invoke tools. A ToolOp will take a language and an opcode and invoke a corresponding Tool. E.g., a GNU C Tool will generate command-line options for gcc-style command lines. - Only one Tool may be loaded for each (language, opcode) pair. Otherwise the build would be ambiguous. - In Conventions, define the formats for languages and opcodes.

Maybe TODO: - Each Generator must specify a list of Content-Types (media types) it can consume. Each Tool must specify a specific content-type it produces. Mismatches are an error unless overriden on the hopen command line.

The code that generates command lines to invoke specific toolchains lives under Data::Hopen::Toolchain. Those modules must implement the interface defined here.



A Path::Class::Dir instance specifying the root directory of the project


A Path::Class::Dir instance specifying where the generated output should be written.


A toolchain (Data::Hopen::Toolchain subclass) is a Visitor.

TODO Figure out if the toolchain has access to Data::Hopen::G::Link instances.


Do whatever the toolchain wants to do with a Data::Hopen::G::Goal. By default, no-op.


Do whatever the toolchain wants to do with a Data::Hopen::G::Op that is not a Goal (see "visit_goal"). By default, no-op.


Do whatever the toolchain wants to do to finish up.