From 9160209fb734d7341cb7f7514759a9f7b0cf1465 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Fri, 21 Apr 2023 17:17:10 +0200
Subject: [PATCH] [kernel] annotations update hook

---
 src/kernel_services/ast_data/annotations.ml  | 13 +++++++++++++
 src/kernel_services/ast_data/annotations.mli |  4 ++++
 2 files changed, 17 insertions(+)

diff --git a/src/kernel_services/ast_data/annotations.ml b/src/kernel_services/ast_data/annotations.ml
index b30a7a86800..e2b814dc187 100644
--- a/src/kernel_services/ast_data/annotations.ml
+++ b/src/kernel_services/ast_data/annotations.ml
@@ -155,6 +155,19 @@ let () =
        let kf = find_englobing_kf stmt in
        List.iter (fun a -> clear_linked_to_annot kf stmt e a) !l)
 
+let add_hook_on_change f =
+  begin
+    let notify _ _ _ = f () in
+    Globals.add_hook_on_update notify ;
+    Globals.add_hook_on_remove notify ;
+    Model_fields.add_hook_on_update notify ;
+    Model_fields.add_hook_on_remove notify ;
+    Funspecs.add_hook_on_update notify ;
+    Funspecs.add_hook_on_remove notify ;
+    Code_annots.add_hook_on_update notify ;
+    Code_annots.add_hook_on_remove notify ;
+  end
+
 (**************************************************************************)
 (** {2 Getting annotations} *)
 (**************************************************************************)
diff --git a/src/kernel_services/ast_data/annotations.mli b/src/kernel_services/ast_data/annotations.mli
index 3d84adb429d..6f1ae71fa54 100644
--- a/src/kernel_services/ast_data/annotations.mli
+++ b/src/kernel_services/ast_data/annotations.mli
@@ -30,6 +30,10 @@ open Cil_types
 (** {2 Getting annotations} *)
 (**************************************************************************)
 
+val add_hook_on_change: (unit -> unit) -> unit
+(** Emitted whenever anhy of the annotation tables are modified.
+    @since Frama-C+dev *)
+
 (**************************************************************************)
 (** {3 Code annotations} *)
 (**************************************************************************)
-- 
GitLab