blob: 642f199c9609641a63c6e867cfd8aeec16541497 [file] [log] [blame]
// 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 main
import (
"log"
"os"
"text/template"
"mojom/generators/c/cgen"
"mojom/generators/c/templates"
"mojom/generators/common"
)
func main() {
tmpls := template.New("CTemplates")
template.Must(tmpls.Parse(templates.GenerateHeaderFile))
template.Must(tmpls.Parse(templates.GenerateSourceFile))
template.Must(tmpls.Parse(templates.GenerateEnum))
template.Must(tmpls.Parse(templates.GenerateStruct))
template.Must(tmpls.Parse(templates.GenerateUnion))
template.Must(tmpls.Parse(templates.GenerateInterface))
template.Must(tmpls.Parse(templates.GenerateTypeTableDeclarations))
template.Must(tmpls.Parse(templates.GenerateTypeTableDefinitions))
config := common.GetCliConfig(os.Args)
common.GenerateOutput(func(fileName string, config common.GeneratorConfig) {
headerWriter := common.OutputWriterByFilePath(fileName, config, ".mojom-c.h")
sourceWriter := common.OutputWriterByFilePath(fileName, config, ".mojom-c.c")
mojomFile := config.FileGraph().Files[fileName]
headerInfo := cgen.NewHeaderTemplate(config.FileGraph(), &mojomFile, config.SrcRootPath())
sourceInfo := cgen.NewSourceTemplate(config.FileGraph(), &mojomFile, config.SrcRootPath(), &headerInfo)
if err := tmpls.ExecuteTemplate(headerWriter, "GenerateHeaderFile", headerInfo); err != nil {
log.Fatal(err)
}
if err := tmpls.ExecuteTemplate(sourceWriter, "GenerateSourceFile", sourceInfo); err != nil {
log.Fatal(err)
}
log.Printf("Processed %s", fileName)
}, config)
}