extern "C" {
/********************************* Simcalls *********************************/
-XBT_PUBLIC_DATA(const char*) simcall_names[]; /* Name of each simcall */
+XBT_PUBLIC_DATA const char* simcall_names[]; /* Name of each simcall */
#include "popping_enum.h" /* Definition of e_smx_simcall_t, with one value per simcall */
smx_actor_t issuer;
smx_timer_t timer;
int mc_value;
- union u_smx_scalar args[11];
- union u_smx_scalar result;
+ u_smx_scalar args[11];
+ u_smx_scalar result;
};
#define SIMCALL_SET_MC_VALUE(simcall, value) ((simcall)->mc_value = (value))
if (value.get() == nullptr) { // Sometimes we return nullptr in an intrusive_ptr...
simcall.dp = nullptr;
} else {
- intrusive_ptr_add_ref(&*value);
- simcall.dp = static_cast<void*>(&*value);
+ intrusive_ptr_add_ref(value.get());
+ simcall.dp = static_cast<void*>(value.get());
}
}
template <class T> inline boost::intrusive_ptr<T> unmarshal(type<boost::intrusive_ptr<T>>, u_smx_scalar const& simcall)
template <std::size_t I> inline void marshalArgs(smx_simcall_t simcall)
{
+ /* Nothing to do when no args */
}
template <std::size_t I, class A> inline void marshalArgs(smx_simcall_t simcall, A const& a)