From b5a2034d85c33bd252b8f77410aeea7e8a088a99 Mon Sep 17 00:00:00 2001
From: Amit Margalit <amitm@il.ibm.com>
Date: Tue, 8 Apr 2014 10:51:00 +0300
Subject: [PATCH] Added bt_ctf_get_decl_event_id() API function.

Signed-Off-By: Amit Margalit <amitm@il.ibm.com>
---
 bindings/python/babeltrace.i.in | 8 ++++++++
 formats/ctf/events.c            | 8 ++++++++
 include/babeltrace/ctf/events.h | 5 +++++
 3 files changed, 21 insertions(+)

diff --git a/bindings/python/babeltrace.i.in b/bindings/python/babeltrace.i.in
index 294177f..cc3ed6f 100644
--- a/bindings/python/babeltrace.i.in
+++ b/bindings/python/babeltrace.i.in
@@ -509,6 +509,8 @@ struct bt_ctf_event *bt_ctf_iter_read_event(struct bt_ctf_iter *iter);
 %rename("_bt_ctf_field_get_error") bt_ctf_field_get_error(void);
 %rename("_bt_ctf_get_decl_event_name") bt_ctf_get_decl_event_name(const struct
 		bt_ctf_event_decl *event);
+%rename("_bt_ctf_get_decl_event_id") bt_ctf_get_decl_event_id(const struct
+		bt_ctf_event_decl *event);
 %rename("_bt_ctf_get_decl_field_name") bt_ctf_get_decl_field_name(
 		const struct bt_ctf_field_decl *field);
 %rename("_bt_ctf_get_decl_from_def") bt_ctf_get_decl_from_def(
@@ -551,6 +553,7 @@ double bt_ctf_get_float(const struct bt_definition *field);
 const struct bt_definition *bt_ctf_get_variant(const struct bt_definition *field);
 int bt_ctf_field_get_error(void);
 const char *bt_ctf_get_decl_event_name(const struct bt_ctf_event_decl *event);
+uint64_t bt_ctf_get_decl_event_id(const struct bt_ctf_event_decl *event);
 const char *bt_ctf_get_decl_field_name(const struct bt_ctf_field_decl *field);
 const struct bt_declaration *bt_ctf_get_decl_from_def(const struct bt_definition *field);
 const struct bt_declaration *bt_ctf_get_decl_from_field_decl(const struct bt_ctf_field_decl *field);
@@ -814,6 +817,11 @@ class EventDeclaration(object):
 		return _bt_ctf_get_decl_event_name(self._ed)
 
 	@property
+	def id(self):
+		"""Return the event-ID of the event or (uint64_t)~0 on error"""
+		return _bt_ctf_get_decl_event_id(self._ed)
+
+	@property
 	def fields(self):
 		"""
 		Generator returning all FieldDeclarations of an event, going through
diff --git a/formats/ctf/events.c b/formats/ctf/events.c
index 8174293..698c5f3 100644
--- a/formats/ctf/events.c
+++ b/formats/ctf/events.c
@@ -712,6 +712,14 @@ const char *bt_ctf_get_decl_event_name(const struct bt_ctf_event_decl *event)
 	return g_quark_to_string(event->parent.name);
 }
 
+uint64_t bt_ctf_get_decl_event_id(const struct bt_ctf_event_decl *event)
+{
+	if (!event)
+		return (uint64_t)(~0);
+
+	return event->parent.id;
+}
+
 int bt_ctf_get_decl_fields(struct bt_ctf_event_decl *event_decl,
 		enum bt_ctf_scope scope,
 		struct bt_ctf_field_decl const * const **list,
diff --git a/include/babeltrace/ctf/events.h b/include/babeltrace/ctf/events.h
index c81d885..3995c50 100644
--- a/include/babeltrace/ctf/events.h
+++ b/include/babeltrace/ctf/events.h
@@ -271,6 +271,11 @@ int bt_ctf_get_event_decl_list(int handle_id, struct bt_context *ctx,
 const char *bt_ctf_get_decl_event_name(const struct bt_ctf_event_decl *event);
 
 /*
+ * bt_ctf_get_decl_event_id: return the event-ID of the event or (uint64_t)(~0) on error
+ */
+uint64_t bt_ctf_get_decl_event_id(const struct bt_ctf_event_decl *event);
+
+/*
  * bt_ctf_get_decl_fields: get all field declarations in a scope of an event
  *
  * The list array is pointed to the array of field declaration.
-- 
1.9.1

