Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Dig through git history, and update copyright lines.
[simgrid.git] / src / include / surf / surf_resource.h
index 8fb6861..963fdff 100644 (file)
@@ -1,5 +1,6 @@
 
-/* Copyright (c) 2009 The SimGrid Team. All rights reserved.                */
+/* Copyright (c) 2009-2013. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -8,21 +9,37 @@
 #ifndef SURF_RESOURCE_H
 #define SURF_RESOURCE_H
 
-static XBT_INLINE void surf_resource_free(void* r) {
+static XBT_INLINE
+    surf_resource_t surf_resource_new(size_t childsize,
+                                      surf_model_t model, const char *name,
+                                      xbt_dict_t props, void_f_pvoid_t free_f)
+{
+  surf_resource_t res = xbt_malloc0(childsize);
+  res->model = model;
+  res->name = xbt_strdup(name);
+  res->properties = props;
+  res->free_f=free_f;
+  return res;
+}
+
+static XBT_INLINE void surf_resource_free(void *r)
+{
   surf_resource_t resource = r;
-  if (resource->name)
-    free(resource->name);
-  if (resource->properties)
-    xbt_dict_free(&resource->properties);
+  if(resource->free_f)
+    resource->free_f(r);
+  free(resource->name);
+  xbt_dict_free(&resource->properties);
   free(resource);
 }
 
-static XBT_INLINE const char *surf_resource_name(const void *resource) {
-  return ((surf_resource_t)resource)->name;
+static XBT_INLINE const char *surf_resource_name(const void *resource)
+{
+  return ((surf_resource_t) resource)->name;
 }
 
-static XBT_INLINE xbt_dict_t surf_resource_properties(const void *resource) {
-  return ((surf_resource_t)resource)->properties;
+static XBT_INLINE xbt_dict_t surf_resource_properties(const void *resource)
+{
+  return ((surf_resource_t) resource)->properties;
 }
 
-#endif /* SURF_RESOURCE_H */
+#endif                          /* SURF_RESOURCE_H */