create directories branches, tags, trunk
[lttv.git] / ltt / branches / poly / lttv / lttv / iattribute.h
index 0bf10ad72d474443e174ace412d063f32dd1903e..cbda045f4bba5db151a75c11d99d3de82f01d5c2 100644 (file)
@@ -16,7 +16,7 @@
  * MA 02111-1307, USA.
  */
 
-/* FIXME : unnamed attributed not implemented */
+/* FIXME : unnamed attributes not implemented */
 
 #ifndef IATTRIBUTE_H
 #define IATTRIBUTE_H
    and access functions over a wide range of structures. The names are 
    represented by unique integer identifiers, GQuarks. */
 
+/* Please note that adding a value of type gobject that is non null does not
+ * increment the reference count of this object : the actual reference to
+ * the object is "given" to the attribute tree. When the gobject value
+ * is removed, the object is unreferenced. A value copy through
+ * lttv_iattribute_copy_value does increase the reference count of the 
+ * gobject. */
+
 typedef GQuark LttvAttributeName;
 
 typedef enum _LttvAttributeType {
@@ -75,7 +82,7 @@ struct _LttvIAttributeClass {
   gboolean (*named) (LttvIAttribute *self, gboolean *homogeneous);
 
   LttvAttributeType (*get) (LttvIAttribute *self, unsigned i, 
-      LttvAttributeName *name, LttvAttributeValue *v);
+      LttvAttributeName *name, LttvAttributeValue *v, gboolean *is_named);
 
   LttvAttributeType (*get_by_name) (LttvIAttribute *self,
       LttvAttributeName name, LttvAttributeValue *v);
@@ -83,6 +90,10 @@ struct _LttvIAttributeClass {
   LttvAttributeValue (*add) (LttvIAttribute *self, LttvAttributeName name, 
       LttvAttributeType t);
 
+  LttvAttributeValue (*add_unnamed) (LttvIAttribute *self,
+                       LttvAttributeName name,
+      LttvAttributeType t);
+
   void (*remove) (LttvIAttribute *self, unsigned i);
 
   void (*remove_by_name) (LttvIAttribute *self,
@@ -90,6 +101,10 @@ struct _LttvIAttributeClass {
 
   LttvIAttribute* (*find_subdir) (LttvIAttribute *self, 
       LttvAttributeName name);
+
+  LttvIAttribute* (*find_subdir_unnamed) (LttvIAttribute *self, 
+      LttvAttributeName name);
+
 };
 
 
@@ -110,7 +125,7 @@ gboolean lttv_iattribute_named(LttvIAttribute *self, gboolean *homogeneous);
 /* Get the i th attribute along with its type and a pointer to its value. */
 
 LttvAttributeType lttv_iattribute_get(LttvIAttribute *self, unsigned i, 
-    LttvAttributeName *name, LttvAttributeValue *v);
+    LttvAttributeName *name, LttvAttributeValue *v, gboolean *is_named);
  
 
 /* Get the named attribute in the table along with its type and a pointer to
@@ -127,7 +142,8 @@ LttvAttributeType lttv_iattribute_get_by_name(LttvIAttribute *self,
 LttvAttributeValue lttv_iattribute_add(LttvIAttribute *self, 
     LttvAttributeName name, LttvAttributeType t);
 
-
+LttvAttributeValue lttv_iattribute_add_unnamed(LttvIAttribute *self, 
+    LttvAttributeName name, LttvAttributeType t);
 /* Remove an attribute */
 
 void lttv_iattribute_remove(LttvIAttribute *self, unsigned i);
@@ -144,6 +160,8 @@ void lttv_iattribute_remove_by_name(LttvIAttribute *self,
 LttvIAttribute* lttv_iattribute_find_subdir(LttvIAttribute *self, 
       LttvAttributeName name);
 
+LttvIAttribute* lttv_iattribute_find_subdir_unnamed(LttvIAttribute *self, 
+      LttvAttributeName name);
 
 /* The remaining utility functions are not part of the LttvIAttribute
    interface but operate on objects implementing it. */
This page took 0.024466 seconds and 4 git commands to generate.