1# -*- tcl -*- 2# -- $Id: writer_me.tcl,v 1.1 2005/09/28 04:51:22 andreas_kupries Exp $ --- 3# 4# PAGE plugin - writer - ME ~ Match Engine 5# 6 7# ### ### ### ######### ######### ######### 8## Imported API 9 10# -----------------+-- 11# page_wdata | Access to processed input stream. 12# -----------------+-- 13# page_info | Reporting to the user. 14# page_warning | 15# page_error | 16# -----------------+-- 17# page_log_error | Reporting of internals. 18# page_log_warning | 19# page_log_info | 20# -----------------+-- 21 22# ### ### ### ######### ######### ######### 23## Exported API 24 25# -----------------+-- 26# page_wfeature | Query for special plugin features page might wish to use. 27# page_wtime | Activate collection of timing statistics. 28# page_wgettime | Return the collected timing statistics. 29# page_wlabel | User readable label for the plugin. 30# page_whelp | Doctools help text for plugin. 31# page_woptions | Options understood by plugin. 32# page_wconfigure | Option (re)configuration. 33# page_wrun | Generate output from data per plugin configuration and hardwiring. 34# -----------------+-- 35 36# ### ### ### ######### ######### ######### 37## Requisites 38 39package require page::gen::peg::me 40package require struct::tree ; # Data structure. 41 42global usec 43global timed 44set timed 0 45 46# ### ### ### ######### ######### ######### 47## Implementation of exported API 48 49proc page_wlabel {} { 50 return {MatchEngine RecDescent} 51} 52 53proc page_wfeature {key} { 54 return [string eq $key timeable] 55} 56 57proc page_wtime {} { 58 global timed 59 set timed 1 60 return 61} 62 63proc page_wgettime {} { 64 global usec 65 return $usec 66} 67 68proc page_whelp {} { 69 return {} 70} 71 72proc page_woptions {} { 73 return {--package --copyright} 74} 75 76proc page_wconfigure {option value} { 77 switch -exact -- $option { 78 --package { 79 page::gen::peg::me::package $value 80 } 81 --copyright { 82 page::gen::peg::me::copyright $value 83 } 84 default { 85 return -code error "Cannot set value of unknown option \"$option\"" 86 } 87 } 88} 89 90proc page_wrun {chan data} { 91 global timed usec 92 page_log_info "writer/me/run/" 93 94 if {$timed} { 95 set usec [lindex [time { 96 ::struct::tree ::tree deserialize $data 97 page::gen::peg::me ::tree $chan 98 }] 0] ; #{} 99 } else { 100 ::struct::tree ::tree deserialize $data 101 page::gen::peg::me ::tree $chan 102 } 103 page_log_info "writer/me/run/ok" 104 105 ::tree destroy 106 return 107} 108 109# ### ### ### ######### ######### ######### 110## Internal helper code. 111 112# ### ### ### ######### ######### ######### 113## Initialization 114 115package provide page::writer::me 0.1 116