36 #define LIBTRACI_SUBSCRIPTION_IMPLEMENTATION(CLASS, DOMAIN) \
37 void CLASS::subscribe(const std::string& objectID, const std::vector<int>& varIDs, double begin, double end, const libsumo::TraCIResults& params) { \
38 libtraci::Connection::getActive().subscribeObjectVariable(libsumo::CMD_SUBSCRIBE_##DOMAIN##_VARIABLE, objectID, begin, end, varIDs, params); \
41 void CLASS::unsubscribe(const std::string& objectID) { \
42 subscribe(objectID, std::vector<int>()); \
45 void CLASS::subscribeContext(const std::string& objectID, int domain, double dist, const std::vector<int>& varIDs, double begin, double end, const libsumo::TraCIResults& params) { \
46 libtraci::Connection::getActive().subscribeObjectContext(libsumo::CMD_SUBSCRIBE_##DOMAIN##_CONTEXT, objectID, begin, end, domain, dist, varIDs, params); \
49 void CLASS::unsubscribeContext(const std::string& objectID, int domain, double dist) { \
50 subscribeContext(objectID, domain, dist, std::vector<int>()); \
53 const libsumo::SubscriptionResults CLASS::getAllSubscriptionResults() { \
54 return libtraci::Connection::getActive().getAllSubscriptionResults(libsumo::RESPONSE_SUBSCRIBE_##DOMAIN##_VARIABLE); \
57 const libsumo::TraCIResults CLASS::getSubscriptionResults(const std::string& objectID) { \
58 return libtraci::Connection::getActive().getAllSubscriptionResults(libsumo::RESPONSE_SUBSCRIBE_##DOMAIN##_VARIABLE)[objectID]; \
61 const libsumo::ContextSubscriptionResults CLASS::getAllContextSubscriptionResults() { \
62 return libtraci::Connection::getActive().getAllContextSubscriptionResults(libsumo::RESPONSE_SUBSCRIBE_##DOMAIN##_CONTEXT); \
65 const libsumo::SubscriptionResults CLASS::getContextSubscriptionResults(const std::string& objectID) { \
66 return libtraci::Connection::getActive().getAllContextSubscriptionResults(libsumo::RESPONSE_SUBSCRIBE_##DOMAIN##_VARIABLE)[objectID]; \
69 void CLASS::subscribeParameterWithKey(const std::string& objectID, const std::string& key, double beginTime, double endTime) { \
70 subscribe(objectID, std::vector<int>({libsumo::VAR_PARAMETER_WITH_KEY}), beginTime, endTime, libsumo::TraCIResults {{libsumo::VAR_PARAMETER_WITH_KEY, std::make_shared<libsumo::TraCIString>(key)}}); \
74 #define LIBTRACI_PARAMETER_IMPLEMENTATION(CLASS, DOMAIN) \
76 CLASS::getParameter(const std::string& objectID, const std::string& param) { \
77 tcpip::Storage content; \
78 content.writeByte(libsumo::TYPE_STRING); \
79 content.writeString(param); \
80 return Dom::getString(libsumo::VAR_PARAMETER, objectID, &content); \
84 CLASS::setParameter(const std::string& objectID, const std::string& key, const std::string& value) { \
85 tcpip::Storage content; \
86 content.writeUnsignedByte(libsumo::TYPE_COMPOUND); \
87 content.writeInt(2); \
88 content.writeUnsignedByte(libsumo::TYPE_STRING); \
89 content.writeString(key); \
90 content.writeUnsignedByte(libsumo::TYPE_STRING); \
91 content.writeString(value); \
92 Connection::getActive().doCommand(libsumo::CMD_SET_##DOMAIN##_VARIABLE, libsumo::VAR_PARAMETER, objectID, &content); \
95 const std::pair<std::string, std::string> \
96 CLASS::getParameterWithKey(const std::string& objectID, const std::string& key) { \
97 return std::make_pair(key, getParameter(objectID, key)); \
105 template<
int GET,
int SET>
152 static void setInt(
int var,
const std::string&
id,
int value) {
156 static void setDouble(
int var,
const std::string&
id,
double value) {
160 static void setString(
int var,
const std::string&
id,
const std::string& value) {
164 static void setStringVector(
int var,
const std::string&
id,
const std::vector<std::string>& value) {
std::vector< std::string > getStringVector(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
void setCol(int command, int var, const std::string &id, const libsumo::TraCIColor c)
int getByte(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
void setInt(int command, int var, const std::string &id, int value)
libsumo::TraCIColor getCol(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
void setStringVector(int command, int var, const std::string &id, const std::vector< std::string > &value)
libsumo::TraCIStage getTraCIStage(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
libsumo::TraCIPosition getPos(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
static Connection & getActive()
std::string getString(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
libsumo::TraCIPosition getPos3D(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
void setString(int command, int var, const std::string &id, const std::string &value)
void setDouble(int command, int var, const std::string &id, double value)
double getDouble(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
libsumo::TraCIPositionVector getPolygon(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
int getInt(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
int getUnsignedByte(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
static void setDouble(int var, const std::string &id, double value)
static libsumo::TraCIPosition getPos(int var, const std::string &id, tcpip::Storage *add=nullptr)
static void setCol(int var, const std::string &id, const libsumo::TraCIColor value)
static int getUnsignedByte(int var, const std::string &id, tcpip::Storage *add=nullptr)
static void setStringVector(int var, const std::string &id, const std::vector< std::string > &value)
static std::vector< std::string > getStringVector(int var, const std::string &id, tcpip::Storage *add=nullptr)
static libsumo::TraCIColor getCol(int var, const std::string &id, tcpip::Storage *add=nullptr)
static std::string getString(int var, const std::string &id, tcpip::Storage *add=nullptr)
static int getInt(int var, const std::string &id, tcpip::Storage *add=nullptr)
static libsumo::TraCIStage getTraCIStage(int var, const std::string &id, tcpip::Storage *add=nullptr)
static libsumo::TraCIPosition getPos3D(int var, const std::string &id, tcpip::Storage *add=nullptr)
static libsumo::TraCIPositionVector getPolygon(int var, const std::string &id, tcpip::Storage *add=nullptr)
static double getDouble(int var, const std::string &id, tcpip::Storage *add=nullptr)
static void setInt(int var, const std::string &id, int value)
static void setString(int var, const std::string &id, const std::string &value)
static int getByte(int var, const std::string &id, tcpip::Storage *add=nullptr)
std::vector< TraCIPosition > TraCIPositionVector