%description: check that wildcards in the ini file work properly %file: test.ned simple Simple { parameters: string p; string par; string param; } module Mod { parameters: string p; string par; string param; submodules: submod1: Simple; submod[2]: Simple; } network Test { parameters: string p; string par; string param; submodules: submod1: Simple; submod2: Mod; submod[2]: Mod; } %file: test.cc #include using namespace omnetpp; namespace @TESTNAME@ { class Simple : public cSimpleModule { public: Simple() : cSimpleModule(16384) { } virtual void activity() override; virtual void printParametersOf(cModule *mod); }; Define_Module(Simple); void Simple::activity() { static bool first = true; if (first) { first = false; printParametersOf(getSimulation()->getSystemModule()); } } void Simple::printParametersOf(cModule *mod) { EV << mod->par("p").getFullPath() << "=" << mod->par("p").str() << endl; EV << mod->par("par").getFullPath() << "=" << mod->par("par").str() << endl; EV << mod->par("param").getFullPath() << "=" << mod->par("param").str() << endl; for (cModule::SubmoduleIterator it(mod); !it.end(); it++) printParametersOf(*it); } }; //namespace %inifile: test.ini [General] network = Test cmdenv-express-mode = false **.param-record-as-scalar = false Test.p="1st-level, p" Test.*.*.*.par="4th-level, par" Test.*.par="2nd-level, par" Test.*.*.par="3rd-level, par" Test.*.*.p*="3rd-level, not par" Test.*.*="2nd-level, not par" Test.p*="1st-level, not p" Test.*.*.*.p*="4th-level, not par" %contains: stdout Test.p="1st-level, p" Test.par="1st-level, not p" Test.param="1st-level, not p" Test.submod1.p="2nd-level, not par" Test.submod1.par="2nd-level, par" Test.submod1.param="2nd-level, not par" Test.submod2.p="2nd-level, not par" Test.submod2.par="2nd-level, par" Test.submod2.param="2nd-level, not par" Test.submod2.submod1.p="3rd-level, not par" Test.submod2.submod1.par="3rd-level, par" Test.submod2.submod1.param="3rd-level, not par" Test.submod2.submod[0].p="3rd-level, not par" Test.submod2.submod[0].par="3rd-level, par" Test.submod2.submod[0].param="3rd-level, not par" Test.submod2.submod[1].p="3rd-level, not par" Test.submod2.submod[1].par="3rd-level, par" Test.submod2.submod[1].param="3rd-level, not par" Test.submod[0].p="2nd-level, not par" Test.submod[0].par="2nd-level, par" Test.submod[0].param="2nd-level, not par" Test.submod[0].submod1.p="3rd-level, not par" Test.submod[0].submod1.par="3rd-level, par" Test.submod[0].submod1.param="3rd-level, not par" Test.submod[0].submod[0].p="3rd-level, not par" Test.submod[0].submod[0].par="3rd-level, par" Test.submod[0].submod[0].param="3rd-level, not par" Test.submod[0].submod[1].p="3rd-level, not par" Test.submod[0].submod[1].par="3rd-level, par" Test.submod[0].submod[1].param="3rd-level, not par" Test.submod[1].p="2nd-level, not par" Test.submod[1].par="2nd-level, par" Test.submod[1].param="2nd-level, not par" Test.submod[1].submod1.p="3rd-level, not par" Test.submod[1].submod1.par="3rd-level, par" Test.submod[1].submod1.param="3rd-level, not par" Test.submod[1].submod[0].p="3rd-level, not par" Test.submod[1].submod[0].par="3rd-level, par" Test.submod[1].submod[0].param="3rd-level, not par" Test.submod[1].submod[1].p="3rd-level, not par" Test.submod[1].submod[1].par="3rd-level, par" Test.submod[1].submod[1].param="3rd-level, not par"