# LOAF.tcl - Copyright (C) 2004 Pat Thoyts <patthoyts@users.sourceforge.net> # # Pure Tcl implementation of the LOAF protocol # See http://postneo.com/postwiki/moin.cgi/LoafHome for further details. # # ------------------------------------------------------------------------- # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # ------------------------------------------------------------------------- # namespace eval ::LOAF { variable version 0.1.0 variable rcsid {$Id: 11994,v 1.13 2006-05-25 18:00:10 jcw Exp $} namespace export LOAF } # ------------------------------------------------------------------------- # LOAF::LOAF # The core LOAF protocol function. This drives everything. # Returns: # A normal Tcl result. # proc ::LOAF::LOAF {args} { return } # ------------------------------------------------------------------------- package provide LOAF $::LOAF::version # ------------------------------------------------------------------------- # Local variables: # mode: tcl # indent-tabs-mode: nil # End:
NEM: Have you considered submitting this to tcllib?PT: Absolutely - continuing the practice of adding support for as many protocols as possible to tcllib. However, before this is to happen it will need a test suite and some interoperability testing against implementations in other languages. Especially against implementations on alternative architectures.I also plan to add some critcl support to provide a speed up to any areas that profile as processing hot-spots.Stefan Vogel LOAF is so cool. I've written a whitepaper about LOAF. For more information, see [1].ZLM Stefan, your whitepaper is very clear and succinct. Could you please provide a PDF version for easy printing?Stefan Vogel Thanks for your interest. A german PDF-version can be downloaded from [2].US Great stuff! Unfortunately it lacks extensibility. Most of my projects would benefit from LOAF, if I could add some code to it. That's why I implemented ::LOAF::MEAT, The "Management of Extensions to Avoid Trouble". Yes, I admit you have to pay a performance penalty, but it's a fair price for the almost unlimited extensibility you get.
proc ::LOAF::LOAF {args} { catch "::LOAF::MEAT $args" return } proc ::LOAF::MEAT {args} { # load all packages you need/want/find foreach pkg {list of packages} { package require $pkg } # do your work call my_procs }
RS You get more efficient bytecode with the following implementation:
proc LOAF::LOAF args {}Ro Why would you care? Since when are we so concerned about efficiency in an HLL? Not the sort of thing my mind should be concerned about.
[ Category Internet | Category Humor ]