| Index: mojom/mojom_parser/generators/common/common.go
|
| diff --git a/mojom/mojom_parser/generators/common/common.go b/mojom/mojom_parser/generators/common/common.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..aff5e28eddd94e83585e0039b7240d5f11248930
|
| --- /dev/null
|
| +++ b/mojom/mojom_parser/generators/common/common.go
|
| @@ -0,0 +1,57 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package common
|
| +
|
| +import (
|
| + "mojom/mojom_parser/generated/mojom_files"
|
| +)
|
| +
|
| +// common groups together functions which make it easier for generators
|
| +// implemented in go to implement the same interface.
|
| +
|
| +// GeneratorConfig is used to specify configuration for a generator.
|
| +type GeneratorConfig interface {
|
| + // FileGraph returns a parsed MojomFileGraph.
|
| + FileGraph() *mojom_files.MojomFileGraph
|
| +
|
| + // OutputDir returns an absolute path in which generator output must be
|
| + // written.
|
| + OutputDir() string
|
| +
|
| + // SrcRootPath returns an absolute path to the root of the source tree. This
|
| + // is used to compute the relative path from the root of the source tree to
|
| + // mojom files for which output is to be generated.
|
| + SrcRootPath() string
|
| +
|
| + // GenImports returns true if the generator should generate output files for
|
| + // all of the files in the provided file graph, including those that were not
|
| + // specified on the command line but are only present because they were
|
| + // referenced in an import statement. It returns false if the generator should
|
| + // generate output files only for the files which were explicitly specified
|
| + // (as indicated by the fact that they have a non-empty |SpecifiedFileName|).
|
| + GenImports() bool
|
| +}
|
| +
|
| +// Writer is the interface used by the generators to write their output.
|
| +// It is also made to faciliate testing by allowing generator code to write
|
| +// to a provided buffer such as a bytes.Buffer.
|
| +type Writer interface {
|
| + WriteString(s string) (n int, err error)
|
| +}
|
| +
|
| +// writeOutput is the type of the generator function which writes the specified
|
| +// file's generated code.
|
| +type writeOutput func(fileName string, config GeneratorConfig)
|
| +
|
| +// GenerateOutput iterates through the files in the file graph in |config| and
|
| +// for all the files for which an output should be generated, it uses
|
| +// writeOutput to write the generated output.
|
| +func GenerateOutput(writeOutput writeOutput, config GeneratorConfig) {
|
| + for fileName, file := range config.FileGraph().Files {
|
| + if config.GenImports() || *file.SpecifiedFileName != "" {
|
| + writeOutput(fileName, config)
|
| + }
|
| + }
|
| +}
|
|
|