//
// Generated file, do not edit! Created by nedtool 5.6 from veins/base/messages/BorderMsg.msg.
//

#ifndef __VEINS_BORDERMSG_M_H
#define __VEINS_BORDERMSG_M_H

#if defined(__clang__)
#  pragma clang diagnostic ignored "-Wreserved-id-macro"
#endif
#include <omnetpp.h>

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

// dll export symbol
#ifndef VEINS_API
#  if defined(VEINS_EXPORT)
#    define VEINS_API  OPP_DLLEXPORT
#  elif defined(VEINS_IMPORT)
#    define VEINS_API  OPP_DLLIMPORT
#  else
#    define VEINS_API
#  endif
#endif


namespace veins {

class BorderMsg;
} // namespace veins

#include "veins/base/utils/Coord_m.h" // import veins.base.utils.Coord


namespace veins {

/**
 * Class generated from <tt>veins/base/messages/BorderMsg.msg:35</tt> by nedtool.
 * <pre>
 * // used as a self packet containing the position, direction and BorderPolicy
 * //
 * // \@author Daniel Willkomm
 * //
 * packet BorderMsg
 * {
 *     int policy;    // border policy to use for the host
 *     Coord startPos; // new start position of the host
 *     Coord direction; // new direction of the host
 * }
 * </pre>
 */
class VEINS_API BorderMsg : public ::omnetpp::cPacket
{
  protected:
    int policy = 0;
    Coord startPos;
    Coord direction;

  private:
    void copy(const BorderMsg& other);

  protected:
    // protected and unimplemented operator==(), to prevent accidental usage
    bool operator==(const BorderMsg&);

  public:
    BorderMsg(const char *name=nullptr, short kind=0);
    BorderMsg(const BorderMsg& other);
    virtual ~BorderMsg();
    BorderMsg& operator=(const BorderMsg& other);
    virtual BorderMsg *dup() const override {return new BorderMsg(*this);}
    virtual void parsimPack(omnetpp::cCommBuffer *b) const override;
    virtual void parsimUnpack(omnetpp::cCommBuffer *b) override;

    // field getter/setter methods
    virtual int getPolicy() const;
    virtual void setPolicy(int policy);
    virtual const Coord& getStartPos() const;
    virtual Coord& getStartPosForUpdate() { return const_cast<Coord&>(const_cast<BorderMsg*>(this)->getStartPos());}
    virtual void setStartPos(const Coord& startPos);
    virtual const Coord& getDirection() const;
    virtual Coord& getDirectionForUpdate() { return const_cast<Coord&>(const_cast<BorderMsg*>(this)->getDirection());}
    virtual void setDirection(const Coord& direction);
};

inline void doParsimPacking(omnetpp::cCommBuffer *b, const BorderMsg& obj) {obj.parsimPack(b);}
inline void doParsimUnpacking(omnetpp::cCommBuffer *b, BorderMsg& obj) {obj.parsimUnpack(b);}

} // namespace veins

#endif // ifndef __VEINS_BORDERMSG_M_H

