Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History
 
 

gocode

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Overview

There is now a user guide and this document is for development of the SBE golang generator.

Code Layout

The Java code that performs the generation of golang code is here.

Golang code used for testing resides in the top-level gocode directory.

Building and testing

At some point the golang build will be better integrated into gradle. For the time being some instructions/procedures are encoded into a gnu Makefile in the top level gocode directory

To match golang's requirement on directory structure and file layout, the build environment, example and test code are structured into a top level gocode directory hierarchy.

Code is generated into this structure with pre-existing test code in place.

For the example, the code is generated into a library and the matching example code lives in it's own directory at the same level. For example, the example-schema generates the baseline library code into gocode/src/baseline and example code lives in gocode/src/example-schema.

To use this layout you should set GOPATH=/path/to/gocode or use the supplied Makefile which does this for you. For the tests you will need to not have GOPATH set or use the supplied Makefile which does this for you.

Available make targets are:

example will generate golang for the example schema (and extensions) and run some test code that goes with it.

test will generate golang for some test schemas and run some test code for them.

bench will run some benchmarking code based on the Car example.

Design choices

Most of the design choice rationale is contained in the user guide however, some design decisions are based around the structure of sbe-tool itself.

sbe-tool parses the XML into an internal representation (IR) and then passes this to the language specific generator. It is this IR which a generator processes.

Roadmap

  • Windows developer support (currently tested on Linux/MacOS)
  • Further Unicode support
  • Testing/Bug fixes