📄 packet.h
字号:
#include "scv.h"#include <iomanip.h>#ifndef PACKET_H#define PACKET_H// Define a packet with an integer payloadclass packetT1 { public: packetT1 () {} virtual ~packetT1() {} // Packet's data private: sc_uint<16> src; sc_uint<16> dest; public: sc_uint< 4> priority; sc_uint<16> payload; // nbcode "fields" end // nbcode "access" start // Field access methods sc_uint<16> get_src() {return src; } sc_uint<16> get_dest() {return dest; } void set_src(sc_uint<16> _src) {src = _src; } void set_dest(sc_uint<16> _dest) {dest = _dest;} // nbcode "access" end // nbcode "friend" start // Declare extensions class to be a friend friend class scv_extensions<packetT1>; // Define ostream method to print the packet friend ostream& operator<< (ostream& os, const packetT1& p) { os << " src: " << setw(5) << p.src << " dest: " << setw(5) << p.dest << " priority: " << setw(3) << p.priority << " payload: " << setw(5) << p.payload; return os; }};// nbcode "friend" end// nbcode "fields" startclass packetT2 { public: packetT2 () {} virtual ~packetT2() {} // Packet's data private: sc_uint<16> src; sc_uint<16> dest; public: sc_uint< 4> priority; sc_uint<16> payload; // nbcode "fields" end // Field access methods sc_uint<16> get_src() {return src; } sc_uint<16> get_dest() {return dest; } void set_src(sc_uint<16> _src) {src = _src; } void set_dest(sc_uint<16> _dest) {dest = _dest;} // Define ostream method to print the packet friend ostream& operator<< (ostream& os, const packetT2& p) { os << " src: " << setw(5) << p.src << " dest: " << setw(5) << p.dest << " priority: " << setw(3) << p.priority << " payload: " << setw(5) << p.payload; return os; }};// nbcode "out" end// nbcode "ext1" start// Extensions to packetT1template<>class scv_extensions<packetT1> : public scv_extensions_base<packetT1> {public: scv_extensions< sc_uint<16> > src; scv_extensions< sc_uint<16> > dest; scv_extensions< sc_uint< 4> > priority; scv_extensions< sc_uint<16> > payload; SCV_EXTENSIONS_CTOR(packetT1) { //must be in order SCV_FIELD(src); SCV_FIELD(dest); SCV_FIELD(priority); SCV_FIELD(payload); }};// nbcode "ext1" end// nbcode "ext2" start// Extensions to packetT2template<>class scv_extensions<packetT2> : public scv_extensions_base<packetT2> {public: scv_extensions< sc_uint< 4> > priority; scv_extensions< sc_uint<16> > payload; SCV_EXTENSIONS_CTOR(packetT2) { //must be in order SCV_FIELD(priority); SCV_FIELD(payload); }};// nbcode "ext2" end#endif //PACKET_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -