-typedef simgrid::s4u::As simgrid_As;
-typedef simgrid::s4u::Host simgrid_Host;
-typedef simgrid::s4u::Mailbox simgrid_Mailbox;
-typedef simgrid::kernel::activity::Synchro simgrid_Synchro;
-typedef simgrid::surf::Cpu surf_Cpu;
-typedef simgrid::routing::NetCard routing_NetCard;
-typedef simgrid::surf::Link Link;
-typedef simgrid::surf::Resource surf_Resource;
-typedef simgrid::trace_mgr::trace tmgr_Trace;
+namespace kernel {
+class EngineImpl;
+namespace actor {
+class ActorImpl;
+using ActorImplPtr = boost::intrusive_ptr<ActorImpl>;
+} // namespace actor
+
+namespace activity {
+ class ActivityImpl;
+ using ActivityImplPtr = boost::intrusive_ptr<ActivityImpl>;
+ XBT_PUBLIC void intrusive_ptr_add_ref(ActivityImpl* activity);
+ XBT_PUBLIC void intrusive_ptr_release(ActivityImpl* activity);
+
+ class ConditionVariableImpl;
+
+ class CommImpl;
+ using CommImplPtr = boost::intrusive_ptr<CommImpl>;
+ class ExecImpl;
+ using ExecImplPtr = boost::intrusive_ptr<ExecImpl>;
+ class IoImpl;
+ using IoImplPtr = boost::intrusive_ptr<IoImpl>;
+ class MutexImpl;
+ using MutexImplPtr = boost::intrusive_ptr<MutexImpl>;
+ class RawImpl;
+ using RawImplPtr = boost::intrusive_ptr<RawImpl>;
+ class SleepImpl;
+ using SleepImplPtr = boost::intrusive_ptr<SleepImpl>;
+
+ class MailboxImpl;
+}
+namespace context {
+class Context;
+class ContextFactory;
+} // namespace context
+namespace lmm {
+class Element;
+class Variable;
+class Constraint;
+class ConstraintLight;
+class System;
+}
+namespace resource {
+class Action;
+class Model;
+class Resource;
+class TraceEvent;
+class LinkImpl;
+class NetworkAction;
+}
+namespace routing {
+class ClusterCreationArgs;
+class LinkCreationArgs;
+class NetPoint;
+class NetZoneImpl;
+class RouteCreationArgs;
+}
+} // namespace kernel
+namespace simix {
+ class Host;
+}
+namespace surf {
+ class Cpu;
+ class CpuModel;
+ class HostImpl;
+ class HostModel;
+ class StorageImpl;
+ class StorageType;
+ class StorageModel;
+}
+namespace trace_mgr {
+ class trace;
+ class future_evt_set;
+}
+namespace vm {
+class VMModel;
+class VirtualMachineImpl;
+} // namespace vm
+} // namespace simgrid
+
+typedef simgrid::s4u::Actor s4u_Actor;
+typedef simgrid::s4u::Host s4u_Host;
+typedef simgrid::s4u::Link s4u_Link;
+typedef simgrid::s4u::File s4u_File;
+typedef simgrid::s4u::Storage s4u_Storage;
+typedef simgrid::s4u::NetZone s4u_NetZone;
+typedef simgrid::s4u::VirtualMachine s4u_VM;
+typedef boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> smx_activity_t;
+typedef simgrid::trace_mgr::trace* tmgr_trace_t;
+
+typedef simgrid::kernel::context::Context* smx_context_t;
+typedef simgrid::kernel::actor::ActorImpl* smx_actor_t;
+typedef simgrid::kernel::activity::ConditionVariableImpl* smx_cond_t;
+typedef simgrid::kernel::activity::MutexImpl* smx_mutex_t;
+typedef simgrid::kernel::activity::MailboxImpl* smx_mailbox_t;
+typedef simgrid::surf::StorageImpl* surf_storage_t;