From Mr. Fletcher:
====
I have made quite a lot of progress with binding Metakit, using
SWIG (http://www.swig.org/). All that this needs, once you have
SWIG, is to make a local copy of the Metakit header and run this
SWIG file
-----------------------
/* File : mk4.i */
%module mk4
%{
#include "mk4.h"
%}
/* First attempt at mk4 interface */
%include "mk4.h"
----------------------
Here is a translation of part of the Metakit demo. Notice
(1) that all the Metakit classes have an initial capital letter. This is
a requirement of Ruby and the translation is done by SWIG, which
also gives a warning.
(2) In this simple version some functionality is lost, in particular [ ]
operations on the view. Some of this can be restored by adding
things to the SWIG interface. I was concerned to get something
operational.
(3) I have only tried this on Linux using SWIG 1.3.16 and gcc 3.2.
----------------------------
# test file for ruby interface for Metakit
# load the package, which must have a lower case name.
require 'mk4'
include Mk4
puts "A first test of Metakit running via Ruby"
puts "John Fletcher June 2003 J.P.Fletcher / aston.ac.uk"
puts "This is intended as a translation of demo.cpp"
pName = C4_StringProp.new("name")
pCountry = C4_StringProp.new("country")
storage = C4_Storage.new("myfile.dat",1)
vAddress = storage.GetAs("address[name:S,country:S]")
row = C4_Row.new()
# These do not translate directly
#pName (row) = "John Williams"
#pCountry (row) = "UK"
#row = pName["John Williams"]
#row.pName = "John Williams"
# This has to be used instead.
pName.Set(row,"John Williams")
pCountry.Set(row,"UK")
vAddress.Add(row)
pName.Set(row,"Paco Pena")
pCountry.Set(row,"Spain")
vAddress.Add(row)
# This has added two records.
# Here is how to get data back again
s1 = pName.Get(vAddress.GetAt(1))
s2 = pCountry.Get(vAddress.GetAt(1))
puts "The country of #{s1} is #{s2}"
storage.Commit()
-------------------
Example output:
A first test of Metakit running via Ruby
John Fletcher June 2003 J.P.Fletcher / aston.ac.uk
This is intended as a translation of demo.cpp
The country of Paco Pena is Spain
====
If anyone can help him I am sure he would appreciate it very much. : )