From 92d685b97be66c3fba0259a8633ae2f224300d04 Mon Sep 17 00:00:00 2001
From: pompolic <pompolic@special-circumstanc.es>
Date: Mon, 5 Jul 2021 20:12:22 +0200
Subject: [PATCH] All parser Envs inherit from HParserEnv

- Add missing __str__() methods
- cast gdb.Value to int on creation
---
 gdb-port/parser-type-instrumentation-gdb.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/gdb-port/parser-type-instrumentation-gdb.py b/gdb-port/parser-type-instrumentation-gdb.py
index e234409..fd46ec3 100644
--- a/gdb-port/parser-type-instrumentation-gdb.py
+++ b/gdb-port/parser-type-instrumentation-gdb.py
@@ -126,7 +126,7 @@ class ButNotEnv(HParserEnv):
 	def __str__(self):
 		return str([str(self.p1), str(self.p2)])
 
-class ActionEnv:
+class ActionEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 
@@ -136,11 +136,14 @@ class ActionEnv:
 
 		# should return a HAction
 		action = gdb.parse_and_eval("((HParseAction*) parser->env)->action");
-		self.action = action
+		self.action = int(action)
 		user_data_p = gdb.parse_and_eval("(HParseAction*) parser->env)->user_data");
-		self.user_data_p = user_data_p
+		self.user_data_p = int(user_data_p)
 
-class AndEnv:
+	def __str__(self):
+		return str([str(self.member_parser), str(hex(self.action)), str(hex(self.user_data_p))])
+
+class AndEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
 
@@ -148,6 +151,9 @@ class AndEnv:
 		parser_obj = top_level_parse.add_or_get_parser(member_parser_p)
 		self.member_parser = parser_obj
 
+	def __str__(self):
+		return str([str(self.member_parser)]))
+
 class ChEnv(HParserEnv):
 	def __init__(self, parser, top_level_parse):
 		self.parser = parser
-- 
GitLab