game_machine 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +72 -0
- data/Rakefile +38 -0
- data/bin/game_machine +79 -0
- data/config/cluster.conf +65 -0
- data/config/config.example.yml +93 -0
- data/config/game_messages.proto +45 -0
- data/config/messages.proto +339 -0
- data/config/regions.example.yml +9 -0
- data/config/standalone.conf +36 -0
- data/db/do_not_delete +0 -0
- data/game_machine.gemspec +38 -0
- data/games/example/boot.rb +6 -0
- data/games/example/data/game_data.yml +13 -0
- data/games/example/lib/aggressive_npc.rb +176 -0
- data/games/example/lib/authentication_handler.rb +69 -0
- data/games/example/lib/chatbot.rb +61 -0
- data/games/example/lib/combat_controller.rb +145 -0
- data/games/example/lib/example_controller.rb +21 -0
- data/games/example/lib/game.rb +85 -0
- data/games/example/lib/models/attack.rb +9 -0
- data/games/example/lib/models/combat_update.rb +11 -0
- data/games/example/lib/models/player_command.rb +7 -0
- data/games/example/lib/models/user.rb +11 -0
- data/games/example/lib/models/vitals.rb +17 -0
- data/games/example/lib/npc.rb +111 -0
- data/games/example/lib/npc_group.rb +42 -0
- data/games/example/lib/npc_movement.rb +116 -0
- data/games/example/lib/player_manager.rb +58 -0
- data/games/example/lib/player_register.rb +80 -0
- data/games/example/lib/tracking_handler.rb +17 -0
- data/games/example/lib/zone_manager.rb +57 -0
- data/games/preload.rb +8 -0
- data/integration_tests/basic_spec.rb +68 -0
- data/integration_tests/bot_spec.rb +18 -0
- data/integration_tests/chat_spec.rb +45 -0
- data/integration_tests/distributed_spec.rb +34 -0
- data/integration_tests/entity_tracking_spec.rb +48 -0
- data/integration_tests/mono_spec.rb +16 -0
- data/integration_tests/objectdb_spec.rb +55 -0
- data/integration_tests/tcp_client_spec.rb +71 -0
- data/integration_tests/udp_client_spec.rb +61 -0
- data/integration_tests/udp_spec.rb +20 -0
- data/integration_tests/udt_client_spec.rb +23 -0
- data/integration_tests/udt_spec.rb +31 -0
- data/java/.gitignore +1 -0
- data/java/build.gradle +93 -0
- data/java/component.erb +396 -0
- data/java/gradle.properties +6 -0
- data/java/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/java/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/java/gradlew +164 -0
- data/java/gradlew.bat +90 -0
- data/java/local_lib/protostuff-compiler-1.0.7-jarjar.jar +0 -0
- data/java/settings.gradle +2 -0
- data/java/src/main/java/com/game_machine/core/ActorFactory.java +25 -0
- data/java/src/main/java/com/game_machine/core/ActorUtil.java +39 -0
- data/java/src/main/java/com/game_machine/core/CommandProxy.java +9 -0
- data/java/src/main/java/com/game_machine/core/EntitySerializer.java +66 -0
- data/java/src/main/java/com/game_machine/core/EventStreamHandler.java +43 -0
- data/java/src/main/java/com/game_machine/core/GameMachineLoader.java +25 -0
- data/java/src/main/java/com/game_machine/core/Grid.java +195 -0
- data/java/src/main/java/com/game_machine/core/GridValue.java +30 -0
- data/java/src/main/java/com/game_machine/core/IActorFactory.java +7 -0
- data/java/src/main/java/com/game_machine/core/NetMessage.java +28 -0
- data/java/src/main/java/com/game_machine/core/UdpServer.java +97 -0
- data/java/src/main/java/com/game_machine/core/UdpServerHandler.java +90 -0
- data/java/src/main/resources/game_machine.java.stg +738 -0
- data/java/src/main/resources/logback.xml +14 -0
- data/java/src/main/resources/logging.properties +3 -0
- data/java/src/main/resources/protostuff.properties +7 -0
- data/lib/game_machine.rb +85 -0
- data/lib/game_machine/actor.rb +7 -0
- data/lib/game_machine/actor/base.rb +184 -0
- data/lib/game_machine/actor/builder.rb +108 -0
- data/lib/game_machine/actor/development.rb +31 -0
- data/lib/game_machine/actor/factory.rb +35 -0
- data/lib/game_machine/actor/mono_actor.rb +89 -0
- data/lib/game_machine/actor/ref.rb +81 -0
- data/lib/game_machine/actor/reloadable.rb +98 -0
- data/lib/game_machine/actor/system.rb +32 -0
- data/lib/game_machine/akka.rb +98 -0
- data/lib/game_machine/app_config.rb +49 -0
- data/lib/game_machine/application.rb +181 -0
- data/lib/game_machine/auth_handlers/base.rb +21 -0
- data/lib/game_machine/auth_handlers/public.rb +34 -0
- data/lib/game_machine/bot/chat.rb +66 -0
- data/lib/game_machine/bot/client.rb +54 -0
- data/lib/game_machine/client_manager.rb +204 -0
- data/lib/game_machine/clients.rb +4 -0
- data/lib/game_machine/clients/client.rb +45 -0
- data/lib/game_machine/clients/tcp_client.rb +25 -0
- data/lib/game_machine/clients/test_client.rb +151 -0
- data/lib/game_machine/clients/udp_client.rb +25 -0
- data/lib/game_machine/clients/udt_client.rb +34 -0
- data/lib/game_machine/cluster_monitor.rb +115 -0
- data/lib/game_machine/commands.rb +23 -0
- data/lib/game_machine/commands/base.rb +21 -0
- data/lib/game_machine/commands/chat_commands.rb +88 -0
- data/lib/game_machine/commands/datastore_commands.rb +60 -0
- data/lib/game_machine/commands/grid_commands.rb +35 -0
- data/lib/game_machine/commands/message_helper.rb +25 -0
- data/lib/game_machine/commands/misc_commands.rb +29 -0
- data/lib/game_machine/commands/navigation_commands.rb +24 -0
- data/lib/game_machine/commands/player_commands.rb +28 -0
- data/lib/game_machine/commands/proxy.rb +16 -0
- data/lib/game_machine/console.rb +3 -0
- data/lib/game_machine/console/build.rb +74 -0
- data/lib/game_machine/console/install.rb +92 -0
- data/lib/game_machine/console/server.rb +120 -0
- data/lib/game_machine/data_store.rb +52 -0
- data/lib/game_machine/data_stores/couchbase.rb +18 -0
- data/lib/game_machine/data_stores/mapdb.rb +49 -0
- data/lib/game_machine/data_stores/memory.rb +35 -0
- data/lib/game_machine/data_stores/redis.rb +46 -0
- data/lib/game_machine/endpoints.rb +6 -0
- data/lib/game_machine/endpoints/mono_gateway.rb +87 -0
- data/lib/game_machine/endpoints/tcp.rb +51 -0
- data/lib/game_machine/endpoints/tcp_handler.rb +75 -0
- data/lib/game_machine/endpoints/udp.rb +88 -0
- data/lib/game_machine/endpoints/udp_incoming.rb +113 -0
- data/lib/game_machine/endpoints/udp_outgoing.rb +46 -0
- data/lib/game_machine/game_loader.rb +46 -0
- data/lib/game_machine/game_systems.rb +14 -0
- data/lib/game_machine/game_systems/agents/controller.rb +118 -0
- data/lib/game_machine/game_systems/chat.rb +256 -0
- data/lib/game_machine/game_systems/chat_manager.rb +108 -0
- data/lib/game_machine/game_systems/chat_topic.rb +36 -0
- data/lib/game_machine/game_systems/devnull.rb +13 -0
- data/lib/game_machine/game_systems/entity_loader.rb +12 -0
- data/lib/game_machine/game_systems/entity_tracking.rb +133 -0
- data/lib/game_machine/game_systems/local_echo.rb +16 -0
- data/lib/game_machine/game_systems/objectdb_proxy.rb +61 -0
- data/lib/game_machine/game_systems/private_chat.rb +20 -0
- data/lib/game_machine/game_systems/region_manager.rb +91 -0
- data/lib/game_machine/game_systems/region_service.rb +94 -0
- data/lib/game_machine/game_systems/region_settings.rb +13 -0
- data/lib/game_machine/game_systems/remote_echo.rb +14 -0
- data/lib/game_machine/game_systems/stress_test.rb +21 -0
- data/lib/game_machine/grid.rb +60 -0
- data/lib/game_machine/grid_replicator.rb +31 -0
- data/lib/game_machine/handlers/authentication.rb +55 -0
- data/lib/game_machine/handlers/game.rb +63 -0
- data/lib/game_machine/handlers/request.rb +80 -0
- data/lib/game_machine/hashring.rb +48 -0
- data/lib/game_machine/helpers/game_message.rb +159 -0
- data/lib/game_machine/helpers/state_machine.rb +29 -0
- data/lib/game_machine/java_lib.rb +51 -0
- data/lib/game_machine/logger.rb +39 -0
- data/lib/game_machine/message_buffer.rb +58 -0
- data/lib/game_machine/message_queue.rb +63 -0
- data/lib/game_machine/model.rb +125 -0
- data/lib/game_machine/models.rb +3 -0
- data/lib/game_machine/models/player_status_update.rb +8 -0
- data/lib/game_machine/models/region.rb +9 -0
- data/lib/game_machine/mono_server.rb +20 -0
- data/lib/game_machine/navigation.rb +4 -0
- data/lib/game_machine/navigation/detour.rb +20 -0
- data/lib/game_machine/navigation/detour_navmesh.rb +53 -0
- data/lib/game_machine/navigation/detour_path.rb +53 -0
- data/lib/game_machine/navigation/path.rb +31 -0
- data/lib/game_machine/object_db.rb +67 -0
- data/lib/game_machine/protobuf.rb +6 -0
- data/lib/game_machine/protobuf/game_messages.rb +24 -0
- data/lib/game_machine/protobuf/generate.rb +113 -0
- data/lib/game_machine/protobuf_extensions/entity_helper.rb +11 -0
- data/lib/game_machine/reloadable_monitor.rb +26 -0
- data/lib/game_machine/restart_watcher.rb +17 -0
- data/lib/game_machine/ruby_extensions/nilclass.rb +10 -0
- data/lib/game_machine/ruby_extensions/string.rb +17 -0
- data/lib/game_machine/scheduler.rb +23 -0
- data/lib/game_machine/securerandom.rb +6 -0
- data/lib/game_machine/settings.rb +11 -0
- data/lib/game_machine/system_monitor.rb +19 -0
- data/lib/game_machine/system_stats.rb +24 -0
- data/lib/game_machine/uniqueid.rb +23 -0
- data/lib/game_machine/vector.rb +95 -0
- data/lib/game_machine/version.rb +3 -0
- data/lib/game_machine/write_behind_cache.rb +164 -0
- data/mono/bin/csharp/common.xslt +109 -0
- data/mono/bin/csharp/csharp.xslt +628 -0
- data/mono/bin/csharp/descriptor.proto +533 -0
- data/mono/bin/csharp/protobuf-net.dll +0 -0
- data/mono/bin/csharp/protobuf-net.pdb +0 -0
- data/mono/bin/csharp/protobuf-net.xml +2879 -0
- data/mono/bin/csharp/protogen.exe.config +3 -0
- data/mono/bin/csharp/protogen.pdb +0 -0
- data/mono/bin/csharp/protogen_csharp.exe +0 -0
- data/mono/bin/csharp/vb.xslt +745 -0
- data/mono/bin/csharp/xml.xslt +26 -0
- data/mono/server/Makefile +6 -0
- data/mono/server/NLog.config +12 -0
- data/mono/server/NLog.dll +0 -0
- data/mono/server/actor.cs +37 -0
- data/mono/server/build.bat +3 -0
- data/mono/server/cscompmgd.dll +0 -0
- data/mono/server/iactor.cs +11 -0
- data/mono/server/message_router.cs +67 -0
- data/mono/server/message_util.cs +29 -0
- data/mono/server/messages.cs +1888 -0
- data/mono/server/protobuf-net.dll +0 -0
- data/mono/server/proxy_client.cs +73 -0
- data/mono/server/proxy_server.cs +30 -0
- data/mono/server/test_actor.cs +33 -0
- data/pathfinding/bin/premake4 +0 -0
- data/pathfinding/include/mesh_loader.h +28 -0
- data/pathfinding/include/pathfind.h +167 -0
- data/pathfinding/main.cpp +39 -0
- data/pathfinding/mesh_loader.cpp +108 -0
- data/pathfinding/pathfind.cpp +174 -0
- data/pathfinding/pathfinder.cs +66 -0
- data/pathfinding/premake4.lua +109 -0
- data/script/server.sh +109 -0
- data/script/watch.sh +11 -0
- data/spec/actor/actor_spec.rb +73 -0
- data/spec/actor/builder_spec.rb +56 -0
- data/spec/actor/ref_spec.rb +83 -0
- data/spec/application_spec.rb +7 -0
- data/spec/client_manager_spec.rb +171 -0
- data/spec/commands/chat_commands_spec.rb +38 -0
- data/spec/commands/datastore_commands_spec.rb +91 -0
- data/spec/commands/grid_commands_spec.rb +37 -0
- data/spec/commands/navigation_commands_spec.rb +51 -0
- data/spec/commands/player_commands_spec.rb +48 -0
- data/spec/commands_spec.rb +38 -0
- data/spec/data_stores/mapdb_spec.rb +46 -0
- data/spec/data_stores/redis_spec.rb +44 -0
- data/spec/game_systems/agents/controller_spec.rb +84 -0
- data/spec/game_systems/agents/test_agent.rb +10 -0
- data/spec/game_systems/agents/test_agent_config.rb +29 -0
- data/spec/game_systems/chat_manager_spec.rb +66 -0
- data/spec/game_systems/chat_spec.rb +187 -0
- data/spec/game_systems/entity_tracking_spec.rb +64 -0
- data/spec/game_systems/region_manager_spec.rb +138 -0
- data/spec/grid_spec.rb +37 -0
- data/spec/handlers/authentication_spec.rb +36 -0
- data/spec/handlers/game_spec.rb +49 -0
- data/spec/handlers/request_spec.rb +65 -0
- data/spec/hashring_spec.rb +59 -0
- data/spec/integration_helper.rb +120 -0
- data/spec/java_grid_spec.rb +89 -0
- data/spec/message_buffer_spec.rb +67 -0
- data/spec/message_expectations.rb +47 -0
- data/spec/message_queue_spec.rb +23 -0
- data/spec/misc_spec.rb +71 -0
- data/spec/model_spec.rb +103 -0
- data/spec/mono_spec.rb +36 -0
- data/spec/mono_test.rb +18 -0
- data/spec/navigation/detour_navmesh_spec.rb +34 -0
- data/spec/navigation/detour_path_spec.rb +25 -0
- data/spec/spec_helper.rb +40 -0
- data/spec/udp_server_spec.rb +10 -0
- data/spec/write_behind_cache_spec.rb +109 -0
- data/web/app.rb +131 -0
- data/web/config/trinidad.yml +4 -0
- data/web/controllers/auth_controller.rb +19 -0
- data/web/controllers/base_controller.rb +16 -0
- data/web/controllers/index_controller.rb +7 -0
- data/web/controllers/log_controller.rb +47 -0
- data/web/controllers/messages_controller.rb +59 -0
- data/web/controllers/player_register_controller.rb +15 -0
- data/web/log/development.log +1339 -0
- data/web/tmp/restart.txt +0 -0
- data/web/views/game_messages.haml +45 -0
- data/web/views/index.haml +6 -0
- data/web/views/layout.haml +41 -0
- data/web/views/logs.haml +32 -0
- data/web/views/player_register.haml +22 -0
- data/web/views/player_registered.haml +2 -0
- data/web/views/register_layout.haml +22 -0
- data/web/views/restart.haml +35 -0
- metadata +576 -0
Binary file
|
Binary file
|
@@ -0,0 +1,745 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<xsl:stylesheet version="1.0"
|
3
|
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
4
|
+
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="xsl msxsl"
|
5
|
+
>
|
6
|
+
<xsl:import href="common.xslt"/>
|
7
|
+
<xsl:param name="help"/>
|
8
|
+
<xsl:param name="xml"/>
|
9
|
+
<xsl:param name="datacontract"/>
|
10
|
+
<xsl:param name="binary"/>
|
11
|
+
<xsl:param name="protoRpc"/>
|
12
|
+
<xsl:param name="observable"/>
|
13
|
+
<xsl:param name="preObservable"/>
|
14
|
+
<xsl:param name="partialMethods"/>
|
15
|
+
<xsl:param name="detectMissing"/>
|
16
|
+
<xsl:param name="lightFramework"/>
|
17
|
+
<xsl:param name="asynchronous"/>
|
18
|
+
<xsl:param name="clientProxy"/>
|
19
|
+
<xsl:param name="defaultNamespace"/>
|
20
|
+
|
21
|
+
|
22
|
+
<xsl:key name="fieldNames" match="//FieldDescriptorProto" use="name"/>
|
23
|
+
|
24
|
+
<xsl:output method="text" indent="no" omit-xml-declaration="yes"/>
|
25
|
+
<xsl:variable name="types" select="//EnumDescriptorProto | //DescriptorProto"/>
|
26
|
+
<xsl:variable name="optionXml" select="$xml='true'"/>
|
27
|
+
<xsl:variable name="optionDataContract" select="$datacontract='true'"/>
|
28
|
+
<xsl:variable name="optionBinary" select="$binary='true'"/>
|
29
|
+
<xsl:variable name="optionProtoRpc" select="$protoRpc='true'"/>
|
30
|
+
<xsl:variable name="optionObservable" select="$observable='true'"/>
|
31
|
+
<xsl:variable name="optionPreObservable" select="$preObservable='true'"/>
|
32
|
+
<xsl:variable name="optionPartialMethods" select="$partialMethods='true'"/>
|
33
|
+
<xsl:variable name="optionDetectMissing" select="$detectMissing='true'"/>
|
34
|
+
<xsl:variable name="optionFullFramework" select="not($lightFramework='true')"/>
|
35
|
+
<xsl:variable name="optionAsynchronous" select="$asynchronous='true'"/>
|
36
|
+
<xsl:variable name="optionClientProxy" select="$clientProxy='true'"/>
|
37
|
+
<xsl:variable name="optionFixCase" select="$fixCase='true'"/>
|
38
|
+
|
39
|
+
<xsl:template match="FileDescriptorSet">
|
40
|
+
<xsl:if test="$help='true'">
|
41
|
+
<xsl:message terminate="yes">
|
42
|
+
VisualBasic template for protobuf-net.
|
43
|
+
Options:
|
44
|
+
General:
|
45
|
+
"help" - this page
|
46
|
+
Additional serializer support:
|
47
|
+
"xml" - enable explicit xml support (XmlSerializer)
|
48
|
+
"datacontract" - enable data-contract support (DataContractSerializer; requires .NET 3.0)
|
49
|
+
"binary" - enable binary support (BinaryFormatter; not supported on Silverlight)
|
50
|
+
Other:
|
51
|
+
"protoRpc" - enable proto-rpc client
|
52
|
+
"observable" - change notification (observer pattern) support
|
53
|
+
"preObservable" - pre-change notification (observer pattern) support (requires .NET 3.5)
|
54
|
+
"partialMethods" - provide partial methods for changes (requires C# 3.0)
|
55
|
+
"detectMissing" - provide *Specified properties to indicate whether fields are present
|
56
|
+
"lightFramework" - omit additional attributes not included in CF/Silverlight
|
57
|
+
"asynchronous" - emit asynchronous methods for use with WCF
|
58
|
+
"clientProxy" - emit asynchronous client proxy class
|
59
|
+
</xsl:message>
|
60
|
+
</xsl:if>
|
61
|
+
|
62
|
+
<xsl:if test="$optionXml and $optionDataContract">
|
63
|
+
<xsl:message terminate="yes">
|
64
|
+
Invalid options: xml and data-contract serialization are mutually exclusive.
|
65
|
+
</xsl:message>
|
66
|
+
</xsl:if>
|
67
|
+
' Generated from <xsl:value-of select="name"/>
|
68
|
+
<xsl:if test="$optionXml">
|
69
|
+
' Option: xml serialization ([XmlType]/[XmlElement]) enabled
|
70
|
+
</xsl:if><xsl:if test="$optionDataContract">
|
71
|
+
' Option: data-contract serialization ([DataContract]/[DataMember]) enabled
|
72
|
+
</xsl:if><xsl:if test="$optionBinary">
|
73
|
+
' Option: binary serialization (ISerializable) enabled
|
74
|
+
</xsl:if><xsl:if test="$optionObservable">
|
75
|
+
' Option: observable (OnPropertyChanged) enabled
|
76
|
+
</xsl:if><xsl:if test="$optionPreObservable">
|
77
|
+
' Option: pre-observable (OnPropertyChanging) enabled
|
78
|
+
</xsl:if><xsl:if test="$partialMethods">
|
79
|
+
' Option: partial methods (On*Changing/On*Changed) enabled
|
80
|
+
</xsl:if><xsl:if test="$detectMissing">
|
81
|
+
' Option: missing-value detection (*Specified/ShouldSerialize*/Reset*) enabled
|
82
|
+
</xsl:if><xsl:if test="not($optionFullFramework)">
|
83
|
+
' Option: light framework (CF/Silverlight) enabled
|
84
|
+
</xsl:if><xsl:if test="$optionProtoRpc">
|
85
|
+
' Option: proto-rpc enabled
|
86
|
+
</xsl:if>
|
87
|
+
<xsl:apply-templates select="file/FileDescriptorProto"/>
|
88
|
+
</xsl:template>
|
89
|
+
|
90
|
+
<xsl:template match="FileDescriptorProto">
|
91
|
+
' Generated from: <xsl:value-of select="name"/>
|
92
|
+
<xsl:apply-templates select="dependency/string[.!='']"/>
|
93
|
+
<xsl:variable name="namespace"><xsl:call-template name="PickNamespace">
|
94
|
+
<xsl:with-param name="defaultNamespace" select="$defaultNamespace"/>
|
95
|
+
</xsl:call-template>
|
96
|
+
</xsl:variable>
|
97
|
+
<xsl:if test="string($namespace) != ''">
|
98
|
+
Namespace <xsl:value-of select="translate($namespace,':-/\','__..')"/>
|
99
|
+
</xsl:if>
|
100
|
+
<xsl:apply-templates select="message_type | enum_type | service"/>
|
101
|
+
<xsl:if test="string($namespace) != ''">
|
102
|
+
End Namespace</xsl:if></xsl:template>
|
103
|
+
|
104
|
+
<xsl:template match="FileDescriptorProto/dependency/string">
|
105
|
+
' Note: requires additional types generated from: <xsl:value-of select="."/></xsl:template>
|
106
|
+
|
107
|
+
<xsl:template match="DescriptorProto">
|
108
|
+
<xsl:choose>
|
109
|
+
<xsl:when test="$optionDataContract">
|
110
|
+
<Global.System.Serializable, Global.ProtoBuf.ProtoContract(Name:="<xsl:value-of select="name"/>")> _
|
111
|
+
<Global.System.Runtime.Serialization.DataContract(Name:="<xsl:value-of select="name"/>")> _
|
112
|
+
</xsl:when>
|
113
|
+
<xsl:when test="$optionXml">
|
114
|
+
<Global.System.Serializable, Global.ProtoBuf.ProtoContract(Name:="<xsl:value-of select="name"/>")> _
|
115
|
+
<Global.System.Xml.Serialization.XmlType(TypeName:="<xsl:value-of select="name"/>")> _
|
116
|
+
</xsl:when>
|
117
|
+
<xsl:otherwise>
|
118
|
+
<Global.System.Serializable, Global.ProtoBuf.ProtoContract(Name:="<xsl:value-of select="name"/>")> _
|
119
|
+
</xsl:otherwise>
|
120
|
+
</xsl:choose><!--
|
121
|
+
-->Public Partial Class <xsl:call-template name="pascal"/>
|
122
|
+
implements Global.ProtoBuf.IExtensible<!--
|
123
|
+
--><xsl:if test="$optionBinary">, Global.System.Runtime.Serialization.ISerializable</xsl:if><!--
|
124
|
+
--><xsl:if test="$optionObservable">, Global.System.ComponentModel.INotifyPropertyChanged</xsl:if><!--
|
125
|
+
--><xsl:if test="$optionPreObservable">, Global.System.ComponentModel.INotifyPropertyChanging</xsl:if>
|
126
|
+
|
127
|
+
Public Sub New
|
128
|
+
End Sub
|
129
|
+
<xsl:apply-templates select="*"/><xsl:if test="$optionBinary">
|
130
|
+
Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext)
|
131
|
+
MyBase.New()
|
132
|
+
Global.ProtoBuf.Serializer.Merge(info, Me)
|
133
|
+
End Sub
|
134
|
+
|
135
|
+
Sub GetObjectData(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) implements Global.System.Runtime.Serialization.ISerializable.GetObjectData
|
136
|
+
Global.ProtoBuf.Serializer.Serialize(info, Me)
|
137
|
+
End Sub
|
138
|
+
|
139
|
+
</xsl:if><xsl:if test="$optionObservable">
|
140
|
+
Public Event PropertyChanged As Global.System.ComponentModel.PropertyChangedEventHandler Implements Global.System.ComponentModel.INotifyPropertyChanged.PropertyChanged
|
141
|
+
Protected Overridable Sub OnPropertyChanged(ByVal propertyName As String)
|
142
|
+
RaiseEvent PropertyChanged(Me, New Global.System.ComponentModel.PropertyChangedEventArgs(propertyName))
|
143
|
+
End Sub
|
144
|
+
</xsl:if><xsl:if test="$optionPreObservable">
|
145
|
+
Public Event PropertyChanging As Global.System.ComponentModel.PropertyChangingEventHandler Implements Global.System.ComponentModel.INotifyPropertyChanging.PropertyChanging
|
146
|
+
Protected Overridable Sub OnPropertyChanging(ByVal propertyName As String)
|
147
|
+
RaiseEvent PropertyChanging(Me, New Global.System.ComponentModel.PropertyChangingEventArgs(propertyName))
|
148
|
+
End Sub
|
149
|
+
</xsl:if>
|
150
|
+
Private extensionObject As Global.ProtoBuf.IExtension
|
151
|
+
Function GetExtensionObject(createIfMissing As Boolean) As Global.ProtoBuf.IExtension Implements Global.ProtoBuf.IExtensible.GetExtensionObject
|
152
|
+
Return Global.ProtoBuf.Extensible.GetExtensionObject(extensionObject, createIfMissing)
|
153
|
+
End Function
|
154
|
+
End Class
|
155
|
+
</xsl:template>
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
<xsl:template match="DescriptorProto/name | DescriptorProto/extension_range | DescriptorProto/extension"/>
|
160
|
+
|
161
|
+
<xsl:template match="
|
162
|
+
FileDescriptorProto/message_type | FileDescriptorProto/enum_type | FileDescriptorProto/service
|
163
|
+
| DescriptorProto/field | DescriptorProto/enum_type | DescriptorProto/message_type
|
164
|
+
| DescriptorProto/nested_type | EnumDescriptorProto/value | ServiceDescriptorProto/method">
|
165
|
+
<xsl:apply-templates select="*"/>
|
166
|
+
</xsl:template>
|
167
|
+
|
168
|
+
<xsl:template match="EnumDescriptorProto">
|
169
|
+
Public Enum <xsl:call-template name="pascal"/>
|
170
|
+
<xsl:apply-templates select="value"/>
|
171
|
+
End Enum
|
172
|
+
</xsl:template>
|
173
|
+
|
174
|
+
<xsl:template match="EnumValueDescriptorProto">
|
175
|
+
<xsl:text>
|
176
|
+
</xsl:text>
|
177
|
+
<xsl:value-of select="name"/>
|
178
|
+
<xsl:text xml:space="preserve"> = </xsl:text><xsl:choose>
|
179
|
+
<xsl:when test="number"><xsl:value-of select="number"/></xsl:when>
|
180
|
+
<xsl:otherwise>0</xsl:otherwise>
|
181
|
+
</xsl:choose><xsl:if test="position()!=last()">
|
182
|
+
</xsl:if>
|
183
|
+
</xsl:template>
|
184
|
+
|
185
|
+
<xsl:template match="FieldDescriptorProto" mode="field">
|
186
|
+
<xsl:choose>
|
187
|
+
<xsl:when test="not(key('fieldNames',concat('_',name)))"><xsl:value-of select="concat('_',name)"/></xsl:when>
|
188
|
+
<xsl:when test="not(key('fieldNames',concat(name,'Field')))"><xsl:value-of select="concat(name,'Field')"/></xsl:when>
|
189
|
+
<xsl:otherwise><xsl:value-of select="concat('_',generate-id())"/></xsl:otherwise>
|
190
|
+
</xsl:choose>
|
191
|
+
</xsl:template>
|
192
|
+
|
193
|
+
<xsl:template match="FieldDescriptorProto" mode="format">
|
194
|
+
<xsl:choose>
|
195
|
+
<xsl:when test="type='TYPE_DOUBLE' or type='TYPE_FLOAT'
|
196
|
+
or type='TYPE_FIXED32' or type='TYPE_FIXED64'
|
197
|
+
or type='TYPE_SFIXED32' or type='TYPE_SFIXED64'">FixedSize</xsl:when>
|
198
|
+
<xsl:when test="type='TYPE_GROUP'">Group</xsl:when>
|
199
|
+
<xsl:when test="not(type) or type='TYPE_INT32' or type='TYPE_INT64'
|
200
|
+
or type='TYPE_UINT32' or type='TYPE_UINT64'
|
201
|
+
or type='TYPE_ENUM'">TwosComplement</xsl:when>
|
202
|
+
<xsl:when test="type='TYPE_SINT32' or type='TYPE_SINT64'">ZigZag</xsl:when>
|
203
|
+
<xsl:otherwise>Default</xsl:otherwise>
|
204
|
+
</xsl:choose>
|
205
|
+
</xsl:template>
|
206
|
+
<xsl:template match="FieldDescriptorProto" mode="primitiveType">
|
207
|
+
<xsl:choose>
|
208
|
+
<xsl:when test="not(type)">struct</xsl:when>
|
209
|
+
<xsl:when test="type='TYPE_DOUBLE'">struct</xsl:when>
|
210
|
+
<xsl:when test="type='TYPE_FLOAT'">struct</xsl:when>
|
211
|
+
<xsl:when test="type='TYPE_INT64'">struct</xsl:when>
|
212
|
+
<xsl:when test="type='TYPE_UINT64'">struct</xsl:when>
|
213
|
+
<xsl:when test="type='TYPE_INT32'">struct</xsl:when>
|
214
|
+
<xsl:when test="type='TYPE_FIXED64'">struct</xsl:when>
|
215
|
+
<xsl:when test="type='TYPE_FIXED32'">struct</xsl:when>
|
216
|
+
<xsl:when test="type='TYPE_BOOL'">struct</xsl:when>
|
217
|
+
<xsl:when test="type='TYPE_STRING'">class</xsl:when>
|
218
|
+
<xsl:when test="type='TYPE_BYTES'">class</xsl:when>
|
219
|
+
<xsl:when test="type='TYPE_UINT32'">struct</xsl:when>
|
220
|
+
<xsl:when test="type='TYPE_SFIXED32'">struct</xsl:when>
|
221
|
+
<xsl:when test="type='TYPE_SFIXED64'">struct</xsl:when>
|
222
|
+
<xsl:when test="type='TYPE_SINT32'">struct</xsl:when>
|
223
|
+
<xsl:when test="type='TYPE_SINT64'">struct</xsl:when>
|
224
|
+
<xsl:when test="type='TYPE_ENUM'">struct</xsl:when>
|
225
|
+
<xsl:when test="type='TYPE_GROUP' or type='TYPE_MESSAGE'">none</xsl:when>
|
226
|
+
<xsl:otherwise>
|
227
|
+
<xsl:message terminate="yes">
|
228
|
+
Field type not implemented: <xsl:value-of select="type"/> (<xsl:value-of select="../../name"/>.<xsl:value-of select="name"/>)
|
229
|
+
</xsl:message>
|
230
|
+
</xsl:otherwise>
|
231
|
+
</xsl:choose>
|
232
|
+
</xsl:template>
|
233
|
+
<xsl:template match="FieldDescriptorProto" mode="type">
|
234
|
+
<xsl:choose>
|
235
|
+
<xsl:when test="not(type)">double</xsl:when>
|
236
|
+
<xsl:when test="type='TYPE_DOUBLE'">Double</xsl:when>
|
237
|
+
<xsl:when test="type='TYPE_FLOAT'">Single</xsl:when>
|
238
|
+
<xsl:when test="type='TYPE_INT64'">Long</xsl:when>
|
239
|
+
<xsl:when test="type='TYPE_UINT64'">ULong</xsl:when>
|
240
|
+
<xsl:when test="type='TYPE_INT32'">Integer</xsl:when>
|
241
|
+
<xsl:when test="type='TYPE_FIXED64'">ULong</xsl:when>
|
242
|
+
<xsl:when test="type='TYPE_FIXED32'">UInteger</xsl:when>
|
243
|
+
<xsl:when test="type='TYPE_BOOL'">Boolean</xsl:when>
|
244
|
+
<xsl:when test="type='TYPE_STRING'">String</xsl:when>
|
245
|
+
<xsl:when test="type='TYPE_BYTES'">Byte()</xsl:when>
|
246
|
+
<xsl:when test="type='TYPE_UINT32'">UInteger</xsl:when>
|
247
|
+
<xsl:when test="type='TYPE_SFIXED32'">Integer</xsl:when>
|
248
|
+
<xsl:when test="type='TYPE_SFIXED64'">Long</xsl:when>
|
249
|
+
<xsl:when test="type='TYPE_SINT32'">Integer</xsl:when>
|
250
|
+
<xsl:when test="type='TYPE_SINT64'">Long</xsl:when>
|
251
|
+
<xsl:when test="type='TYPE_GROUP' or type='TYPE_MESSAGE' or type='TYPE_ENUM'"><xsl:call-template name="pascal">
|
252
|
+
<xsl:with-param name="value" select="substring-after(type_name,'.')"/>
|
253
|
+
</xsl:call-template></xsl:when>
|
254
|
+
<xsl:otherwise>
|
255
|
+
<xsl:message terminate="yes">
|
256
|
+
Field type not implemented: <xsl:value-of select="type"/> (<xsl:value-of select="../../name"/>.<xsl:value-of select="name"/>)
|
257
|
+
</xsl:message>
|
258
|
+
</xsl:otherwise>
|
259
|
+
</xsl:choose>
|
260
|
+
|
261
|
+
</xsl:template>
|
262
|
+
|
263
|
+
<xsl:template match="FieldDescriptorProto[default_value]" mode="defaultValue">
|
264
|
+
<xsl:choose>
|
265
|
+
<xsl:when test="type='TYPE_STRING'">"<xsl:value-of select="default_value"/>"</xsl:when>
|
266
|
+
<xsl:when test="type='TYPE_ENUM'"><xsl:apply-templates select="." mode="type"/>.<xsl:value-of select="default_value"/></xsl:when>
|
267
|
+
<xsl:when test="type='TYPE_BYTES'"> ' <xsl:value-of select="default_value"/></xsl:when>
|
268
|
+
<xsl:otherwise>CType(<xsl:value-of select="default_value"/>, <xsl:apply-templates select="." mode="type"/>)</xsl:otherwise>
|
269
|
+
</xsl:choose>
|
270
|
+
</xsl:template>
|
271
|
+
|
272
|
+
<!--
|
273
|
+
We need to find the first enum value given .foo.bar.SomeEnum - but the enum itself
|
274
|
+
only knows about SomeEnum; we need to look at all parent DescriptorProto nodes, and
|
275
|
+
the FileDescriptorProto for the namespace.
|
276
|
+
|
277
|
+
This does an annoying up/down recursion... a bit expensive, but *generally* OK.
|
278
|
+
Could perhaps index the last part of the enum name to reduce overhead?
|
279
|
+
-->
|
280
|
+
<xsl:template name="GetFirstEnumValue">
|
281
|
+
<xsl:variable name="hunt" select="type_name"/>
|
282
|
+
<xsl:for-each select="//EnumDescriptorProto">
|
283
|
+
<xsl:variable name="fullName">
|
284
|
+
<xsl:for-each select="ancestor::FileDescriptorProto">.<xsl:value-of select="package"/></xsl:for-each>
|
285
|
+
<xsl:for-each select="ancestor::DescriptorProto">.<xsl:value-of select="name"/></xsl:for-each>
|
286
|
+
<xsl:value-of select="concat('.',name)"/>
|
287
|
+
</xsl:variable>
|
288
|
+
<xsl:if test="$fullName=$hunt"><xsl:value-of select="(value/EnumValueDescriptorProto)[1]/name"/></xsl:if>
|
289
|
+
</xsl:for-each>
|
290
|
+
</xsl:template>
|
291
|
+
|
292
|
+
<xsl:template match="FieldDescriptorProto[not(default_value)]" mode="defaultValue">
|
293
|
+
<xsl:choose>
|
294
|
+
<xsl:when test="type='TYPE_DOUBLE'">0.0</xsl:when>
|
295
|
+
<xsl:when test="type='TYPE_FLOAT'">0.0F</xsl:when>
|
296
|
+
<xsl:when test="type='TYPE_INT64'">0L</xsl:when>
|
297
|
+
<xsl:when test="type='TYPE_UINT64'">0L</xsl:when>
|
298
|
+
<xsl:when test="type='TYPE_INT32'">0</xsl:when>
|
299
|
+
<xsl:when test="type='TYPE_FIXED64'">0L</xsl:when>
|
300
|
+
<xsl:when test="type='TYPE_FIXED32'">0</xsl:when>
|
301
|
+
<xsl:when test="type='TYPE_BOOL'">False</xsl:when>
|
302
|
+
<xsl:when test="type='TYPE_STRING'">""</xsl:when>
|
303
|
+
<xsl:when test="type='TYPE_BYTES'">Nothing</xsl:when>
|
304
|
+
<xsl:when test="type='TYPE_UINT32'">0</xsl:when>
|
305
|
+
<xsl:when test="type='TYPE_SFIXED32'">0</xsl:when>
|
306
|
+
<xsl:when test="type='TYPE_SFIXED64'">0L</xsl:when>
|
307
|
+
<xsl:when test="type='TYPE_SINT32'">0</xsl:when>
|
308
|
+
<xsl:when test="type='TYPE_SINT64'">0L</xsl:when>
|
309
|
+
<xsl:when test="type='TYPE_MESSAGE'">Nothing</xsl:when>
|
310
|
+
<xsl:when test="type='TYPE_ENUM'"><xsl:apply-templates select="." mode="type"/>.<xsl:call-template name="GetFirstEnumValue"/></xsl:when>
|
311
|
+
<xsl:otherwise>Nothing</xsl:otherwise>
|
312
|
+
</xsl:choose>
|
313
|
+
</xsl:template>
|
314
|
+
|
315
|
+
<xsl:template match="FieldDescriptorProto[label='LABEL_OPTIONAL' or not(label)]">
|
316
|
+
<xsl:variable name="propType"><xsl:apply-templates select="." mode="type"/></xsl:variable>
|
317
|
+
<xsl:variable name="format"><xsl:apply-templates select="." mode="format"/></xsl:variable>
|
318
|
+
<xsl:variable name="primitiveType"><xsl:apply-templates select="." mode="primitiveType"/></xsl:variable>
|
319
|
+
<xsl:variable name="defaultValue"><xsl:apply-templates select="." mode="defaultValue"/></xsl:variable>
|
320
|
+
<xsl:variable name="field"><xsl:apply-templates select="." mode="field"/></xsl:variable>
|
321
|
+
<xsl:variable name="specified" select="$optionDetectMissing and ($primitiveType='struct' or $primitiveType='class')"/>
|
322
|
+
<xsl:variable name="fieldType"><xsl:if test="$specified and $primitiveType='struct'">Nullable(Of </xsl:if><xsl:value-of select="$propType"/><xsl:if test="$specified and $primitiveType='struct'">)</xsl:if></xsl:variable>
|
323
|
+
|
324
|
+
<xsl:choose>
|
325
|
+
<xsl:when test="substring-after($fieldType, 'google.protobuf.')">
|
326
|
+
Private <xsl:value-of select="concat($field,' As ',substring-after($fieldType, 'google.protobuf.'))"/><xsl:if test="not($specified)"> =<xsl:value-of select="$defaultValue"/></xsl:if>
|
327
|
+
</xsl:when>
|
328
|
+
<xsl:otherwise>
|
329
|
+
Private <xsl:value-of select="concat($field,' As ',$fieldType)"/><xsl:if test="not($specified)"> =<xsl:value-of select="$defaultValue"/></xsl:if>
|
330
|
+
</xsl:otherwise>
|
331
|
+
</xsl:choose>
|
332
|
+
<xsl:choose>
|
333
|
+
<xsl:when test="not($specified) and $optionXml">
|
334
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=False, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
335
|
+
<xsl:choose>
|
336
|
+
<xsl:when test="substring-after($fieldType, 'google.protobuf.')">
|
337
|
+
<Global.System.ComponentModel.DefaultValue(CType(<xsl:value-of select="$defaultValue"/>, <xsl:value-of select="substring-after($fieldType, 'google.protobuf.')"/>))> _
|
338
|
+
</xsl:when>
|
339
|
+
<xsl:otherwise>
|
340
|
+
<Global.System.ComponentModel.DefaultValue(CType(<xsl:value-of select="$defaultValue"/>, <xsl:value-of select="$fieldType"/>))> _
|
341
|
+
</xsl:otherwise>
|
342
|
+
</xsl:choose>
|
343
|
+
<Global.System.Xml.Serialization.XmlElement("<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>)> _ <!--
|
344
|
+
--></xsl:when>
|
345
|
+
<xsl:when test="not($specified) and $optionDataContract">
|
346
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=False, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
347
|
+
<xsl:choose>
|
348
|
+
<xsl:when test="substring-after($fieldType, 'google.protobuf.')">
|
349
|
+
<Global.System.ComponentModel.DefaultValue(CType(<xsl:value-of select="$defaultValue"/>, <xsl:value-of select="substring-after($fieldType, 'google.protobuf.')"/>))> _
|
350
|
+
</xsl:when>
|
351
|
+
<xsl:otherwise>
|
352
|
+
<Global.System.ComponentModel.DefaultValue(CType(<xsl:value-of select="$defaultValue"/>, <xsl:value-of select="$fieldType"/>))> _
|
353
|
+
</xsl:otherwise>
|
354
|
+
</xsl:choose>
|
355
|
+
<Global.System.Runtime.Serialization.DataMember(Name:="<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>, IsRequired:=False)> _ <!--
|
356
|
+
--></xsl:when>
|
357
|
+
<xsl:when test="not($specified)">
|
358
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=False, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _ <!--
|
359
|
+
--><xsl:choose>
|
360
|
+
<xsl:when test="substring-after($fieldType, 'google.protobuf.')">
|
361
|
+
<Global.System.ComponentModel.DefaultValue(CType(<xsl:value-of select="$defaultValue"/>, <xsl:value-of select="substring-after($fieldType, 'google.protobuf.')"/>))> _ <!--
|
362
|
+
--></xsl:when>
|
363
|
+
<xsl:otherwise>
|
364
|
+
<Global.System.ComponentModel.DefaultValue(CType(<xsl:value-of select="$defaultValue"/>, <xsl:value-of select="$fieldType"/>))> _ <!--
|
365
|
+
--></xsl:otherwise>
|
366
|
+
</xsl:choose><!--
|
367
|
+
--></xsl:when>
|
368
|
+
<xsl:when test="$optionDataContract">
|
369
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=False, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
370
|
+
<Global.System.Runtime.Serialization.DataMember(Name:="<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>, IsRequired:=False)> _ <!--
|
371
|
+
--></xsl:when>
|
372
|
+
<xsl:when test="$optionXml">
|
373
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=False, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
374
|
+
<Global.System.Xml.Serialization.XmlElement("<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>)> _ <!--
|
375
|
+
--></xsl:when>
|
376
|
+
<xsl:otherwise>
|
377
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=False, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _ <!--
|
378
|
+
--></xsl:otherwise>
|
379
|
+
</xsl:choose><!--
|
380
|
+
--><xsl:call-template name="WriteGetSet">
|
381
|
+
<xsl:with-param name="fieldType" select="$fieldType"/>
|
382
|
+
<xsl:with-param name="propType" select="$propType"/>
|
383
|
+
<xsl:with-param name="name"><xsl:call-template name="pascalPropName"/></xsl:with-param>
|
384
|
+
<xsl:with-param name="field" select="$field"/>
|
385
|
+
<xsl:with-param name="defaultValue" select="$defaultValue"/>
|
386
|
+
<xsl:with-param name="specified" select="$specified"/>
|
387
|
+
</xsl:call-template>
|
388
|
+
</xsl:template>
|
389
|
+
|
390
|
+
<xsl:template name="pascalPropName">
|
391
|
+
<xsl:param name="value" select="name"/>
|
392
|
+
<xsl:param name="delimiter" select="'_'"/>
|
393
|
+
<xsl:variable name="valueUC" select="translate($value,$alpha,$ALPHA)"/>
|
394
|
+
<xsl:variable name="finalName">
|
395
|
+
<xsl:choose>
|
396
|
+
<xsl:when test="$types[translate(name,$alpha,$ALPHA)=$valueUC]"><xsl:value-of select="concat($value,$delimiter,'Property')"/></xsl:when>
|
397
|
+
<xsl:otherwise><xsl:value-of select="$value"/></xsl:otherwise>
|
398
|
+
</xsl:choose>
|
399
|
+
</xsl:variable>
|
400
|
+
<xsl:call-template name="pascal">
|
401
|
+
<xsl:with-param name="value" select="$finalName"/>
|
402
|
+
<xsl:with-param name="delimiter" select="$delimiter"/>
|
403
|
+
</xsl:call-template>
|
404
|
+
</xsl:template>
|
405
|
+
|
406
|
+
<xsl:template match="FieldDescriptorProto[label='LABEL_REQUIRED']">
|
407
|
+
<xsl:variable name="type"><xsl:apply-templates select="." mode="type"/></xsl:variable>
|
408
|
+
<xsl:variable name="format"><xsl:apply-templates select="." mode="format"/></xsl:variable>
|
409
|
+
<xsl:variable name="field"><xsl:apply-templates select="." mode="field"/></xsl:variable>
|
410
|
+
Private <xsl:value-of select="concat($field, ' As ', $type)"/>
|
411
|
+
<xsl:choose>
|
412
|
+
<xsl:when test="$optionDataContract">
|
413
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=True, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
414
|
+
<Global.System.Runtime.Serialization.DataMember(Name:="<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>, IsRequired:=True)> _ <!--
|
415
|
+
--></xsl:when>
|
416
|
+
<xsl:when test="$optionXml">
|
417
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=True, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
418
|
+
<Global.System.Xml.Serialization.XmlElement("<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>)> _ <!--
|
419
|
+
--></xsl:when>
|
420
|
+
<xsl:otherwise>
|
421
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, IsRequired:=True, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _ <!--
|
422
|
+
--></xsl:otherwise>
|
423
|
+
</xsl:choose><!--
|
424
|
+
--><xsl:call-template name="WriteGetSet">
|
425
|
+
<xsl:with-param name="fieldType" select="$type"/>
|
426
|
+
<xsl:with-param name="propType" select="$type"/>
|
427
|
+
<xsl:with-param name="name" select="name"/>
|
428
|
+
<xsl:with-param name="field" select="$field"/>
|
429
|
+
</xsl:call-template>
|
430
|
+
</xsl:template>
|
431
|
+
|
432
|
+
<xsl:template name="WriteGetSet">
|
433
|
+
<xsl:param name="fieldType"/>
|
434
|
+
<xsl:param name="propType"/>
|
435
|
+
<xsl:param name="name"/>
|
436
|
+
<xsl:param name="field"/>
|
437
|
+
<xsl:param name="specified" select="false()"/>
|
438
|
+
<xsl:param name="defaultValue"/>
|
439
|
+
<xsl:variable name="primitiveType"><xsl:apply-templates select="." mode="primitiveType"/></xsl:variable>
|
440
|
+
<xsl:choose>
|
441
|
+
<xsl:when test="substring-after($fieldType, 'google.protobuf.')">
|
442
|
+
Public Property <xsl:value-of select="concat($name,' As ',substring-after($fieldType, 'google.protobuf.'))"/>
|
443
|
+
</xsl:when>
|
444
|
+
<xsl:otherwise>
|
445
|
+
Public Property <xsl:value-of select="concat($name,' As ',$fieldType)"/>
|
446
|
+
</xsl:otherwise>
|
447
|
+
</xsl:choose>
|
448
|
+
Get
|
449
|
+
<xsl:choose>
|
450
|
+
<xsl:when test="$specified and $primitiveType='struct'"><!--
|
451
|
+
-->Return <xsl:value-of select="$field"/><!--
|
452
|
+
--></xsl:when>
|
453
|
+
<xsl:when test="$specified">
|
454
|
+
If Not <xsl:value-of select="$field"/> Is Nothing Then
|
455
|
+
Return <xsl:value-of select="$field"/>
|
456
|
+
Else
|
457
|
+
Return <xsl:value-of select="$defaultValue"/>
|
458
|
+
End If<!--
|
459
|
+
--></xsl:when>
|
460
|
+
<xsl:otherwise><!--
|
461
|
+
-->Return <xsl:value-of select="$field"/><!--
|
462
|
+
--></xsl:otherwise>
|
463
|
+
</xsl:choose>
|
464
|
+
End Get
|
465
|
+
<xsl:choose>
|
466
|
+
<xsl:when test="substring-after($fieldType, 'google.protobuf.')">
|
467
|
+
Set(<xsl:value-of select="concat('value As ',substring-after($fieldType, 'google.protobuf.'))"/>)
|
468
|
+
</xsl:when>
|
469
|
+
<xsl:otherwise>
|
470
|
+
Set(<xsl:value-of select="concat('value As ',$fieldType)"/>)
|
471
|
+
</xsl:otherwise>
|
472
|
+
</xsl:choose>
|
473
|
+
<xsl:if test="$optionPartialMethods">On<xsl:value-of select="$name"/>Changing(value)
|
474
|
+
</xsl:if><xsl:if test="$optionPreObservable">OnPropertyChanging("<xsl:value-of select="$name"/>")
|
475
|
+
</xsl:if><xsl:value-of select="$field"/> = value
|
476
|
+
<xsl:if test="$optionObservable">OnPropertyChanged("<xsl:value-of select="$name"/>") </xsl:if><xsl:if test="$optionPartialMethods">On<xsl:value-of select="$name"/>Changed()</xsl:if>
|
477
|
+
End Set
|
478
|
+
End Property
|
479
|
+
<xsl:if test="$optionPartialMethods">
|
480
|
+
partial void On<xsl:value-of select="$name"/>Changing(<xsl:value-of select="$propType"/> value);
|
481
|
+
partial void On<xsl:value-of select="$name"/>Changed();</xsl:if><xsl:if test="$specified">
|
482
|
+
<Global.System.Xml.Serialization.XmlIgnore> _
|
483
|
+
<xsl:if test="$optionFullFramework"><Global.System.ComponentModel.Browsable(false)> _ </xsl:if>
|
484
|
+
<xsl:choose>
|
485
|
+
<xsl:when test="$specified and $primitiveType='struct'">
|
486
|
+
Public Property <xsl:value-of select="$name"/>Specified As Boolean
|
487
|
+
Get
|
488
|
+
Return <xsl:value-of select="$field"/>.HasValue
|
489
|
+
End Get
|
490
|
+
Set (ByVal value As Boolean)
|
491
|
+
If Not <xsl:value-of select="$field"/>.HasValue Then
|
492
|
+
If value = True then <xsl:value-of select="$field"/> = <xsl:value-of select="$name"/>
|
493
|
+
Else
|
494
|
+
If value = False then <xsl:value-of select="$field"/> = Nothing
|
495
|
+
End If
|
496
|
+
End Set
|
497
|
+
End Property
|
498
|
+
</xsl:when>
|
499
|
+
<xsl:otherwise>
|
500
|
+
Public Property <xsl:value-of select="$name"/>Specified As Boolean
|
501
|
+
Get
|
502
|
+
Return <xsl:value-of select="$field"/> IsNot Nothing
|
503
|
+
End Get
|
504
|
+
Set (ByVal value As Boolean)
|
505
|
+
If <xsl:value-of select="$field"/> Is Nothing Then
|
506
|
+
If value = True then <xsl:value-of select="$field"/> = <xsl:value-of select="$name"/>
|
507
|
+
Else
|
508
|
+
If value = False then <xsl:value-of select="$field"/> = Nothing
|
509
|
+
End If
|
510
|
+
End Set
|
511
|
+
End Property
|
512
|
+
</xsl:otherwise>
|
513
|
+
</xsl:choose>
|
514
|
+
Private Function ShouldSerialize<xsl:value-of select="$name"/>() As Boolean
|
515
|
+
Return <xsl:value-of select="$name"/>Specified
|
516
|
+
End Function
|
517
|
+
Private Sub Reset<xsl:value-of select="$name"/>()
|
518
|
+
<xsl:value-of select="$name"/>Specified = false
|
519
|
+
End Sub
|
520
|
+
</xsl:if>
|
521
|
+
</xsl:template>
|
522
|
+
<xsl:template match="FieldDescriptorProto[label='LABEL_REPEATED']">
|
523
|
+
<xsl:variable name="type"><xsl:apply-templates select="." mode="type"/></xsl:variable>
|
524
|
+
<xsl:variable name="format"><xsl:apply-templates select="." mode="format"/></xsl:variable>
|
525
|
+
<xsl:variable name="field"><xsl:apply-templates select="." mode="field"/></xsl:variable>
|
526
|
+
<xsl:choose>
|
527
|
+
<xsl:when test="substring-after($type, 'google.protobuf.')">
|
528
|
+
Private <xsl:if test="not($optionXml)">ReadOnly </xsl:if> <xsl:value-of select="$field"/> as Global.System.Collections.Generic.List(Of <xsl:value-of select="substring-after($type, 'google.protobuf.')" />) = New Global.System.Collections.Generic.List(Of <xsl:value-of select="substring-after($type, 'google.protobuf.')"/>)()
|
529
|
+
</xsl:when>
|
530
|
+
<xsl:otherwise>
|
531
|
+
Private <xsl:if test="not($optionXml)">ReadOnly </xsl:if> <xsl:value-of select="$field"/> as Global.System.Collections.Generic.List(Of <xsl:value-of select="$type" />) = New Global.System.Collections.Generic.List(Of <xsl:value-of select="$type"/>)()
|
532
|
+
</xsl:otherwise>
|
533
|
+
</xsl:choose>
|
534
|
+
<xsl:choose>
|
535
|
+
<xsl:when test="$optionDataContract">
|
536
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
537
|
+
<Global.System.Runtime.Serialization.DataMember(Name:="<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>, IsRequired:=False)> _
|
538
|
+
</xsl:when>
|
539
|
+
<xsl:when test="$optionXml">
|
540
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
541
|
+
<Global.System.Xml.Serialization.XmlElement("<xsl:value-of select="name"/>", Order:=<xsl:value-of select="number"/>)> _
|
542
|
+
</xsl:when>
|
543
|
+
<xsl:otherwise>
|
544
|
+
<Global.ProtoBuf.ProtoMember(<xsl:value-of select="number"/>, Name:="<xsl:value-of select="name"/>", DataFormat:=Global.ProtoBuf.DataFormat.<xsl:value-of select="$format"/>)> _
|
545
|
+
</xsl:otherwise>
|
546
|
+
</xsl:choose><!--
|
547
|
+
--><xsl:choose>
|
548
|
+
<xsl:when test="substring-after($type, 'google.protobuf.')"><!--
|
549
|
+
-->Public <xsl:if test="not($optionXml)">ReadOnly </xsl:if>Property <xsl:value-of select="name"/> As Global.System.Collections.Generic.List(Of <xsl:value-of select="substring-after($type, 'google.protobuf.')" />)
|
550
|
+
</xsl:when>
|
551
|
+
<xsl:otherwise><!--
|
552
|
+
-->Public <xsl:if test="not($optionXml)">ReadOnly </xsl:if>Property <xsl:value-of select="name"/> As Global.System.Collections.Generic.List(Of <xsl:value-of select="$type" />)
|
553
|
+
</xsl:otherwise>
|
554
|
+
</xsl:choose>
|
555
|
+
Get
|
556
|
+
Return <xsl:value-of select="$field"/>
|
557
|
+
End Get
|
558
|
+
<!----><xsl:if test="$optionXml">
|
559
|
+
<xsl:choose>
|
560
|
+
<xsl:when test="substring-after($type, 'google.protobuf.')">
|
561
|
+
Set (value As Global.System.Collections.Generic.List(Of <xsl:value-of select="substring-after($type, 'google.protobuf.')" />))
|
562
|
+
</xsl:when>
|
563
|
+
<xsl:otherwise>
|
564
|
+
Set (value As Global.System.Collections.Generic.List(Of <xsl:value-of select="$type" />))
|
565
|
+
</xsl:otherwise>
|
566
|
+
</xsl:choose>
|
567
|
+
<xsl:value-of select="$field"/> = value
|
568
|
+
End Set
|
569
|
+
</xsl:if>
|
570
|
+
End Property
|
571
|
+
</xsl:template>
|
572
|
+
|
573
|
+
<xsl:template match="ServiceDescriptorProto">
|
574
|
+
<xsl:if test="($optionClientProxy or $optionDataContract)">
|
575
|
+
<Global.System.ServiceModel.ServiceContract(Name:="<xsl:value-of select="name"/>")> _
|
576
|
+
</xsl:if>
|
577
|
+
Public Interface I<xsl:value-of select="name"/>
|
578
|
+
<xsl:apply-templates select="method"/>
|
579
|
+
End Interface
|
580
|
+
|
581
|
+
<xsl:if test="$optionProtoRpc">
|
582
|
+
Public Class <xsl:value-of select="name"/>Client : Global.ProtoBuf.ServiceModel.RpcClient
|
583
|
+
public <xsl:value-of select="name"/>Client() : base(typeof(I<xsl:value-of select="name"/>)) { }
|
584
|
+
|
585
|
+
<xsl:apply-templates select="method/MethodDescriptorProto" mode="protoRpc"/>
|
586
|
+
End Class
|
587
|
+
</xsl:if>
|
588
|
+
<xsl:apply-templates select="." mode="clientProxy"/>
|
589
|
+
|
590
|
+
</xsl:template>
|
591
|
+
|
592
|
+
<xsl:template match="MethodDescriptorProto">
|
593
|
+
<xsl:if test="$optionDataContract">
|
594
|
+
<Global.System.ServiceModel.OperationContract(Name:="<xsl:value-of select="name"/>")> _
|
595
|
+
<Global.ProtoBuf.ServiceModel.ProtoBehavior()> _
|
596
|
+
</xsl:if>
|
597
|
+
<xsl:apply-templates select="output_type"/><xsl:text xml:space="preserve"> </xsl:text><xsl:value-of select="name"/>(<xsl:apply-templates select="input_type"/> request);
|
598
|
+
<xsl:if test="$optionAsynchronous and $optionDataContract">
|
599
|
+
<Global.System.ServiceModel.OperationContract(AsyncPattern:=True, Name:="<xsl:value-of select="name"/>")> _
|
600
|
+
Global.System.IAsyncResult Begin<xsl:value-of select="name"/>(<xsl:apply-templates select="input_type"/> request, Global.System.AsyncCallback callback, object state);
|
601
|
+
<xsl:apply-templates select="output_type"/> End<xsl:value-of select="name"/>(Global.System.IAsyncResult ar);
|
602
|
+
</xsl:if>
|
603
|
+
</xsl:template>
|
604
|
+
|
605
|
+
<xsl:template match="MethodDescriptorProto" mode="protoRpc">
|
606
|
+
<xsl:apply-templates select="output_type"/><xsl:text xml:space="preserve"> </xsl:text><xsl:value-of select="name"/>(<xsl:apply-templates select="input_type"/> request)
|
607
|
+
{
|
608
|
+
return (<xsl:apply-templates select="output_type"/>) Send("<xsl:value-of select="name"/>", request);
|
609
|
+
}
|
610
|
+
</xsl:template>
|
611
|
+
|
612
|
+
<xsl:template match="MethodDescriptorProto/input_type | MethodDescriptorProto/output_type">
|
613
|
+
<xsl:value-of select="substring-after(.,'.')"/>
|
614
|
+
</xsl:template>
|
615
|
+
|
616
|
+
<xsl:template match="MethodDescriptorProto" mode="CompleteEvent">
|
617
|
+
<xsl:if test="$optionAsynchronous and $optionDataContract">
|
618
|
+
Public Class <xsl:value-of select="name"/>CompletedEventArgs : Global.System.ComponentModel.AsyncCompletedEventArgs
|
619
|
+
private object[] results;
|
620
|
+
|
621
|
+
public <xsl:value-of select="name"/>CompletedEventArgs(object[] results, Global.System.Exception exception, bool cancelled, object userState)
|
622
|
+
: base(exception, cancelled, userState)
|
623
|
+
{
|
624
|
+
this.results = results;
|
625
|
+
}
|
626
|
+
|
627
|
+
public <xsl:apply-templates select="output_type"/> Result
|
628
|
+
{
|
629
|
+
get {
|
630
|
+
base.RaiseExceptionIfNecessary();
|
631
|
+
return (<xsl:apply-templates select="output_type"/>)(this.results[0]);
|
632
|
+
}
|
633
|
+
}
|
634
|
+
End Class
|
635
|
+
</xsl:if>
|
636
|
+
</xsl:template>
|
637
|
+
|
638
|
+
<xsl:template match="ServiceDescriptorProto" mode="clientProxy">
|
639
|
+
<xsl:if test="$optionAsynchronous and $optionDataContract and $optionClientProxy">
|
640
|
+
<xsl:apply-templates select="method/MethodDescriptorProto" mode="CompleteEvent"/>
|
641
|
+
|
642
|
+
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
|
643
|
+
public partial class <xsl:value-of select="name"/>Client : Global.System.ServiceModel.ClientBase<I<xsl:value-of select="name"/>>, I<xsl:value-of select="name"/>
|
644
|
+
{
|
645
|
+
|
646
|
+
public <xsl:value-of select="name"/>Client()
|
647
|
+
{}
|
648
|
+
public <xsl:value-of select="name"/>Client(string endpointConfigurationName)
|
649
|
+
: base(endpointConfigurationName)
|
650
|
+
{}
|
651
|
+
public <xsl:value-of select="name"/>Client(string endpointConfigurationName, string remoteAddress)
|
652
|
+
: base(endpointConfigurationName, remoteAddress)
|
653
|
+
{}
|
654
|
+
public <xsl:value-of select="name"/>Client(string endpointConfigurationName, Global.System.ServiceModel.EndpointAddress remoteAddress)
|
655
|
+
: base(endpointConfigurationName, remoteAddress)
|
656
|
+
{}
|
657
|
+
public <xsl:value-of select="name"/>Client(Global.System.ServiceModel.Channels.Binding binding, Global.System.ServiceModel.EndpointAddress remoteAddress)
|
658
|
+
: base(binding, remoteAddress)
|
659
|
+
{}
|
660
|
+
|
661
|
+
<xsl:apply-templates select="method/MethodDescriptorProto" mode="clientProxy"/>
|
662
|
+
}
|
663
|
+
</xsl:if>
|
664
|
+
</xsl:template>
|
665
|
+
|
666
|
+
<xsl:template match="MethodDescriptorProto" mode="clientProxy">
|
667
|
+
<xsl:if test="$optionAsynchronous and $optionDataContract and $optionClientProxy">
|
668
|
+
private BeginOperationDelegate onBegin<xsl:value-of select="name"/>Delegate;
|
669
|
+
private EndOperationDelegate onEnd<xsl:value-of select="name"/>Delegate;
|
670
|
+
private Global.System.Threading.SendOrPostCallback on<xsl:value-of select="name"/>CompletedDelegate;
|
671
|
+
|
672
|
+
public event Global.System.EventHandler<<xsl:value-of select="name"/>CompletedEventArgs> <xsl:value-of select="name"/>Completed;
|
673
|
+
|
674
|
+
public <xsl:apply-templates select="output_type"/><xsl:text xml:space="preserve"> </xsl:text><xsl:value-of select="name"/>(<xsl:apply-templates select="input_type"/> request)
|
675
|
+
{
|
676
|
+
return base.Channel.<xsl:value-of select="name"/>(request);
|
677
|
+
}
|
678
|
+
|
679
|
+
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
680
|
+
public Global.System.IAsyncResult Begin<xsl:value-of select="name"/>(<xsl:apply-templates select="input_type"/> request, Global.System.AsyncCallback callback, object asyncState)
|
681
|
+
{
|
682
|
+
return base.Channel.Begin<xsl:value-of select="name"/>(request, callback, asyncState);
|
683
|
+
}
|
684
|
+
|
685
|
+
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
686
|
+
public <xsl:apply-templates select="output_type"/> End<xsl:value-of select="name"/>(Global.System.IAsyncResult result)
|
687
|
+
{
|
688
|
+
return base.Channel.End<xsl:value-of select="name"/>(result);
|
689
|
+
}
|
690
|
+
|
691
|
+
private Global.System.IAsyncResult OnBegin<xsl:value-of select="name"/>(object[] inValues, Global.System.AsyncCallback callback, object asyncState)
|
692
|
+
{
|
693
|
+
<xsl:apply-templates select="input_type"/> request = ((<xsl:apply-templates select="input_type"/>)(inValues[0]));
|
694
|
+
return this.Begin<xsl:value-of select="name"/>(request, callback, asyncState);
|
695
|
+
}
|
696
|
+
|
697
|
+
private object[] OnEnd<xsl:value-of select="name"/>(Global.System.IAsyncResult result)
|
698
|
+
{
|
699
|
+
<xsl:apply-templates select="output_type"/> retVal = this.End<xsl:value-of select="name"/>(result);
|
700
|
+
return new object[] {
|
701
|
+
retVal};
|
702
|
+
}
|
703
|
+
|
704
|
+
private void On<xsl:value-of select="name"/>Completed(object state)
|
705
|
+
{
|
706
|
+
if ((this.<xsl:value-of select="name"/>Completed != null))
|
707
|
+
{
|
708
|
+
InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
|
709
|
+
this.<xsl:value-of select="name"/>Completed(this, new <xsl:value-of select="name"/>CompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
|
710
|
+
}
|
711
|
+
}
|
712
|
+
|
713
|
+
public void <xsl:value-of select="name"/>Async(<xsl:apply-templates select="input_type"/> request)
|
714
|
+
{
|
715
|
+
this.<xsl:value-of select="name"/>Async(request, null);
|
716
|
+
}
|
717
|
+
|
718
|
+
public void <xsl:value-of select="name"/>Async(<xsl:apply-templates select="input_type"/> request, object userState)
|
719
|
+
{
|
720
|
+
if ((this.onBegin<xsl:value-of select="name"/>Delegate == null))
|
721
|
+
{
|
722
|
+
this.onBegin<xsl:value-of select="name"/>Delegate = new BeginOperationDelegate(this.OnBegin<xsl:value-of select="name"/>);
|
723
|
+
}
|
724
|
+
if ((this.onEnd<xsl:value-of select="name"/>Delegate == null))
|
725
|
+
{
|
726
|
+
this.onEnd<xsl:value-of select="name"/>Delegate = new EndOperationDelegate(this.OnEnd<xsl:value-of select="name"/>);
|
727
|
+
}
|
728
|
+
if ((this.on<xsl:value-of select="name"/>CompletedDelegate == null))
|
729
|
+
{
|
730
|
+
this.on<xsl:value-of select="name"/>CompletedDelegate = new Global.System.Threading.SendOrPostCallback(this.On<xsl:value-of select="name"/>Completed);
|
731
|
+
}
|
732
|
+
base.InvokeAsync(this.onBegin<xsl:value-of select="name"/>Delegate, new object[] {
|
733
|
+
request}, this.onEnd<xsl:value-of select="name"/>Delegate, this.on<xsl:value-of select="name"/>CompletedDelegate, userState);
|
734
|
+
}
|
735
|
+
</xsl:if>
|
736
|
+
</xsl:template>
|
737
|
+
|
738
|
+
<xsl:template name="escapeKeyword"><xsl:param name="value"/><xsl:choose>
|
739
|
+
<xsl:when test="contains($keywordsUpper,concat('|',translate($value, $alpha, $ALPHA),'|'))">[<xsl:value-of select="$value"/>]</xsl:when>
|
740
|
+
<xsl:otherwise><xsl:value-of select="$value"/></xsl:otherwise>
|
741
|
+
</xsl:choose></xsl:template>
|
742
|
+
<xsl:variable name="keywords">|AddHandler|AddressOf|Alias|And|AndAlso|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDec|CDbl|Char|CInt|Class|CLng|CObj|Const|Continue|CSByte|CShort|CSng|CStr|CType|CUInt|CULng|CUShort|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|False|Finally|For|Friend|Function|Get|GetType|GetXMLNamespace|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|Narrowing|New|Next|Not|Nothing|NotInheritable|NotOverridable|Object|Of|On|Operator|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|REM|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|True|Try|TryCast|TypeOf|Variant|Wend|UInteger|ULong|UShort|Using|When|While|Widening|With|WithEvents|WriteOnly|Xor|</xsl:variable>
|
743
|
+
<xsl:variable name="keywordsUpper" select="translate($keywords, $alpha, $ALPHA)"/>
|
744
|
+
|
745
|
+
</xsl:stylesheet>
|