class Packet{
.....
static int hdrlen_;
}
需要将hdrlen绑定。
class PacketHeaderClass: public TclClass{
protected:
PacketHeaderClass(const char* classname, int hdrsize);
TclObject* create(int argc, const char* const* argv);
/*是实现绑定*/
virtual void bind();
virtual int method(int argc, const char* const* argv);
};
void PacketHeaderClass::bind()
{
TclClass::bind();
add_method("hdrlen");
}
int PacketHeaderClass::method(int ac, const char* const* argv)
{
Tcl& tcl=Tcl::instance();
int argc=ac-2;
const char*const* argv=av+2;
if(argc==2){
if(strcmp(argv[1], "hdrlen") == 0){
tcl.resultf("%d", Packet::hdrlen_);
return (TCL_OK);
}
}else if(argc == 3){
if(strcmp(argv[1], "hdrlen") == 0){
Packet::hdrlen_ = atoi(argv[2]);
return (TCL_OK);
}
}
return TclClass::method(ac,av);
}
以后可以使用如下的OTcl命令来访问改变Packet::hdrlen_的值
PacketHeader hdrlen 120
set i [PacketHeader hdrlen]