by [Theo Verelst] of course feel free to comment, extend, .. I was trying out some network (read: graph) things in [Bwise], and am thinking about coming back to some basics I did years ago when I worked at university, for instance making an inspector window without all kinds of extra packages having to be loaded in simple enough and reusable tcl/tk code, and started by wanting to be able to in short list a hierarchy of lets call them objects.. Suppose we want to list all objects in the tk graphics hierarchy, like we would start with: winfo children . And get a list of all root objects. I made a routine called [ilist] which in short can do this hierarchically, with a simple and practical prettyprint, and which can be used for various other purposes: proc ilist { {begin {.}} {listf {winfo children}} {maxdepth {100}} {ident {0}} {isleaf {}} } { # isleaf function defined means not-leafs themselves are filtered out # and that puts of the results is turned off if {$maxdepth <1} return set de {}; set o {} for {set i 0} {$i < $ident} {incr i} {append de " "} foreach i [eval "$listf $begin"] { if {$isleaf == {}} { lappend o $i puts "$de $i" eval lappend o [ilist [list $i] $listf [expr $maxdepth-1] [expr $ident +1] $isleaf] } { if {[isleaf $i]} { lappend o $i } { eval lappend o [ilist [list $i] $listf [expr $maxdepth-1] [expr $ident +1] $isleaf] } } } return $o } ---- [TV] ''(Dec 1 2003)'' I added a list around the last i above, to make the argument passing deal with file/path names with spaces in them as lists. That was using the wiki as storage to prepare for a page on [Updating image directories from a memorystick automatically]. A day later I updated the function to include a isleaf procedure argument, because I wanted to make a hierarchical list of files, which should not include directories. I didn't test the new ilist above with other than file hierarchies yet, but I guess it should be ok. Example functions for list and isleaf are: proc files {d} {if [catch {glob $d/*} r] {return {}} {return $r} } proc isleaf {f} {if [file isdir $f] {return 0} {return 1}} Example use: ilist . files 100 0 isleaf to get a list of all files below the current directory, not listing hierarchy, only returning a list of the result (no idented printing), until a depth of 100. On unix/linux/cygwin, you'd normally use: $ find . -name '*' -print for a similar result, except a file per line, not a list, as result. And I found out that [glob] doesn't list the windows invisible (hidden) files. Ah, at least in 8.4.4 there is glob -type hidden. ---- Of course advanced programmers know what a recursive procedure is and can easily do this maybe as a one liner from the top of their head, but it is good practice to think straight about things, and conceptually I find this pleasing enough. calling simply '''ilist''' in [bwise] prints: .fb .fb.bnewb .fb.quit .fb.p .fb.bwire .fb.bcdrum .fb.bcscope .fb.bscan .fb.bdel .fb.bsave .fb.bload .mw .mw.hscroll .mw.vscroll .mw.c .mw.c.pm .f .f.l .f.t .f.f .f.f.b .f.f.b2 .f.f.f .f.f.bs .tt .tt.t .tt.f .tt.f.e .tt.f.s .tt.f.l Practically, the same routine can be reused also to list files at least when we first make an adapted glob called files: proc files {d} {if [catch {glob $d/*} r] {return {}} {return $r} } Now use this as listing routine for ilist: [http://b27.zhiliaotuofa.com 充电器][http://c128.voip99.net 面料][http://c129.voip99.net ][http://c48.voip99.net 读卡器][http://w25.voip99.net 切割机][http://w26.voip99.net 深圳印刷][http://w29.voip99.net ][http://c77.voip99.net 抛丸机][http://c78.voip99.net 制罐][http://c87.voip99.net 木工机械][http://c88.voip99.net 物流设备][http://c89.voip99.net ][http://c91.voip99.net 吸塑机][http://c92.voip99.net 毛毡][http://c93.voip99.net 交通设施][http://c94.voip99.net 压滤机][http://c95.voip99.net ][http://c134.voip99.net ][http://b100.zhiliaotuofa.com 铝箔][http://c01.voip99.net ][http://b51.zhiliaotuofa.com 吹塑机][http://b52.zhiliaotuofa.com 喷涂][http://b53.zhiliaotuofa.com 喷涂设备][http://c34.voip99.net ][http://a28.voip99.com 风水][http://a29.voip99.com 密封胶][http://a30.voip99.com 胶粘][http://a31.voip99.com 吸尘器][http://a32.voip99.com 消毒柜][http://a33.voip99.com 货架][http://a34.voip99.com 展架][http://aaa17.zhiliaotuofa.com ][http://a80.voip99.com 印花机][http://a81.voip99.com 金刚石][http://a82.voip99.com 陶瓷][http://c34.voip99.net 钢板][http://c35.voip99.net ][http://c129.voip99.net 拉链][http://c130.voip99.net 自动门][http://c131.voip99.net 自吸泵][http://c132.voip99.net 容器][http://c133.voip99.net 软管][http://c138.voip99.net ][http://a93.voip99.com 温度仪表][http://a94.voip99.com 仪表][http://a95.voip99.com ][http://b40.zhiliaotuofa.com 催化剂][http://b41.zhiliaotuofa.com 化学试剂][http://b46.zhiliaotuofa.com 胶粘剂][http://b47.zhiliaotuofa.com 染料][http://b55.zhiliaotuofa.com ][http://a83.voip99.com 注塑机][http://a84.voip99.com 造粒机][http://w31.voip99.net IP超市计费系统][http://w46.voip99.net ][http://c33.voip99.net 纺织机械][http://c34.voip99.net ][http://a05.voip99.com 液位计][http://a06.voip99.com 插座][http://a07.voip99.com 体育用品][http://a08.voip99.com 服务器][http://www35.voip99.com 继电器][http://w12.voip99.net 紧固件][http://w13.voip99.net 制服][http://w14.voip99.net 健身器材][http://w15.voip99.net 太阳能热水器][http://w16.voip99.net 婚纱摄影][http://w17.voip99.net ][http://aaa01.zhiliaotuofa.com 包装设计][http://aaa02.zhiliaotuofa.com ][http://aaa04.zhiliaotuofa.com 电话变声器][http://w29.voip99.net 照排机][http://w30.voip99.net 餐具][http://w31.voip99.net ][http://mudiban.voip99.net 实木地板][http://qianzheng.voip99.com ][http://c31.voip99.net 手套][http://c32.voip99.net 防水材料][http://qianzheng.voip99.com 签证][http://kaoqinji.voip99.com ][http://www46.voip99.com 反光材料][http://www47.voip99.com 打标机][http://www48.voip99.com 温湿度计][http://www49.voip99.com ][http://aaa14.zhiliaotuofa.com 实验室设备][http://aaa15.zhiliaotuofa.com 玻璃器皿][http://aaa16.zhiliaotuofa.com 耗材][http://aaa17.zhiliaotuofa.com ][http://www42.voip99.com 纸箱][http://www43.voip99.com 丝印][http://www44.voip99.com 纳米焊条][http://www45.voip99.com 升降机][http://aaa02.zhiliaotuofa.com 压缩机][http://aaa03.zhiliaotuofa.com 手机窃听器][http://aaa06.zhiliaotuofa.com 振动筛][http://aaa07.zhiliaotuofa.com 空气净化][http://aaa08.zhiliaotuofa.com ][http://ww3.zhiliaotuofa.com 深圳机票][http://ww4.zhiliaotuofa.com ][http://w36.voip99.net GK][http://w40.voip99.net 网络电话卡][http://w41.voip99.net VOIP][http://w44.voip99.net ][http://ww1.voip99.com 卫星电视][http://ww0.voip99.net 监视器][http://www41.voip99.com ][http://www37.voip99.com 机床][http://www38.voip99.com 电子秤][http://www39.voip99.com ][http://w33.voip99.net VOIP网关][http://w34.voip99.net ][http://w70.voip99.net 板蓝根][http://www05.voip99.com 电力猫][http://www13.voip99.com 化工机械][http://a88.voip99.com 分离设备][http://a89.voip99.com 粉碎机][http://a95.voip99.com 仪器][http://a96.voip99.com 仪表仪器][http://a97.voip99.com 光学仪器][http://a98.voip99.com ][http://www27.voip99.com 印刷机][http://www28.voip99.com 耐火材料][http://www29.voip99.com ][http://www01.agreatserver.com 六合彩][http://jipiao.voip99.com/ 深圳机票][http://vod.voip99.net 视频点播][http://sudi.voip99.com/ 速递公司][http://guojihuoyun.voip99.com ][http://aaa23.zhiliaotuofa.com 密封件][http://aaa24.zhiliaotuofa.com 电动工具][http://aaa25.zhiliaotuofa.com 办公家具][http://aaa26.zhiliaotuofa.com 热水器][http://aaa27.zhiliaotuofa.com 金属丝网][http://aaa28.zhiliaotuofa.com ][http://guojihuoyun.voip99.com 国际货运][http://baojingqi.voip99.com 报警器][http://chaye.voip99.com 茶叶][http://www49.voip99.com 热处理设备][http://www50.voip99.com ][http://c66.voip99.net 建材机械][http://c67.voip99.net 工程塑料][http://c73.voip99.net ][http://c81.voip99.net 综合布线][http://c82.voip99.net ][http://c82.voip99.net 燃烧器][http://c83.voip99.net ][http://a15.voip99.com 注册英国公司][http://b05.zhiliaotuofa.com 工业胶带][http://b06.zhiliaotuofa.com 液压机][http://b07.zhiliaotuofa.com 过滤器][http://b13.zhiliaotuofa.com 整流器][http://b14.zhiliaotuofa.com 逆变器][http://b15.zhiliaotuofa.com 扬声器][http://b17.zhiliaotuofa.com 蜂鸣器][http://b18.zhiliaotuofa.com 显示屏][http://b19.zhiliaotuofa.com 天线][http://c12.voip99.net 塑封机][http://c13.voip99.net 望远镜][http://c19.voip99.net ][http://c150.voip99.net ][http://aaa10.zhiliaotuofa.com 机电设备][http://aaa35.zhiliaotuofa.com 防盗器][http://aaa36.zhiliaotuofa.com 印刷机械][http://w46.voip99.net ][http://w63.voip99.net 语音网关][http://w65.voip99.net ip超市][http://w69.voip99.net 保健品][http://w70.voip99.net ][http://b80.zhiliaotuofa.com 消防器材][http://b81.zhiliaotuofa.com 建筑机械][http://b88.zhiliaotuofa.com ][http://c126.voip99.net 医疗设备][http://c127.voip99.net 仓储][http://c128.voip99.net ][http://www.voip99.com/bbs/ voip在线交易中心][http://aaa19.zhiliaotuofa.com 电容器][http://aaa20.zhiliaotuofa.com ][http://a22.voip99.com 会计师事务所][http://a23.voip99.com 法律咨询][http://b08.zhiliaotuofa.com ][http://c29.voip99.net 离心机][http://c45.voip99.net 触摸屏][http://c46.voip99.net 条码][http://c47.voip99.net 工业设计][http://c53.voip99.net 臭氧][http://c54.voip99.net 润滑脂][http://c55.voip99.net ][http://c17.voip99.net 铜制品][http://c18.voip99.net 石墨][http://c19.voip99.net ][http://c76.voip99.net 转换器][http://c89.voip99.net 铁塔][http://c90.voip99.net 热电偶][http://c95.voip99.net 刻字机][http://c100.voip99.net ][http://a73.voip99.com ][http://c11.voip99.net 投影仪][http://c12.voip99.net ][http://a14.voip99.com 注册美国公司][http://b56.zhiliaotuofa.com 相框][http://b57.zhiliaotuofa.com 蜡烛][http://b73.zhiliaotuofa.com 石材][http://b74.zhiliaotuofa.com 钢结构][http://b75.zhiliaotuofa.com 管材][http://b76.zhiliaotuofa.com ][http://jipiao.voip99.com/ 深圳机票][http://sudi.voip99.com/ 快递|速递公司][http://shipinhuiyi.zhiliaotuofa.com ][http://ww3.voip99.com ][http://www16.voip99.com 钛白粉][http://www17.voip99.com 塑料制品][http://www18.voip99.com 阀门][http://www19.voip99.com 纯水设备][http://www20.voip99.com ][http://www36.voip99.com 工艺品][http://w09.voip99.net 脱毛][http://w10.voip99.net 净水器][http://w11.voip99.net 蜂蜜][http://w12.voip99.net ][http://w75.voip99.net 门禁][http://w76.voip99.net 瓷砖][http://w77.voip99.net 电机][http://ww0.voip99.com 耳机][http://www39.voip99.com ][http://www09.voip99.com 轮胎][http://www10.voip99.com 电子仪器][http://www11.voip99.com 汽车配件][http://www12.voip99.com ][http://ww5.voip99.net 光端机] ilist . files gave as example: ./Nets ./Nets/array1 ./Nets/array2.tcl ./Nets/vararray2.tcl ./bwise031.tcl ./defaultprocs.tcl ./paper.gif ./ilist.tcl In a network I tried listing all possible functional decomposition paths, for example starting from the array like structure which comes with bwise and can be commandline called with newarray without arguments, or instantiated anywhere on the canvas by pressing the right mouse button (when you have two, edit bwise by text searching for button-3 and replace just two occurances) and chosing the command with the same name. now use: ilist array2_2 net_left to get: array1_2 array0_2 array0_1 array0_0 array1_1 array0_1 array0_0 array1_0 array0_0 array2_1 array1_1 array0_1 array0_0 array1_0 array0_0 array2_0 array1_0 array0_0 to make lists of preceding connected blocks until the 'left end' of the graph interpreted as a recursive function with reused partial functions.