diff options
Diffstat (limited to 'dotnet/client-010/gentool')
| -rw-r--r-- | dotnet/client-010/gentool/Composite.tpl | 291 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/Constant.tpl | 37 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/Enum.tpl | 59 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/IInvoker.tpl | 57 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/Invoker.tpl | 67 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/MethodDelegate.tpl | 35 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/Option.tpl | 42 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/StructFactory.tpl | 64 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/Type.tpl | 103 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/build.xml | 52 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/codegen | 86 | ||||
| -rw-r--r-- | dotnet/client-010/gentool/dotnetgenutil.py | 271 |
12 files changed, 0 insertions, 1164 deletions
diff --git a/dotnet/client-010/gentool/Composite.tpl b/dotnet/client-010/gentool/Composite.tpl deleted file mode 100644 index c5a1099ef3..0000000000 --- a/dotnet/client-010/gentool/Composite.tpl +++ /dev/null @@ -1,291 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; -using org.apache.qpid.transport.codec; -using System.Collections.Generic; -using org.apache.qpid.transport.util; -using org.apache.qpid.transport.network; -using System.IO; - -namespace org.apache.qpid.transport -{ - -${ -from genutil import * - -cls = klass(type)["@name"] - -segments = type["segments"] - -if type.name in ("control", "command"): - override = "override" - base = "Method" - size = 0 - pack = 2 - if segments: - payload = "true" - else: - payload = "false" - if type.name == "control" and cls == "connection": - track = "Frame.L1" - elif cls == "session" and type["@name"] in ("attach", "attached", "detach", "detached"): - track = "Frame.L2" - elif type.name == "command": - track = "Frame.L4" - else: - track = "Frame.L3" -else: - override = "" - base = "Struct" - size = type["@size"] - pack = num(type["@pack"]) - payload = "false" - track = "4" - -PACK_TYPES = { - 1: "byte", - 2: "int", - 4: "int" -} - -typecode = code(type) -} - -public sealed class $name : $base { - - public const int TYPE = $typecode; - - public override int GetStructType() { - return TYPE; - } - - public override int GetSizeWidth() { - return $size; - } - - public override int GetPackWidth() { - return $pack; - } - - public $override bool HasPayload() { - return $payload; - } - - public $override byte EncodedTrack - { - get{ return $track; } - set { throw new NotImplementedException(); } - } - -${ -from dotnetgenutil import * -if pack > 0: - out(" private $(PACK_TYPES[pack]) packing_flags = 0;\n"); - -fields = get_fields(type) -params = get_dotnetparameters(type, fields) -options = get_options(fields) - -for f in fields: - if not f.empty: - out(" private $(f.type) _$(f.name);\n") - -if segments: - out(" private Header _header;\n") - out(" private MemoryStream _body = new MemoryStream();\n") -} - -${ -if fields: - out(" public $name() {}\n") -} - - public $name($(", ".join(params))) { -${ -for f in fields: - if f.option: continue - out(" $(f.set)($(f.name));\n") - -if segments: - out(" Header = header;\n") - out(" Body = body;\n") - -if options or base == "Method": - out(""" - for (int i=0; i < options.Length; i++) { - switch (options[i]) { -""") - - for f in options: - out(" case Option.$(f.option): packing_flags |= $(f.flag_mask(pack)); break;\n") - - if base == "Method": - out(""" case Option.SYNC: Sync = true; break; - case Option.BATCH: Batch = true; break; -""") - out(""" case Option.NONE: break; - default: throw new Exception("invalid option: " + options[i]); - } - } -""") -} - } - - public $override void Dispatch<C>(C context, MethodDelegate<C> mdelegate) { - mdelegate.$(name)(context, this); - } - -${ -for f in fields: - if pack > 0: - out(""" - public bool $(f.has)() { - return (packing_flags & $(f.flag_mask(pack))) != 0; - } - - public $name $(f.clear)() { - packing_flags = (byte) (packing_flags & ~$(f.flag_mask(pack))); -${ -if (not f.empty and not (f.default == "null")): - out(" _$(f.name) = $(f.default);") -} - Dirty = true; - return this; - } -""") - - out(""" - public $(f.type) $(f.get)() { -${ -if f.empty: - out(" return $(f.has)();") -else: - out(" return _$(f.name);") -} - } - - public $name $(f.set)($(f.type) value) { -${ -if not f.empty: - out(" _$(f.name) = value;") -} -${ -if pack > 0: - out(" packing_flags |= $(f.flag_mask(pack));") -} - Dirty = true; - return this; - } - -""") -} - -${ -if segments: - out(""" public override Header Header { - get { return _header;} - set { _header = value;} - } - - public $name SetHeader(Header header) { - Header = header; - return this; - } - - public override MemoryStream Body - { - get{ return _body;} - set{ _body = value;} - } - - public $name SetBody(MemoryStream body) - { - Body = body; - return this; - } -""") -} - - public override void Write(IEncoder enc) - { -${ -if pack > 0: - out(" enc.WriteUint%s(packing_flags);\n" % (pack*8)); - -for f in fields: - if f.empty: - continue - if pack > 0: - out(" if ((packing_flags & $(f.flag_mask(pack))) != 0)\n ") - pre = "" - post = "" - if f.type_node.name == "struct": - pre = "%s.TYPE, " % cname(f.type_node) - elif f.type_node.name == "domain": - post = "" - pre = "(short)" - out(" enc.Write$(f.coder)($(pre)_$(f.name)$(post));\n") -} - } - - public override void Read(IDecoder dec) - { -${ -if pack > 0: - out(" packing_flags = ($(PACK_TYPES[pack])) dec.ReadUint%s();\n" % (pack*8)); - -for f in fields: - if f.empty: - continue - if pack > 0: - out(" if ((packing_flags & $(f.flag_mask(pack))) != 0)\n ") - pre = "" - post = "" - arg = "" - if f.type_node.name == "struct": - pre = "(%s)" % cname(f.type_node) - arg = "%s.TYPE" % cname(f.type_node) - elif f.type_node.name == "domain": - pre = "%sGetter.Get(" % cname(f.type_node) - post = ")" - out(" _$(f.name) = $(pre)dec.Read$(f.coder)($(arg))$(post);\n") -} - } - - public override Dictionary<String,Object> Fields - { - get - { - Dictionary<String,Object> result = new Dictionary<String,Object>(); - -${ -for f in fields: - if pack > 0: - out(" if ((packing_flags & $(f.flag_mask(pack))) != 0)\n ") - out(' result.Add("_$(f.name)", $(f.get)());\n') -} - return result; - } - } - -} -} diff --git a/dotnet/client-010/gentool/Constant.tpl b/dotnet/client-010/gentool/Constant.tpl deleted file mode 100644 index 191a1dbd6e..0000000000 --- a/dotnet/client-010/gentool/Constant.tpl +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -namespace org.apache.qpid.transport -{ - -${from genutil import *} - -public class Constant -{ -${ -constants = spec.query["amqp/constant"] - -for c in constants: - name = scream(c["@name"]) - value = c["@value"] - out(" public const int $name = $value;\n") -}} -} diff --git a/dotnet/client-010/gentool/Enum.tpl b/dotnet/client-010/gentool/Enum.tpl deleted file mode 100644 index 5d958c7bf6..0000000000 --- a/dotnet/client-010/gentool/Enum.tpl +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; -namespace org.apache.qpid.transport -{ -${ -from genutil import * - -vtype = jtype(resolve_type(type)) - -out(" public enum $name : $vtype") - -choices = [(scream(ch["@name"]), "= %s" % (ch["@value"])) - for ch in type.query["enum/choice"]] -} - { - $(",\n ".join(["%s%s" % ch for ch in choices])) - } - -${ - -out(" public struct $name") -out("Getter") -} - { - public static $name Get($vtype value) - { - switch (value) - { -${ -choices = [(scream(ch["@name"]), "%s" % (ch["@value"])) - for ch in type.query["enum/choice"]] - -for ch, value in choices: - out(' case $value: return $name.$ch;\n') -} default: throw new Exception("no such value: " + value); - } - } - } -} diff --git a/dotnet/client-010/gentool/IInvoker.tpl b/dotnet/client-010/gentool/IInvoker.tpl deleted file mode 100644 index 713d10c610..0000000000 --- a/dotnet/client-010/gentool/IInvoker.tpl +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; -using System.Collections.Generic; -using System.IO; - -namespace org.apache.qpid.transport -{ - -public interface IInvoker { - - IFuture Invoke(Method method, IFuture resultClass); - -${ -from dotnetgenutil import * - -for c in composites: - name = cname(c) - fields = get_fields(c) - params = get_dotnetparameters(c, fields) - args = get_arguments(c, fields) - result = c["result"] - if result: - if not result["@type"]: - rname = cname(result["struct"]) - else: - rname = cname(result, "@type") - jresult = "IFuture" - else: - jresult = "void" - - out(""" - $jresult $(name)($(", ".join(params))); -""") -} - -} -} diff --git a/dotnet/client-010/gentool/Invoker.tpl b/dotnet/client-010/gentool/Invoker.tpl deleted file mode 100644 index 2f69aee66d..0000000000 --- a/dotnet/client-010/gentool/Invoker.tpl +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; -using System.Collections.Generic; -using System.IO; -using common.org.apache.qpid.transport.util; - -namespace org.apache.qpid.transport -{ - -public abstract class Invoker : IInvoker { - - protected abstract void Invoke(Method method); - public abstract IFuture Invoke(Method method, IFuture resultClass); - -${ -from dotnetgenutil import * - -for c in composites: - name = cname(c) - fields = get_fields(c) - params = get_dotnetparameters(c, fields) - args = get_arguments(c, fields) - result = c["result"] - if result: - if not result["@type"]: - rname = cname(result["struct"]) - else: - rname = cname(result, "@type") - jresult = "IFuture" - jreturn = "return " - jclass = ", new ResultFuture()" - jinvoke = "Invoke" - else: - jinvoke = "Invoke" - jresult = "void" - jreturn = "" - jclass = "" - - out(""" - public $jresult $(name)($(", ".join(params))) { - $(jreturn)$jinvoke(new $name($(", ".join(args)))$jclass); - } -""") -} - -} -} diff --git a/dotnet/client-010/gentool/MethodDelegate.tpl b/dotnet/client-010/gentool/MethodDelegate.tpl deleted file mode 100644 index 788d2e29e6..0000000000 --- a/dotnet/client-010/gentool/MethodDelegate.tpl +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -namespace org.apache.qpid.transport -{ - -public abstract class MethodDelegate<C> { - -${ -from genutil import * - -for c in composites: - name = cname(c) - out(" public virtual void $(name)(C context, $name mystruct) {}\n") -} -} -} diff --git a/dotnet/client-010/gentool/Option.tpl b/dotnet/client-010/gentool/Option.tpl deleted file mode 100644 index d6e1a44870..0000000000 --- a/dotnet/client-010/gentool/Option.tpl +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -namespace org.apache.qpid.transport -{ -public enum Option { - -${ -from genutil import * - -options = {} - -for c in composites: - for f in c.query["field"]: - t = resolve_type(f) - if t["@name"] == "bit": - option = scream(f["@name"]) - if not options.has_key(option): - options[option] = None - out(" $option,\n")} - BATCH, - NONE -} -} diff --git a/dotnet/client-010/gentool/StructFactory.tpl b/dotnet/client-010/gentool/StructFactory.tpl deleted file mode 100644 index 2a11e2530c..0000000000 --- a/dotnet/client-010/gentool/StructFactory.tpl +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; - -namespace org.apache.qpid.transport -{ - -class StructFactory { - - public static Struct create(int type) - { - switch (type) - { -${ -from genutil import * - -fragment = """ case $name.TYPE: - return new $name(); -""" - -for c in composites: - name = cname(c) - if c.name == "struct": - out(fragment) -} default: - throw new Exception("type: " + type); - } - } - - public static Struct createInstruction(int type) - { - switch (type) - { -${ -for c in composites: - name = cname(c) - if c.name in ("command", "control"): - out(fragment) -} default: - throw new Exception("type: " + type); - } - } - -} -} diff --git a/dotnet/client-010/gentool/Type.tpl b/dotnet/client-010/gentool/Type.tpl deleted file mode 100644 index c8ec7ac153..0000000000 --- a/dotnet/client-010/gentool/Type.tpl +++ /dev/null @@ -1,103 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -using System; - -namespace org.apache.qpid.transport -{ - -${from genutil import *} - -public struct QpidType -{ - public Code code; - public int width; - public bool isfixed; - - public Code Code - { - get { return code; } - set { code = value; } - } - - public int Width - { - get { return width; } - set { width = value; } - } - - public bool Fixed - { - get { return isfixed; } - set { isfixed = value; } - } - - QpidType(Code code, int width, bool isfixed) - { - this.code = code; - this.width = width; - this.isfixed = isfixed; - } - - public static QpidType get(byte code) - { - switch (code) - { -${ -types = spec.query["amqp/type"] + spec.query["amqp/class/type"] -codes = {} -first = True -for t in types: - code = t["@code"] - fix_width = t["@fixed-width"] - var_width = t["@variable-width"] - - if code is None: - continue - - if fix_width is None: - width = var_width - fixed = "false" - else: - width = fix_width - fixed = "true" - - name = scream(t["@name"]) - codes[code] = name - - out(" case $code : return new QpidType(Code.$name, $width, $fixed);\n") -} - default: throw new Exception("unknown code: " + code); - } - } -} - -public enum Code : byte - { -${ -keys = list(codes.keys()) -keys.sort() - -for code in keys: - out(" $(codes[code]) = $code,\n") -} - } -} diff --git a/dotnet/client-010/gentool/build.xml b/dotnet/client-010/gentool/build.xml deleted file mode 100644 index 76ddb1571d..0000000000 --- a/dotnet/client-010/gentool/build.xml +++ /dev/null @@ -1,52 +0,0 @@ -<!-- - - - - Licensed to the Apache Software Foundation (ASF) under one - - or more contributor license agreements. See the NOTICE file - - distributed with this work for additional information - - regarding copyright ownership. The ASF licenses this file - - to you under the Apache License, Version 2.0 (the - - "License"); you may not use this file except in compliance - - with the License. You may obtain a copy of the License at - - - - http://www.apache.org/licenses/LICENSE-2.0 - - - - Unless required by applicable law or agreed to in writing, - - software distributed under the License is distributed on an - - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - - KIND, either express or implied. See the License for the - - specific language governing permissions and limitations - - under the License. - - - --> -<project name="GenTool" default="build"> - - <property name="generated.dir" location="../client/" /> - <property name="gentools.timestamp" location="${generated.dir}/gentools.timestamp" /> - <property name="jython.timestamp" location="${generated.dir}/jython.timestamp" /> - <property name="java.basedir" location="../../../java/common" /> - <property name="mllib.dir" location="../../../python" /> - <property name="xml.spec.dir" location="../../../specs" /> - - - <target name="check_jython_deps"> - <uptodate property="jython.notRequired" targetfile="${jython.timestamp}"> - <srcfiles dir="${xml.spec.dir}" includes="amqp.0-10-qpid-errata.xml" /> - </uptodate> - </target> - - <target name="build" depends="check_jython_deps" unless="jython.notRequired"> - <java classname="org.python.util.jython" fork="true" failonerror="true"> - <arg value="-Dpython.cachedir.skip=true"/> - <arg value="-Dpython.path=${java.basedir}/../lib/jython-lib.jar/Lib${path.separator}${mllib.dir}${path.separator}${java.basedir}${path.separator}${basedir}"/> - <arg value="${basedir}/codegen"/> - <arg value="${generated.dir}"/> - <arg value="${xml.spec.dir}/amqp.0-10-qpid-errata.xml"/> - <arg value="${basedir}"/> - <classpath> - <pathelement location="../../../java/lib/jython-2.5.0.jar"/> - </classpath> - </java> - <touch file="${jython.timestamp}" /> - </target> - -</project> diff --git a/dotnet/client-010/gentool/codegen b/dotnet/client-010/gentool/codegen deleted file mode 100644 index baebf378fd..0000000000 --- a/dotnet/client-010/gentool/codegen +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python -# -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -# - - -import os, sys, mllib -from templating import Parser -from dotnetgenutil import * - -out_dir = sys.argv[1] -spec_file = sys.argv[2] -tpl_dir = sys.argv[3] -pkg_dir = os.path.join(out_dir, "generated") - -if not os.path.exists(pkg_dir): - os.makedirs(pkg_dir) - -spec = mllib.xml_parse(spec_file) - -def excludes(nd): - if (nd.parent is not None and - nd.parent.name == "class" and - nd.parent["@name"] in ("file", "stream")): - return False - else: - return True - -def execute(output, template, **kwargs): - f = open(os.path.join(tpl_dir, template)) - input = f.read() - f.close() - p = Parser(**kwargs) - p.parse(input) - fname = os.path.join(pkg_dir, output) - f = open(fname, "w") - f.write(p.output) - f.close() - -execute("Type.cs", "Type.tpl", spec = spec) -execute("Constant.cs", "Constant.tpl", spec = spec) - -structs = spec.query["amqp/struct"] + \ - spec.query["amqp/class/struct", excludes] + \ - spec.query["amqp/class/command/result/struct", excludes] -controls = spec.query["amqp/class/control", excludes] -commands = spec.query["amqp/class/command", excludes] - -composites = structs + controls + commands - -for c in composites: - name = cname(c) - execute("%s.cs" % name, "Composite.tpl", type = c, name = name) - -execute("MethodDelegate.cs", "MethodDelegate.tpl", composites = composites) -execute("Option.cs", "Option.tpl", composites = composites) -execute("Invoker.cs", "Invoker.tpl", composites = controls + commands) -execute("IInvoker.cs", "IInvoker.tpl", composites = controls + commands) -execute("StructFactory.cs", "StructFactory.tpl", composites = composites) - -def is_enum(nd): - return nd["enum"] is not None - -enums = spec.query["amqp/domain", is_enum] + \ - spec.query["amqp/class/domain", is_enum] - -for e in enums: - name = cname(e) - execute("%s.cs" % name, "Enum.tpl", name = name, type = e) diff --git a/dotnet/client-010/gentool/dotnetgenutil.py b/dotnet/client-010/gentool/dotnetgenutil.py deleted file mode 100644 index 4d9c8a69d7..0000000000 --- a/dotnet/client-010/gentool/dotnetgenutil.py +++ /dev/null @@ -1,271 +0,0 @@ -# -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -# - - -def pascal(offset, *args): - parts = [] - for a in args: - parts.extend(a.split("-")) - return "".join([p[0].upper() + p[1:] for p in parts[:offset]] + [p[0].upper() + p[1:] for p in parts[offset:]]) - - -def scream(*args): - return "_".join([a.replace("-", "_").upper() for a in args]) - -def num(x, default=None): - if x is not None and x != "": - return int(x, 0) - else: - return default - -def klass(nd): - parent = nd.parent - while parent is not None: - if hasattr(parent, "name") and parent.name == "class": - return parent - parent = parent.parent - -untyped = -1 - -def code(nd): - global untyped - cd = num(nd["@code"]) - if cd is None: - cd = untyped - untyped -= 1 - return cd - - cls = klass(nd) - if cls: - cd |= (num(cls["@code"]) << 8) - return cd - -def root(nd): - if nd.parent is None: - return nd - else: - return root(nd.parent) - -def qname(nd): - name = nd["@name"] - cls = klass(nd) - if cls != None: - return "%s.%s" % (cls["@name"], name) - else: - return name - -RESOLVED = {} - -def resolve(node, name): - key = (node, name) - if RESOLVED.has_key(key): - return RESOLVED[key] - else: - spec = root(node) - cls = klass(node) - if cls: - for nd in cls.query["#tag"]: - if nd["@name"] == name: - RESOLVED[key] = nd - return nd - for nd in spec.query["amqp/#tag"] + spec.query["amqp/class/#tag"]: - if name == qname(nd): - RESOLVED[key] = nd - return nd - raise Exception("unresolved name: %s" % name) - -def resolve_type(nd): - if hasattr(nd, "_resolved_type"): - return nd._resolved_type - else: - name = nd["@type"] - type = resolve(nd, name) - if type.name == "domain" and not type["enum"]: - type = resolve_type(type) - nd._resolved_type = type - return type - -TYPES = { - "bit": "bool", - "uint8": "short", - "uint16": "int", - "uint32": "long", - "uint64": "long", - "datetime": "long", - "uuid": "UUID", - "sequence-no": "int", - "sequence-set": "RangeSet", # XXX - "byte-ranges": "RangeSet", # XXX - "str8": "String", - "str16": "String", - "vbin8": "byte[]", - "vbin16": "byte[]", - "vbin32": "byte[]", - "struct32": "Struct", - "map": "Dictionary<String,Object>", - "array": "List<Object>" - } - -def cname(nd, field="@name"): - cls = klass(nd) - if cls: - if (nd.name in ("struct", "result") and - cls["@name"] != "session" and - nd[field] != "header"): - return pascal(0, nd[field]) - else: - return pascal(0, cls["@name"], nd[field]) - else: - return pascal(0, nd[field]) - -def jtype(nd): - if nd.name == "struct" or nd["enum"]: - return cname(nd) - else: - return TYPES[nd["@name"]] - -REFS = { - "bool": "Boolean", - "byte": "Byte", - "short": "Short", - "int": "Integer", - "long": "Long", - "float": "Float", - "double": "Double", - "char": "Character" -} - -def jref(jt): - return REFS.get(jt, jt) - -def jclass(jt): - idx = jt.find('<') - if idx > 0: - return jt[:idx] - else: - return jt - -DEFAULTS = { - "long": 0, - "int": 0, - "short": 0, - "byte": 0, - "char": 0, - "bool": "false" - } - -class Field: - - def __init__(self, index, nd): - self.index = index - self.name = pascal(1, nd["@name"]) - self.type_node = resolve_type(nd) - if self.type_node.name == "domain": - self.prim_type = resolve_type(self.type_node) - else: - self.prim_type = self.type_node - self.variable_width = num(self.prim_type["@variable-width"], 0) - self.fixed_width = num(self.prim_type["@fixed-width"], 0) - self.empty = self.variable_width == 0 and self.fixed_width == 0 and self.prim_type.name != "struct" - tname = cname(self.type_node) - if self.type_node.name == "struct": - self.read = "(%s) dec.ReadStruct(%s.TYPE)" % (tname, tname) - self.write = "enc.WriteStruct(%s.TYPE, check(struct).%s)" % (tname, self.name) - self.coder = "Struct" - elif self.type_node.name == "domain": - self.coder = pascal(0, self.prim_type["@name"]) - self.read = "%s.Get(dec.Read%s())" % (tname, self.coder) - self.write = "enc.Write%s(check(struct).%s.GetValue())" % (self.coder, self.name) - else: - self.coder = pascal(0, self.type_node["@name"]) - self.read = "dec.Read%s()" % self.coder - self.write = "enc.Write%s(check(struct).%s)" % (self.coder, self.name) - self.type = jtype(self.type_node) - self.default = DEFAULTS.get(self.type, "null") - self.has = pascal(1, "Has", self.name) - self.get = pascal(1, "Get", self.name) - self.set = pascal(1, "Set", self.name) - self.clear = pascal(1, "clear", self.name) - if self.type == "bool": - self.option = scream(nd["@name"]) - else: - self.option = None - - def flag_mask(self, pack): - flag = pack * 8 - 8 - (self.index/8)*8 + (self.index % 8) - return 1 << flag - - -def get_fields(nd): - fields = [] - index = 0 - for f in nd.query["field"]: - fields.append(Field(index, f)) - index += 1 - return fields - -def get_parameters(type, fields): - params = [] - options = False - for f in fields: - if f.option: - options = True - else: - params.append("%s %s" % (f.type, f.name)) - if type["segments"]: - params.append("Header header") - params.append("MemoryStream body") - if options or type.name in ("control", "command"): - params.append("Option ... options") - return params - -def get_arguments(type, fields): - args = [] - options = False - for f in fields: - if f.option: - options = True - else: - args.append(f.name) - if type["segments"]: - args.append("header") - args.append("body") - if options or type.name in ("control", "command"): - args.append("options") - return args - -def get_options(fields): - return [f for f in fields if f.option] - -def get_dotnetparameters(type, fields): - params = [] - options = False - for f in fields: - if f.option: - options = True - else: - params.append("%s %s" % (f.type, f.name)) - if type["segments"]: - params.append("Header header") - params.append("MemoryStream body") - if options or type.name in ("control", "command"): - params.append("params Option[] options") - return params |
