%description: Copying and assignment for messages: static arrays of struct and class members %file: test.msg namespace @TESTNAME@; struct MyStruct { int bb; } class MyClass { int bb; } message Base { MyStruct ms[2]; MyClass mc[3]; omnetpp::cQueue q[4]; } message MyMessage extends Base { MyStruct ms2[5]; MyClass mc2[6]; omnetpp::cQueue q2[7]; }; %includes: #include "test_m.h" %global: void print(const char *what, MyMessage& x) { EV << what << ":" << endl; EV << "ms[]:" << x.getMsArraySize() << ":" << x.getMs(0).bb << ":" << x.getMs(1).bb << endl; EV << "mc[]:" << x.getMcArraySize() << ":" << x.getMc(0).getBb() << ":" << x.getMc(1).getBb() << endl; EV << "q[]:" << x.getQArraySize() << ":" << x.getQ(0).getName() << ":" << x.getQ(0).getLength() << ":" << x.getQ(1).getName() << ":" << x.getQ(1).getLength() << endl; EV << "ms2[]:" << x.getMs2ArraySize() << ":" << x.getMs2(0).bb << ":" << x.getMs2(1).bb << endl; EV << "mc2[]:" << x.getMc2ArraySize() << ":" << x.getMc2(0).getBb() << ":" << x.getMc2(1).getBb() << endl; EV << "q2[]:" << x.getQ2ArraySize() << ":" << x.getQ2(0).getName() << ":" << x.getQ2(0).getLength() << ":" << x.getQ2(1).getName() << ":" << x.getQ2(1).getLength() << endl; EV << "." << endl; } %activity: // set up tester classes MyMessage x("x"); x.getMsForUpdate(0).bb=10; x.getMsForUpdate(1).bb=11; x.getMcForUpdate(0).setBb(20); x.getMcForUpdate(1).setBb(21); x.getQForUpdate(0).setName("q(0)"); x.getQForUpdate(0).insert(new cMessage); x.getQForUpdate(1).setName("q(1)"); x.getQForUpdate(1).insert(new cMessage); x.getQForUpdate(1).insert(new cMessage); x.getMs2ForUpdate(0).bb=30; x.getMs2ForUpdate(1).bb=31; x.getMs2ForUpdate(2).bb=32; x.getMs2ForUpdate(3).bb=33; x.getMs2ForUpdate(3).bb=34; x.getMc2ForUpdate(0).setBb(40); x.getMc2ForUpdate(1).setBb(41); x.getQ2ForUpdate(0).setName("q2(0)"); x.getQ2ForUpdate(0).insert(new cMessage);x.getQ2ForUpdate(0).insert(new cMessage); x.getQ2ForUpdate(1).setName("q2(1)"); x.getQ2ForUpdate(1).insert(new cMessage); print("x",x); // copy constructor MyMessage x1(x); print("x1(x)",x1); // assigment MyMessage x2("x2"); x2 = x; print("x2=x",x2); %contains: stdout x: ms[]:2:10:11 mc[]:3:20:21 q[]:4:q(0):1:q(1):2 ms2[]:5:30:31 mc2[]:6:40:41 q2[]:7:q2(0):2:q2(1):1 . x1(x): ms[]:2:10:11 mc[]:3:20:21 q[]:4:q(0):1:q(1):2 ms2[]:5:30:31 mc2[]:6:40:41 q2[]:7:q2(0):2:q2(1):1 . x2=x: ms[]:2:10:11 mc[]:3:20:21 q[]:4:q(0):1:q(1):2 ms2[]:5:30:31 mc2[]:6:40:41 q2[]:7:q2(0):2:q2(1):1 .