From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40020) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XHCHR-0000cl-3O for qemu-devel@nongnu.org; Tue, 12 Aug 2014 09:38:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XHCHM-00083T-JN for qemu-devel@nongnu.org; Tue, 12 Aug 2014 09:38:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:3092) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XHCHM-00083E-34 for qemu-devel@nongnu.org; Tue, 12 Aug 2014 09:38:20 -0400 From: Stefan Hajnoczi Date: Tue, 12 Aug 2014 14:37:44 +0100 Message-Id: <1407850675-11890-8-git-send-email-stefanha@redhat.com> In-Reply-To: <1407850675-11890-1-git-send-email-stefanha@redhat.com> References: <1407850675-11890-1-git-send-email-stefanha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULL 07/18] trace: [tcg] Argument type transformation machinery List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , =?UTF-8?q?Llu=C3=ADs=20Vilanova?= , Stefan Hajnoczi From: Llu=C3=ADs Vilanova Signed-off-by: Llu=C3=ADs Vilanova Signed-off-by: Stefan Hajnoczi --- scripts/tracetool/__init__.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.p= y index e8e8edc..bd3fd85 100644 --- a/scripts/tracetool/__init__.py +++ b/scripts/tracetool/__init__.py @@ -15,6 +15,7 @@ __email__ =3D "stefanha@linux.vnet.ibm.com" =20 import re import sys +import weakref =20 import tracetool.format import tracetool.backend @@ -108,6 +109,18 @@ class Arguments: """List of argument types.""" return [ type_ for type_, _ in self._args ] =20 + def transform(self, *trans): + """Return a new Arguments instance with transformed types. + + The types in the resulting Arguments instance are transformed ac= cording + to tracetool.transform.transform_type. + """ + res =3D [] + for type_, name in self._args: + res.append((tracetool.transform.transform_type(type_, *trans= ), + name)) + return Arguments(res) + =20 class Event(object): """Event description. @@ -128,7 +141,7 @@ class Event(object): =20 _VALID_PROPS =3D set(["disable"]) =20 - def __init__(self, name, props, fmt, args): + def __init__(self, name, props, fmt, args, orig=3DNone): """ Parameters ---------- @@ -140,12 +153,19 @@ class Event(object): Event printing format. args : Arguments Event arguments. + orig : Event or None + Original Event before transformation. """ self.name =3D name self.properties =3D props self.fmt =3D fmt self.args =3D args =20 + if orig is None: + self.original =3D weakref.ref(self) + else: + self.original =3D orig + unknown_props =3D set(self.properties) - self._VALID_PROPS if len(unknown_props) > 0: raise ValueError("Unknown properties: %s" @@ -190,6 +210,14 @@ class Event(object): fmt =3D Event.QEMU_TRACE return fmt % {"name": self.name} =20 + def transform(self, *trans): + """Return a new Event with transformed Arguments.""" + return Event(self.name, + list(self.properties), + self.fmt, + self.args.transform(*trans), + self) + =20 def _read_events(fobj): res =3D [] --=20 1.9.3