12.07.2015 Views

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

class Packet {......st<strong>at</strong>ic int hdrlen_;};<strong>The</strong>n we do the following to co<strong>ns</strong>truct an accessor for this variable:class PacketHeaderClass : public TclClass {protected:PacketHeaderClass(co<strong>ns</strong>t char* classname, int hdrsize);TclObject* cre<strong>at</strong>e(int argc, co<strong>ns</strong>t char*co<strong>ns</strong>t* argv);/* <strong>The</strong>se two implements OTcl class access methods */virtual void bind();virtual int method(int argc, co<strong>ns</strong>t char*co<strong>ns</strong>t* argv);};void PacketHeaderClass::bind(){}TclClass::bind();add_method("hdrlen");/* Call to base class bind() must precede add_method() */int PacketHeaderClass::method(int ac, co<strong>ns</strong>t char*co<strong>ns</strong>t* av){Tcl& tcl = Tcl::i<strong>ns</strong>tance();/* Notice this argument tra<strong>ns</strong>l<strong>at</strong>ion; we can then h<strong>and</strong>le them as if in TclObject::comm<strong>and</strong>() */int argc = ac - 2;co<strong>ns</strong>t char*co<strong>ns</strong>t* 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_ = <strong>at</strong>oi(argv[2]);return (TCL_OK);}}return TclClass::method(ac, av);}After this, we can then use the following OTcl comm<strong>and</strong> to access <strong>and</strong> change values of Packet::hdrlen_:PacketHeader hdrlen 120set i [PacketHeader hdrlen]32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!