zoukankan      html  css  js  c++  java
  • *对象模型和TclCL(4)

    上面过程还有一个疑问:如何在command函数中向解释器传递执行结果?

    哈,这个用Tcl类可以解决。

    Tcl类封装了Otcl解释器的实例,并提供了访问解释器的方法。这个类提供了以下的操作方法:

    1、  获得Tcl实例的引用2、通过解释器调用Otcl过程3、从解释器获取结果,或将结果传回给解释器4、存取、查找TclObject5、获得到解释器的直接访问。

    1、  获得Tcl实例的引用

    ns一开始运行,Tcl类即被实例化。Tcl类的一个静态成员变量“Tcl Tcl::instance_“用来保存该实例。这个Tcl对象就是Otcl解释器对象,可以通过获得它的引用来访问Otcl解释器的功能。

     获得此实例引用的语句为:Tcl& tcl=Tcl::instance();

    2、  通过解释器调用Otcl过程

    通过Tcl实例调用Otcl的命令:tcl.eval(char* s) (有四种命令,只是参数不同,每个函数传一个字符串给解释器,然后解释器在全局上下文中将这个字符串当作Otcl命令来执行)

    c++调用一个Otcl命令时,解释器将执行结保存在私有成员变量tcl_->result中。用户必须用tcl.resultvoid)来获取该执行结果。注意:结果是字符串

     想要扩展NSOtcl脚本:不仅把他放在_ns/tcl/目录下,还要加一条source命令在tcl/lib/ns-lib.tcl中,以便在用tcl-expand.tcl扩展ns-lib/tcl的时候将该脚本的内容包含进去,足后还需要重新编译NS重新生成ns_tcl.cc。具体的原理查看EmbeddedTcl类。

    tips:看了这么多觉得还是有点模糊,下次的目标是添加一个简单的协议,让自己对整个流程更熟悉些。

  • 相关阅读:
    Nginx--sub_filter模块
    Scala学习5 objext
    Scala学习4 Class
    Scala学习3 Map
    Scala学习2 Array、ArrayBuffer
    Scala学习1 基本数据类型,条件,循环
    flink1.9新特性:维表Join解读
    Blink源码编译
    Flink Maven项目兼容多版本Kafka
    Ant build.xml程序简单说明
  • 原文地址:https://www.cnblogs.com/zhangleiccst/p/2156238.html
Copyright © 2011-2022 走看看