I'm looking through the code, but it's sparse, and uncommented (except rarely and cryptically). I'd like to make the GSD code allow calling either Ruby or Perl code with equal power. And I'd like to spend my time making it work, rather than duplicating effort navigating the code that other developers might already have expended, who can just run it down for me (and other developers reading this, who might want to add other languages later).
It seems that Ruby support is included in GSD from in code contained in the
Generic_Serial_Device, specifically
RubyCommandWrapper.[cpp,h]
RubyDCECodeSupplier.[cpp,h]
RubyDCEConnector.h
RubyDCEDeviceNode.[cpp,h]
RubyDCEEmbededClass.[cpp,h]
RubyDeviceWrapper.[cpp,h]
RubyEmbededClass.[cpp,h]
RubyEmbeder.[cpp,h]
Is there any other scope in the code that would need explicit support for Perl scripting of GSD?
Does anyone already know the model for embedding the Ruby interpreter? Does a GSD device process start up a Ruby interpreter and pass the script to it via the stack? Or is there a running interpreter that gets scripts piped to it over IO, maybe a socket or some other IPC? And how does the Ruby interpreter get access to the GSD itself (and the rest of LMCE), to change the GSD state (or other device/process states)?