Provide Go access to CFCBindCore and CFCC.
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/d70fa601 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/d70fa601 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/d70fa601 Branch: refs/heads/master Commit: d70fa6012b734541a8413e1f0a71e256768a270b Parents: 77d8294 Author: Marvin Humphrey <[email protected]> Authored: Tue Nov 4 17:09:55 2014 -0800 Committer: Marvin Humphrey <[email protected]> Committed: Sun Mar 15 18:05:43 2015 -0700 ---------------------------------------------------------------------- compiler/go/cfc/cfc.go | 72 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/d70fa601/compiler/go/cfc/cfc.go ---------------------------------------------------------------------- diff --git a/compiler/go/cfc/cfc.go b/compiler/go/cfc/cfc.go index b46fafe..6533a0a 100644 --- a/compiler/go/cfc/cfc.go +++ b/compiler/go/cfc/cfc.go @@ -34,6 +34,14 @@ type Hierarchy struct { ref *C.CFCHierarchy } +type BindCore struct { + ref *C.CFCBindCore +} + +type BindC struct { + ref *C.CFCC +} + func NewHierarchy(dest string) Hierarchy { destCString := C.CString(dest) defer C.free(unsafe.Pointer(destCString)) @@ -49,3 +57,67 @@ func (obj *Hierarchy) RunDecRef() { func (obj *Hierarchy) Build() { C.CFCHierarchy_build(obj.ref) } + +func (obj Hierarchy) AddSourceDir(dir string) { + dirCString := C.CString(dir) + defer C.free(unsafe.Pointer(dirCString)) + C.CFCHierarchy_add_source_dir(obj.ref, dirCString) +} + +func (obj Hierarchy) AddIncludeDir(dir string) { + dirCString := C.CString(dir) + defer C.free(unsafe.Pointer(dirCString)) + C.CFCHierarchy_add_include_dir(obj.ref, dirCString) +} + +func (obj Hierarchy) WriteLog() { + C.CFCHierarchy_write_log(obj.ref) +} + +func NewBindCore(hierarchy Hierarchy, header string, footer string) BindCore { + headerCString := C.CString(header) + footerCString := C.CString(footer) + defer C.free(unsafe.Pointer(headerCString)) + defer C.free(unsafe.Pointer(footerCString)) + obj := BindCore{ + C.CFCBindCore_new(hierarchy.ref, headerCString, footerCString), + } + runtime.SetFinalizer(&obj, (*BindCore).RunDecRef) + return obj +} + +func (obj BindCore) RunDecRef() { + C.CFCBase_decref((*C.CFCBase)(unsafe.Pointer(obj.ref))) +} + +func (obj BindCore) WriteAllModified(modified bool) bool { + var mod C.int = 0 + if modified { + mod = 1 + } + return C.CFCBindCore_write_all_modified(obj.ref, mod) != 0 +} + +func NewBindC(hierarchy Hierarchy, header string, footer string) BindC { + headerCString := C.CString(header) + footerCString := C.CString(footer) + defer C.free(unsafe.Pointer(headerCString)) + defer C.free(unsafe.Pointer(footerCString)) + obj := BindC{ + C.CFCC_new(hierarchy.ref, headerCString, footerCString), + } + runtime.SetFinalizer(&obj, (*BindC).RunDecRef) + return obj +} + +func (obj BindC) RunDecRef() { + C.CFCBase_decref((*C.CFCBase)(unsafe.Pointer(obj.ref))) +} + +func (obj BindC) WriteCallbacks() { + C.CFCC_write_callbacks(obj.ref) +} + +func (obj BindC) WriteHostDefs() { + C.CFCC_write_hostdefs(obj.ref) +}
