<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><font size="3" face="Times New Roman">ping ...<br id="FontBreak"></font><br> <BR><div><div id="SkyDrivePlaceholder"></div>> From: ata.husain@hotmail.com<br>> To: libvir-list@redhat.com<br>> CC: ata.husain@hotmail.com<br>> Subject: [PATCH] ESX: Fix DISPATCH_FREE generation code to free all extended objects<br>> Date: Tue, 1 Jan 2013 22:22:28 -0800<br>> <br>> Python code generator "generate_source" section that handles<br>> code generation to "free" inherited objects needs to generate<br>> DISPATCH_FREE calls for all extended_by objects.<br>> ---<br>> src/esx/esx_vi_generator.py | 21 ++++++++++++++++++---<br>> 1 file changed, 18 insertions(+), 3 deletions(-)<br>> <br>> diff --git a/src/esx/esx_vi_generator.py b/src/esx/esx_vi_generator.py<br>> index af4e7e8..7a7cf76 100755<br>> --- a/src/esx/esx_vi_generator.py<br>> +++ b/src/esx/esx_vi_generator.py<br>> @@ -4,6 +4,7 @@<br>> # esx_vi_generator.py: generates most of the SOAP type mapping code<br>> #<br>> # Copyright (C) 2010-2012 Matthias Bolte <matthias.bolte@googlemail.com><br>> +# Copyright (C) 2013 Ata E Husain Bohra <ata.husain@hotmail.com><br>> #<br>> # This library is free software; you can redistribute it and/or<br>> # modify it under the terms of the GNU Lesser General Public<br>> @@ -785,9 +786,7 @@ class Object(Type):<br>> source += "ESX_VI__TEMPLATE__DYNAMIC_FREE(%s,\n" % self.name<br>> source += "{\n"<br>> <br>> - for extended_by in self.extended_by:<br>> - source += " ESX_VI__TEMPLATE__DISPATCH__FREE(%s)\n" \<br>> - % extended_by<br>> + source += recurse_dispatch(self, "ESX_VI__TEMPLATE__DISPATCH__FREE")<br>> <br>> source += "},\n"<br>> source += "{\n"<br>> @@ -1285,6 +1284,22 @@ class ManagedObject(Type):<br>> <br>> <br>> <br>> +def recurse_dispatch(object, text):<br>> +<br>> + source = ""<br>> +<br>> + if object.extended_by is None:<br>> + return source<br>> +<br>> + for extended_by in object.extended_by:<br>> + source += " %s(%s)\n" % (text, extended_by)<br>> + child = objects_by_name[extended_by]<br>> + source += recurse_dispatch(child, text)<br>> +<br>> + return source<br>> +<br>> +<br>> +<br>> class Enum(Type):<br>> FEATURE__ANY_TYPE = (1 << 1)<br>> FEATURE__SERIALIZE = (1 << 2)<br>> --<br>> 1.7.9.5<br>> <br></div> </div></body>
</html>