提交 1f6fc82b 编写于 作者: M Matthias Bolte

esx: Change generated method parameter autobinding

Instead of specifying the type of the managed object directly specify
the ServiceContent member name. This way the mapping dictionary can be
removed.
上级 9cd16c0a
...@@ -40,9 +40,9 @@ ...@@ -40,9 +40,9 @@
# #
# The _this parameter can have a type attached to it: # The _this parameter can have a type attached to it:
# #
# _this:<type> # _this:<member>
# #
# The <type> refers to one of the ServiceContent members. This make the # The <member> refers to one of the ServiceContent members. This make the
# generator auto-bind _this to the corresponding ServiceContent member. # generator auto-bind _this to the corresponding ServiceContent member.
# #
...@@ -782,7 +782,7 @@ end ...@@ -782,7 +782,7 @@ end
method CopyVirtualDisk_Task returns ManagedObjectReference r method CopyVirtualDisk_Task returns ManagedObjectReference r
ManagedObjectReference _this:VirtualDiskManager r ManagedObjectReference _this:virtualDiskManager r
String sourceName r String sourceName r
ManagedObjectReference sourceDatacenter o ManagedObjectReference sourceDatacenter o
String destName r String destName r
...@@ -793,7 +793,7 @@ end ...@@ -793,7 +793,7 @@ end
method CreateFilter returns ManagedObjectReference r method CreateFilter returns ManagedObjectReference r
ManagedObjectReference _this:PropertyCollector r ManagedObjectReference _this:propertyCollector r
PropertyFilterSpec spec r PropertyFilterSpec spec r
Boolean partialUpdates r Boolean partialUpdates r
end end
...@@ -809,7 +809,7 @@ end ...@@ -809,7 +809,7 @@ end
method CreateVirtualDisk_Task returns ManagedObjectReference r method CreateVirtualDisk_Task returns ManagedObjectReference r
ManagedObjectReference _this:VirtualDiskManager r ManagedObjectReference _this:virtualDiskManager r
String name r String name r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
VirtualDiskSpec spec r VirtualDiskSpec spec r
...@@ -817,7 +817,7 @@ end ...@@ -817,7 +817,7 @@ end
method DeleteVirtualDisk_Task returns ManagedObjectReference r method DeleteVirtualDisk_Task returns ManagedObjectReference r
ManagedObjectReference _this:VirtualDiskManager r ManagedObjectReference _this:virtualDiskManager r
String name r String name r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
end end
...@@ -829,7 +829,7 @@ end ...@@ -829,7 +829,7 @@ end
method FindByIp returns ManagedObjectReference o method FindByIp returns ManagedObjectReference o
ManagedObjectReference _this:SearchIndex r ManagedObjectReference _this:searchIndex r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
String ip r String ip r
Boolean vmSearch r Boolean vmSearch r
...@@ -837,7 +837,7 @@ end ...@@ -837,7 +837,7 @@ end
method FindByUuid returns ManagedObjectReference o method FindByUuid returns ManagedObjectReference o
ManagedObjectReference _this:SearchIndex r ManagedObjectReference _this:searchIndex r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
String uuid r String uuid r
Boolean vmSearch r Boolean vmSearch r
...@@ -845,7 +845,7 @@ end ...@@ -845,7 +845,7 @@ end
method Login returns UserSession r method Login returns UserSession r
ManagedObjectReference _this:SessionManager r ManagedObjectReference _this:sessionManager r
String userName r String userName r
String password r String password r
String locale o String locale o
...@@ -853,12 +853,12 @@ end ...@@ -853,12 +853,12 @@ end
method Logout method Logout
ManagedObjectReference _this:SessionManager r ManagedObjectReference _this:sessionManager r
end end
method MakeDirectory method MakeDirectory
ManagedObjectReference _this:FileManager r ManagedObjectReference _this:fileManager r
String name r String name r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
Boolean createParentDirectories o Boolean createParentDirectories o
...@@ -886,7 +886,7 @@ end ...@@ -886,7 +886,7 @@ end
method QueryAvailablePerfMetric returns PerfMetricId ol method QueryAvailablePerfMetric returns PerfMetricId ol
ManagedObjectReference _this:PerformanceManager r ManagedObjectReference _this:perfManager r
ManagedObjectReference entity r ManagedObjectReference entity r
DateTime beginTime o DateTime beginTime o
DateTime endTime o DateTime endTime o
...@@ -895,19 +895,19 @@ end ...@@ -895,19 +895,19 @@ end
method QueryPerf returns PerfEntityMetricBase ol method QueryPerf returns PerfEntityMetricBase ol
ManagedObjectReference _this:PerformanceManager r ManagedObjectReference _this:perfManager r
PerfQuerySpec querySpec rl PerfQuerySpec querySpec rl
end end
method QueryPerfCounter returns PerfCounterInfo ol method QueryPerfCounter returns PerfCounterInfo ol
ManagedObjectReference _this:PerformanceManager r ManagedObjectReference _this:perfManager r
Int counterId rl Int counterId rl
end end
method QueryVirtualDiskUuid returns String r method QueryVirtualDiskUuid returns String r
ManagedObjectReference _this:VirtualDiskManager r ManagedObjectReference _this:virtualDiskManager r
String name r String name r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
end end
...@@ -952,7 +952,7 @@ end ...@@ -952,7 +952,7 @@ end
method RetrieveProperties returns ObjectContent ol method RetrieveProperties returns ObjectContent ol
ManagedObjectReference _this:PropertyCollector r ManagedObjectReference _this:propertyCollector r
PropertyFilterSpec specSet rl PropertyFilterSpec specSet rl
end end
...@@ -978,7 +978,7 @@ end ...@@ -978,7 +978,7 @@ end
method SessionIsActive returns Boolean r method SessionIsActive returns Boolean r
ManagedObjectReference _this:SessionManager r ManagedObjectReference _this:sessionManager r
String sessionID r String sessionID r
String userName r String userName r
end end
...@@ -1000,13 +1000,13 @@ end ...@@ -1000,13 +1000,13 @@ end
method WaitForUpdates returns UpdateSet r method WaitForUpdates returns UpdateSet r
ManagedObjectReference _this:PropertyCollector r ManagedObjectReference _this:propertyCollector r
String version o String version o
end end
method ZeroFillVirtualDisk_Task returns ManagedObjectReference r method ZeroFillVirtualDisk_Task returns ManagedObjectReference r
ManagedObjectReference _this:VirtualDiskManager r ManagedObjectReference _this:virtualDiskManager r
String name r String name r
ManagedObjectReference datacenter o ManagedObjectReference datacenter o
end end
...@@ -38,14 +38,7 @@ valid_occurrences = [OCCURRENCE__REQUIRED_ITEM, ...@@ -38,14 +38,7 @@ valid_occurrences = [OCCURRENCE__REQUIRED_ITEM,
OCCURRENCE__OPTIONAL_LIST, OCCURRENCE__OPTIONAL_LIST,
OCCURRENCE__IGNORED] OCCURRENCE__IGNORED]
autobind_map = { "FileManager" : "fileManager", autobind_names = set()
"PerformanceManager" : "perfManager",
"PropertyCollector" : "propertyCollector",
"SearchIndex" : "searchIndex",
"SessionManager" : "sessionManager",
"VirtualDiskManager" : "virtualDiskManager" }
autobind_map_usage = set()
...@@ -94,16 +87,16 @@ class Parameter(Member): ...@@ -94,16 +87,16 @@ class Parameter(Member):
Member.__init__(self, type, occurrence) Member.__init__(self, type, occurrence)
if ':' in name and name.startswith("_this"): if ':' in name and name.startswith("_this"):
self.name, self.autobind_type = name.split(":") self.name, self.autobind_name = name.split(":")
else: else:
self.name = name self.name = name
self.autobind_type = None self.autobind_name = None
def generate_parameter(self, is_last = False, is_header = True, offset = 0): def generate_parameter(self, is_last = False, is_header = True, offset = 0):
if self.occurrence == OCCURRENCE__IGNORED: if self.occurrence == OCCURRENCE__IGNORED:
raise ValueError("invalid function parameter occurrence value '%s'" % self.occurrence) raise ValueError("invalid function parameter occurrence value '%s'" % self.occurrence)
elif self.autobind_type is not None: elif self.autobind_name is not None:
return "" return ""
else: else:
string = " " string = " "
...@@ -193,7 +186,7 @@ class Method: ...@@ -193,7 +186,7 @@ class Method:
self.returns = returns self.returns = returns
for parameter in parameters: for parameter in parameters:
if parameter.autobind_type is None: if parameter.autobind_name is None:
self.parameters.append(parameter) self.parameters.append(parameter)
else: else:
self.autobind_parameter = parameter self.autobind_parameter = parameter
...@@ -227,8 +220,8 @@ class Method: ...@@ -227,8 +220,8 @@ class Method:
source += "ESX_VI__METHOD(%s," % self.name source += "ESX_VI__METHOD(%s," % self.name
if self.autobind_parameter is not None: if self.autobind_parameter is not None:
autobind_map_usage.add(self.autobind_parameter.autobind_type) autobind_names.add(self.autobind_parameter.autobind_name)
source += " %s,\n" % autobind_map[self.autobind_parameter.autobind_type] source += " %s,\n" % self.autobind_parameter.autobind_name
else: else:
source += " /* explicit _this */,\n" source += " /* explicit _this */,\n"
...@@ -1785,11 +1778,10 @@ for name in names: ...@@ -1785,11 +1778,10 @@ for name in names:
methods_header.write(methods_by_name[name].generate_header()) methods_header.write(methods_by_name[name].generate_header())
methods_source.write(methods_by_name[name].generate_source()) methods_source.write(methods_by_name[name].generate_source())
sorted_usage = list(autobind_map_usage) names = list(autobind_names)
sorted_usage.sort() names.sort()
for usage in sorted_usage: for name in names:
name = autobind_map[usage]
string = aligned("#define ESX_VI__METHOD__PARAMETER__THIS__%s " % name, "\\\n", 78) string = aligned("#define ESX_VI__METHOD__PARAMETER__THIS__%s " % name, "\\\n", 78)
string += " ESX_VI__METHOD__PARAMETER__THIS_FROM_SERVICE(ManagedObjectReference, \\\n" string += " ESX_VI__METHOD__PARAMETER__THIS_FROM_SERVICE(ManagedObjectReference, \\\n"
string += aligned("", "%s)\n\n\n\n" % name, 49) string += aligned("", "%s)\n\n\n\n" % name, 49)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册