Chromium Code Reviews| Index: mojo/tools/generate_java_callback_interfaces.py |
| diff --git a/mojo/tools/generate_java_callback_interfaces.py b/mojo/tools/generate_java_callback_interfaces.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..23f13281559db54bd5e259d87c0f7a8ddc4bfe8b |
| --- /dev/null |
| +++ b/mojo/tools/generate_java_callback_interfaces.py |
| @@ -0,0 +1,61 @@ |
| +"""Generate the org.chromium.mojo.bindings.Callbacks interface""" |
| + |
| +import argparse |
| +import sys |
| + |
| +CALLBACK_TEMPLATE = (""" |
| + /** |
| + * A generic %d argument(s) callback. |
| + * |
| + * %s |
| + */ |
| + interface Callback%d<%s> { |
| + /** |
| + * Call the callback. |
| + */ |
| + public void call(%s); |
| + } |
| +""") |
| + |
| +INTERFACE_TEMPLATE = ( |
| +"""// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// This file has been generated using |
| +// mojo/tools/generate_java_callback_interfaces.py |
| + |
| +package org.chromium.mojo.bindings; |
| + |
| +/** |
| + * Contain generic interface for callbacks. |
| + */ |
| +public interface Callbacks { |
| +%s |
| + |
|
rmcilroy
2014/06/05 12:10:26
nit - remove this newline to avoid a double newlin
qsr
2014/06/05 12:40:13
Done.
|
| +} |
| +""") |
| + |
| +def GenerateCallback(nb_args): |
| + params = '\n * '.join( |
| + ['@param <T%d> the type of the %d argument.' % (i+1, i+1) |
|
rmcilroy
2014/06/05 12:10:26
"the type of argument %d."
qsr
2014/06/05 12:40:13
Done.
|
| + for i in xrange(nb_args)]) |
| + template_parameters = ', '.join(['T%d' % (i+1) for i in xrange(nb_args)]) |
| + callback_parameters = ', '.join(['T%d t%d' % ((i+1), (i+1)) |
| + for i in xrange(nb_args)]) |
| + return CALLBACK_TEMPLATE % (nb_args, params, nb_args, template_parameters, |
| + callback_parameters) |
| + |
| +def main(): |
| + parser = argparse.ArgumentParser( |
| + description="Generate org.chromium.mojo.bindings.Callbacks") |
| + parser.add_argument("max_args", nargs=1, type=int, |
| + help="maximal number of arguments to generate callbacks for") |
| + args = parser.parse_args() |
| + max_args = args.max_args[0] |
| + print INTERFACE_TEMPLATE % ''.join([GenerateCallback(i+1) |
| + for i in xrange(max_args)]) |
| + return 0 |
| + |
| +if __name__ == "__main__": |
| + sys.exit(main()) |