[beast/ebeast] V8: derive fundamental IDL types from Aida::RemoteHandle to allow generic wrappers
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast/ebeast] V8: derive fundamental IDL types from Aida::RemoteHandle to allow generic wrappers
- Date: Tue, 7 Mar 2017 22:46:36 +0000 (UTC)
commit 5d75b5ce840736f306ab372133f579e65230ea22
Author: Tim Janik <timj gnu org>
Date: Wed Feb 22 19:21:38 2017 +0100
V8: derive fundamental IDL types from Aida::RemoteHandle to allow generic wrappers
Signed-off-by: Tim Janik <timj gnu org>
ebeast/v8bse/V8Stub.py | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
---
diff --git a/ebeast/v8bse/V8Stub.py b/ebeast/v8bse/V8Stub.py
index 7ed5c91..1dc7b26 100644
--- a/ebeast/v8bse/V8Stub.py
+++ b/ebeast/v8bse/V8Stub.py
@@ -97,11 +97,14 @@ class Generator:
v8pp_class_types += [ tp ]
# C++ class type aliases for v8pp::class_
s += '\n// v8pp::class_ aliases\n'
+ s += 'typedef %-40s V8ppType_AidaRemoteHandle;\n' % 'v8pp::class_<Aida::RemoteHandle>'
for tp in v8pp_class_types:
s += 'typedef %-40s %s;\n' % ('v8pp::class_<%s>' % colon_typename (tp), v8ppclass_type (tp))
# C++ class specialisations for v8pp::convert
s += '\n// v8pp::convert<> specialisations\n'
s += 'namespace v8pp {\n'
+ s += 'template<> struct convert%-40s : convert_AidaRemoteHandle<Aida::RemoteHandle> {};\n' %
'<Aida::RemoteHandle>'
+ s += 'template<> struct convert%-40s : convert_AidaRemoteHandle<Aida::RemoteHandle*> {};\n' %
'<Aida::RemoteHandle*>'
for tp in v8pp_class_types:
cn = colon_typename (tp)
if tp.storage == Decls.INTERFACE:
@@ -116,6 +119,7 @@ class Generator:
s += '\n// Main binding stub\n'
s += 'struct V8stub final {\n'
s += ' v8::Isolate *const isolate_;\n'
+ s += ' %-40s %s;\n' % ('V8ppType_AidaRemoteHandle', 'AidaRemoteHandle_class_')
for tp in v8pp_class_types:
s += ' %-40s %s;\n' % (v8ppclass_type (tp), v8ppclass (tp))
s += ' v8pp::module module_;\n'
@@ -125,6 +129,7 @@ class Generator:
# V8stub ctor - begin
s += '\nV8stub::V8stub (v8::Isolate *const isolate) :\n'
s += ' isolate_ (isolate),\n'
+ s += ' AidaRemoteHandle_class_ (isolate),\n'
for tp in v8pp_class_types:
s += ' %s (isolate),\n' % v8ppclass (tp)
s += ' module_ (isolate)\n'
@@ -144,6 +149,8 @@ class Generator:
if tp.storage == Decls.INTERFACE:
for tb in bases (tp):
b += ' .inherit<%s>()\n' % colon_typename (tb)
+ if len (bases (tp)) == 0:
+ b += ' .inherit<%s>()\n' % 'Aida::RemoteHandle'
# Class ctor
if tp.storage == Decls.SEQUENCE or tp.storage == Decls.RECORD:
b += ' .ctor()\n'
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]