Home | Forum | User Documentation | Developer Documentation

Tools used in the build process

The build process uses several tools to generate source code. This document deals with the internal tools developed specifically for building the Buzé/Armstrong projects (but which can be and are used in other projects as well).

Zidl tool - Zzub Interface Description Language

Zidl reads a public interface file as input, and produces source code in various programming languages as output.

Interface files are text files in zidl language, which supports enums, namespaces, structs, classes, methods and callbacks used to interoperate with a library.

The output source file can be a C header, Lua and Python bindings, XML documentation and more.

History

Zidl was originally developed by Paniq as a means to use the zzub C++ library from a Python application. The original zidl was written in Python. Later, zidl was ported to C++ by clvn using the re2c lexer and lemon parser generator. The new version later added support for more features and languages. zzub was also renamed to Armstrong some time along the way, but the z was stuck

Using zidl

Zidl uses C as the "lowest common denominator" for cross-language interopability, as most scripting languages can use libraries in C. Zidl can be used in C/C++ projects to expose desired functionality to scripting engines. It is likely also usable from other languages capable of producing shared libraries with C calling conventions (f.ex Delphi).

A library typically generates its public interface header using zidl, and implements the interface methods using C calling conventions.

Given the zidl file and the installed shared library, users can then generate Lua and Python bindings which call into the final library binary exposing the C interface.

Download and Source Code

Get the source code and cross platform project files from the following Subversion repository:

	svn://anders-e.com/zidl/trunk/zidl

Latest binaries for Windows exist in the win32deps directory of the Buzé repository.

Documentgen tool - C++ code generator for SQLite

documentgen reads a database description from a JSON file and produces C++ code to assist working with a SQLite database.

The output C++ code contains:

History

The documentgen tool was developed to automate and simplify the process of making changes to the file format used by Buzé. Buzé uses SQLite internally to contain song data, and also as a file format when saving projects to disk. The tool has been generalized to be used in any suitable SQLite/C++ project.

Download and Source Code

Get the source code and cross platform project files from the following Subversion repository:

	svn://anders-e.com/dbgenpp/trunk/dbgenpp

Latest binaries for Windows exist in the win32deps directory of the Buzé repository.