⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple_n.cc

📁 OMNET++仿真三色算法的源码,三色算法是无线传感器中一个典型的分簇算法
💻 CC
字号:
//-----------------------------------------
//
// Generated by nedtool, version 3.0
// date: Sun Sep 11 21:44:10 2005
//
//-----------------------------------------


#include <math.h>
#include "omnetpp.h"

// NEDC version check
#define NEDC_VERSION 0x0300
#if (NEDC_VERSION!=OMNETPP_VERSION)
#    error Version mismatch! Probably this file was generated by an earlier version of nedc: 'make clean' should help.
#endif

// Disable warnings about unused variables. For MSVC and BC only:
// GCC has no way to turn on its -Wunused option in a source file :(
#ifdef _MSC_VER
#  pragma warning(disable:4101)
#endif
#ifdef __BORLANDC__
#  pragma warn -waus
#  pragma warn -wuse
#endif

static cModuleType *_getModuleType(const char *modname)
{
    cModuleType *modtype = findModuleType(modname);
    if (!modtype)
        throw new cException("Module type definition %s not found (Define_Module() missing from C++ code?)", modname);
    return modtype;
}

static void _checkModuleVectorSize(int vectorsize, const char *mod)
{
    if (vectorsize<0)
        throw new cException("Negative module vector size %s[%d]", mod, vectorsize);
}

static void _readModuleParameters(cModule *mod)
{
    int n = mod->params();
    for (int k=0; k<n; k++)
        if (mod->par(k).isInput())
            mod->par(k).read();
}

static int _checkModuleIndex(int index, int vectorsize, const char *modname)
{
    if (index<0 || index>=vectorsize)
        throw new cException("Submodule index %s[%d] out of range, sizeof(%s) is %d", modname, index, modname, vectorsize);
    return index;
}

static cGate *_checkGate(cModule *mod, const char *gatename)
{
    cGate *g = mod->gate(gatename);
    if (!g)
        throw new cException("%s has no gate named %s",mod->fullPath().c_str(), gatename);
    return g;
}

static cGate *_checkGate(cModule *mod, const char *gatename, int gateindex)
{
    cGate *g = mod->gate(gatename, gateindex);
    if (!g)
        throw new cException("%s has no gate %s[%d]",mod->fullPath().c_str(), gatename, gateindex);
    return g;
}

static cGate *_getFirstUnusedParentModGate(cModule *mod, const char *gatename)
{
    int baseId = mod->findGate(gatename);
    if (baseId<0)
        throw new cException("%s has no %s[] gate",mod->fullPath().c_str(), gatename);
    int n = mod->gate(baseId)->size();
    for (int i=0; i<n; i++)
        if (!mod->gate(baseId+i)->isConnectedInside())
            return mod->gate(baseId+i);
    throw new cException("%s[] gates are all connected, no gate left for `++' operator",mod->fullPath().c_str(), gatename);
}

static cGate *_getFirstUnusedSubmodGate(cModule *mod, const char *gatename)
{
    int baseId = mod->findGate(gatename);
    if (baseId<0)
        throw new cException("%s has no %s[] gate",mod->fullPath().c_str(), gatename);
    int n = mod->gate(baseId)->size();
    for (int i=0; i<n; i++)
        if (!mod->gate(baseId+i)->isConnectedOutside())
            return mod->gate(baseId+i);
    int newBaseId = mod->setGateSize(gatename,n+1);
    return mod->gate(newBaseId+n);
}

static cFunctionType *_getFunction(const char *funcname, int argcount)
{
    cFunctionType *functype = findFunction(funcname,argcount);
    if (!functype)
        throw new cException("Function %s with %d args not found", funcname, argcount);
    return functype;
}

static cChannel *_createChannel(const char *channeltypename)
{
    cChannelType *channeltype = findChannelType(channeltypename);
    if (!channeltype)
        throw new cException("Channel type %s not found", channeltypename);
    cChannel *channel = channeltype->create("channel");
    return channel;
}

static cChannel *_createNonTypedBasicChannel(double delay, double error, double datarate)
{
    cBasicChannel *channel = new cBasicChannel("channel");
    if (delay!=0) channel->setDelay(delay);
    if (error!=0) channel->setError(error);
    if (datarate!=0) channel->setDatarate(datarate);
    return channel;
}

static cXMLElement *_getXMLDocument(const char *fname, const char *pathexpr=NULL)
{
    cXMLElement *node = ev.getXMLDocument(fname, pathexpr);
    if (!node)
        throw new cException(!pathexpr ? "xmldoc(\"%s\"): element not found" : "xmldoc(\"%s\", \"%s\"): element not found",fname,pathexpr);
    return node;
}

ModuleInterface(Mobility)
    // parameters:
    Parameter(minSpeed, ParType_Numeric)
    Parameter(maxSpeed, ParType_Numeric)
    Parameter(movKind, ParType_Numeric)
    Parameter(XRange, ParType_Numeric)
    Parameter(YRange, ParType_Numeric)
    Parameter(pauseTime, ParType_Numeric)
    Parameter(moveInterval, ParType_Numeric)
    Parameter(distance, ParType_Numeric)
    Parameter(target, ParType_Numeric)
    Parameter(speedVariator, ParType_Numeric)
    // gates:
    Gate(out, GateDir_Output)
EndInterface

Register_ModuleInterface(Mobility)

//// Sample code:
// class Mobility : public cSimpleModule
// {
//     Module_Class_Members(Mobility,cSimpleModule,16384)
//     virtual void activity();
//     // Add you own member functions here!
// };
//
// Define_Module(Mobility);
//
// void Mobility::activity()
// {
//     // Put code for simple module activity here!
// }
//

ModuleInterface(Physic)
    // parameters:
    Parameter(txPower, ParType_Numeric)
    Parameter(rxThreshold, ParType_Numeric)
    Parameter(channelDelay, ParType_Numeric)
    Parameter(channelDatarate, ParType_Numeric)
    Parameter(channelError, ParType_Numeric)
    // gates:
    Gate(fromMobility, GateDir_Input)
    Gate(fromMac, GateDir_Input)
    Gate(toMac, GateDir_Output)
EndInterface

Register_ModuleInterface(Physic)

//// Sample code:
// class Physic : public cSimpleModule
// {
//     Module_Class_Members(Physic,cSimpleModule,16384)
//     virtual void activity();
//     // Add you own member functions here!
// };
//
// Define_Module(Physic);
//
// void Physic::activity()
// {
//     // Put code for simple module activity here!
// }
//

ModuleInterface(Mac)
    // parameters:
    Parameter(inBufferSize, ParType_Numeric)
    Parameter(promisqueMode, ParType_Bool)
    // gates:
    Gate(fromPh, GateDir_Input)
    Gate(fromRoute, GateDir_Input)
    Gate(toRoute, GateDir_Output)
    Gate(toPh, GateDir_Output)
EndInterface

Register_ModuleInterface(Mac)

//// Sample code:
// class Mac : public cSimpleModule
// {
//     Module_Class_Members(Mac,cSimpleModule,16384)
//     virtual void activity();
//     // Add you own member functions here!
// };
//
// Define_Module(Mac);
//
// void Mac::activity()
// {
//     // Put code for simple module activity here!
// }
//

ModuleInterface(Application)
    // parameters:
    Parameter(rate, ParType_Numeric)
    Parameter(pktSize, ParType_Numeric)
    Parameter(hostNum, ParType_Numeric)
    Parameter(active, ParType_Numeric)
    Parameter(burstInterval, ParType_Numeric)
    // gates:
    Gate(out, GateDir_Output)
    Gate(in, GateDir_Input)
EndInterface

Register_ModuleInterface(Application)

//// Sample code:
// class Application : public cSimpleModule
// {
//     Module_Class_Members(Application,cSimpleModule,16384)
//     virtual void activity();
//     // Add you own member functions here!
// };
//
// Define_Module(Application);
//
// void Application::activity()
// {
//     // Put code for simple module activity here!
// }
//

ModuleInterface(Routing)
    // gates:
    Gate(fromMac, GateDir_Input)
    Gate(fromApp, GateDir_Input)
    Gate(toMac, GateDir_Output)
    Gate(toApp, GateDir_Output)
EndInterface

Register_ModuleInterface(Routing)

//// Sample code:
// class Routing : public cSimpleModule
// {
//     Module_Class_Members(Routing,cSimpleModule,16384)
//     virtual void activity();
//     // Add you own member functions here!
// };
//
// Define_Module(Routing);
//
// void Routing::activity()
// {
//     // Put code for simple module activity here!
// }
//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -