1 /* Copyright (c) 2004-2018. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
6 #ifndef SIMGRID_TYPES_H
7 #define SIMGRID_TYPES_H
13 #include <boost/intrusive_ptr.hpp>
21 /** Smart pointer to a simgrid::s4u::Actor */
22 typedef boost::intrusive_ptr<Actor> ActorPtr;
23 XBT_PUBLIC void intrusive_ptr_release(Actor* actor);
24 XBT_PUBLIC void intrusive_ptr_add_ref(Actor* actor);
29 /** Smart pointer to a simgrid::s4u::Comm */
30 typedef boost::intrusive_ptr<Comm> CommPtr;
31 XBT_PUBLIC void intrusive_ptr_release(Comm* c);
32 XBT_PUBLIC void intrusive_ptr_add_ref(Comm* c);
34 class ConditionVariable;
35 /** Smart pointer to a simgrid::s4u::ConditionVariable */
36 typedef boost::intrusive_ptr<ConditionVariable> ConditionVariablePtr;
37 XBT_PUBLIC void intrusive_ptr_release(ConditionVariable* c);
38 XBT_PUBLIC void intrusive_ptr_add_ref(ConditionVariable* c);
43 /** Smart pointer to a simgrid::s4u::Exec */
44 typedef boost::intrusive_ptr<Exec> ExecPtr;
45 XBT_PUBLIC void intrusive_ptr_release(Exec* e);
46 XBT_PUBLIC void intrusive_ptr_add_ref(Exec* e);
51 /** Smart pointer to a simgrid::s4u::Io */
52 typedef boost::intrusive_ptr<Io> IoPtr;
53 XBT_PUBLIC void intrusive_ptr_release(Io* i);
54 XBT_PUBLIC void intrusive_ptr_add_ref(Io* i);
59 /** Smart pointer to a simgrid::s4u::Mailbox */
60 typedef boost::intrusive_ptr<Mailbox> MailboxPtr;
61 XBT_PUBLIC void intrusive_ptr_release(Mailbox* m);
62 XBT_PUBLIC void intrusive_ptr_add_ref(Mailbox* m);
65 XBT_PUBLIC void intrusive_ptr_release(Mutex* m);
66 XBT_PUBLIC void intrusive_ptr_add_ref(Mutex* m);
67 /** Smart pointer to a simgrid::s4u::Mutex */
68 typedef boost::intrusive_ptr<Mutex> MutexPtr;
77 template <class T> class Flag;
84 typedef boost::intrusive_ptr<ActorImpl> ActorImplPtr;
89 typedef boost::intrusive_ptr<ActivityImpl> ActivityImplPtr;
90 XBT_PUBLIC void intrusive_ptr_add_ref(ActivityImpl* activity);
91 XBT_PUBLIC void intrusive_ptr_release(ActivityImpl* activity);
93 class ConditionVariableImpl;
96 typedef boost::intrusive_ptr<CommImpl> CommImplPtr;
98 typedef boost::intrusive_ptr<ExecImpl> ExecImplPtr;
100 typedef boost::intrusive_ptr<IoImpl> IoImplPtr;
102 typedef boost::intrusive_ptr<MutexImpl> MutexImplPtr;
104 typedef boost::intrusive_ptr<RawImpl> RawImplPtr;
106 typedef boost::intrusive_ptr<SleepImpl> SleepImplPtr;
112 class ContextFactory;
113 } // namespace context
118 class ConstraintLight;
131 class ClusterCreationArgs;
132 class LinkCreationArgs;
135 class RouteCreationArgs;
137 } // namespace kernel
151 class CommunicationDeterminismChecker;
153 namespace trace_mgr {
155 class future_evt_set;
159 class VirtualMachineImpl;
161 } // namespace simgrid
163 typedef simgrid::s4u::Actor s4u_Actor;
164 typedef simgrid::s4u::Barrier s4u_Barrier;
165 typedef simgrid::s4u::Host s4u_Host;
166 typedef simgrid::s4u::Link s4u_Link;
167 typedef simgrid::s4u::File s4u_File;
168 typedef simgrid::s4u::Storage s4u_Storage;
169 typedef simgrid::s4u::NetZone s4u_NetZone;
170 typedef simgrid::s4u::VirtualMachine s4u_VM;
171 typedef boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> smx_activity_t;
172 typedef simgrid::trace_mgr::trace* tmgr_trace_t;
174 typedef simgrid::kernel::context::Context* smx_context_t;
175 typedef simgrid::kernel::actor::ActorImpl* smx_actor_t;
176 typedef simgrid::kernel::activity::ConditionVariableImpl* smx_cond_t;
177 typedef simgrid::kernel::activity::MutexImpl* smx_mutex_t;
178 typedef simgrid::kernel::activity::MailboxImpl* smx_mailbox_t;
179 typedef simgrid::surf::StorageImpl* surf_storage_t;
183 typedef struct s4u_Actor s4u_Actor;
184 typedef struct s4u_Barrier s4u_Barrier;
185 typedef struct s4u_Host s4u_Host;
186 typedef struct s4u_Link s4u_Link;
187 typedef struct s4u_File s4u_File;
188 typedef struct s4u_Storage s4u_Storage;
189 typedef struct s4u_NetZone s4u_NetZone;
190 typedef struct s4u_VM s4u_VM;
191 typedef struct kernel_Activity* smx_activity_t;
193 typedef struct s_smx_context* smx_context_t;
194 typedef struct s_smx_actor* smx_actor_t;
195 typedef struct s_smx_cond_t* smx_cond_t;
196 typedef struct s_smx_mutex* smx_mutex_t;
197 typedef struct s_smx_mailbox* smx_mailbox_t;
198 typedef struct s_surf_storage* surf_storage_t;
202 typedef s4u_Barrier* sg_bar_t;
203 typedef s4u_NetZone* sg_netzone_t;
204 typedef s4u_Host* sg_host_t;
205 typedef s4u_Link* sg_link_t;
206 typedef s4u_Storage* sg_storage_t;
207 typedef s4u_File* sg_file_t;
208 typedef s4u_VM* sg_vm_t;
209 typedef s4u_Actor* sg_actor_t;
211 typedef struct s_smx_simcall* smx_simcall_t;
213 /** @ingroup m_datatypes_management_details
214 * @brief Type for any simgrid size
216 typedef unsigned long long sg_size_t;
218 /** @ingroup m_datatypes_management_details
219 * @brief Type for any simgrid offset
221 typedef long long sg_offset_t;
225 #endif /* SIMGRID_TYPES_H */