ferocia-rubywmq 1.1.3 → 2.0.2

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.
Files changed (52) hide show
  1. data/.document +0 -4
  2. data/LICENSE.txt +201 -0
  3. data/README.md +408 -0
  4. data/Rakefile +91 -0
  5. data/examples/each_a.rb +1 -17
  6. data/examples/each_b.rb +1 -17
  7. data/examples/each_header.rb +3 -19
  8. data/examples/files_to_q.rb +1 -17
  9. data/examples/get_a.rb +1 -17
  10. data/examples/get_client.rb +5 -21
  11. data/examples/put1_a.rb +1 -17
  12. data/examples/put1_b.rb +1 -17
  13. data/examples/put1_c.rb +3 -19
  14. data/examples/put_a.rb +1 -17
  15. data/examples/put_b.rb +1 -17
  16. data/examples/put_dlh.rb +4 -20
  17. data/examples/put_dynamic_q.rb +1 -17
  18. data/examples/put_group_a.rb +1 -17
  19. data/examples/put_group_b.rb +1 -17
  20. data/examples/put_rfh.rb +12 -28
  21. data/examples/put_rfh2_a.rb +5 -21
  22. data/examples/put_rfh2_b.rb +5 -21
  23. data/examples/put_xmit_q.rb +2 -18
  24. data/examples/q_to_files.rb +1 -17
  25. data/examples/request.rb +7 -23
  26. data/examples/server.rb +10 -26
  27. data/ext/extconf.rb +26 -46
  28. data/ext/extconf_client.rb +3 -19
  29. data/ext/generate/generate_const.rb +16 -43
  30. data/ext/generate/generate_reason.rb +23 -36
  31. data/ext/generate/generate_structs.rb +7 -22
  32. data/ext/generate/wmq_structs.erb +28 -58
  33. data/ext/wmq.c +1 -4
  34. data/ext/wmq.h +5 -1
  35. data/ext/wmq_message.c +1 -1
  36. data/ext/wmq_mq_load.c +1 -1
  37. data/ext/wmq_queue.c +1 -1
  38. data/ext/wmq_queue_manager.c +3 -3
  39. data/lib/rubywmq.rb +1 -0
  40. data/lib/wmq.rb +13 -26
  41. data/lib/wmq/message.rb +70 -0
  42. data/{ext/lib/wmq_temp.rb → lib/wmq/queue_manager.rb} +11 -98
  43. data/lib/wmq/version.rb +3 -0
  44. data/tests/test.rb +30 -40
  45. metadata +10 -20
  46. data/LICENSE +0 -13
  47. data/Manifest.txt +0 -20
  48. data/README +0 -73
  49. data/ext/build.bat +0 -3
  50. data/ext/build.sh +0 -6
  51. data/rubywmq.binary.gemspec +0 -32
  52. data/rubywmq.gemspec +0 -33
data/ext/extconf.rb CHANGED
@@ -1,52 +1,32 @@
1
- ################################################################################
2
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- ################################################################################
1
+ require 'mkmf'
2
+ generate_sources_path = File.join(File.dirname(__FILE__), 'generate')
3
+ $LOAD_PATH.unshift generate_sources_path
4
+ require 'generate_reason'
5
+ require 'generate_const'
6
+ require 'generate_structs'
16
7
 
17
- if RUBY_PLATFORM =~ /darwin/ || ENV['DISABLE_RUBYWMQ']
18
- # do nothing on a mac, this is so people developing applications using this
19
- # gem on a mac (using stubs for development) can still keep the gem in their
20
- # Gemfile
21
- # create a blank Makefile to satisfy extension install requirements
22
- File.open("Makefile", "w") { |f| f << 'install:' }
8
+ include_path = ''
9
+ if RUBY_PLATFORM =~ /win|mingw/i
10
+ include_path = 'C:\Program Files\IBM\WebSphere MQ\tools\c\include'
11
+ dir_config('mqm', include_path, '.')
23
12
  else
24
- require 'mkmf'
25
- require_relative 'generate/generate_reason'
26
- require_relative 'generate/generate_const'
27
- require_relative 'generate/generate_structs'
28
-
29
- include_path = ''
30
- if RUBY_PLATFORM =~ /mswin32/
31
- include_path = 'C:\Program Files\IBM\WebSphere MQ\Tools\c\include'
32
- dir_config('mqm', include_path, '.')
33
- else
34
- include_path = '/opt/mqm/inc'
35
- #dir_config('mqm', include_path, '/opt/mqm/lib')
36
- end
13
+ include_path = '/opt/mqm/inc'
14
+ lib64_path = '/opt/mqm/lib64'
15
+ lib_path = File.directory?(lib64_path) ? lib64_path : '/opt/mqm/lib'
16
+ dir_config('mqm', include_path, lib_path)
17
+ end
37
18
 
38
- have_header('cmqc.h')
19
+ have_header('cmqc.h')
39
20
 
40
- # Check for WebSphere MQ Server library
41
- unless (RUBY_PLATFORM =~ /win/i) || (RUBY_PLATFORM =~ /solaris/i) || (RUBY_PLATFORM =~ /linux/i)
42
- have_library('mqm')
43
- end
21
+ # Check for WebSphere MQ Server library
22
+ unless (RUBY_PLATFORM =~ /win/i) || (RUBY_PLATFORM =~ /solaris/i) || (RUBY_PLATFORM =~ /linux/i)
23
+ have_library('mqm')
24
+ end
44
25
 
45
- # Generate Source Files
46
- GenerateReason.generate(include_path+'/')
47
- GenerateConst.generate(include_path+'/', 'lib')
48
- GenerateStructs.new(include_path+'/', 'generate').generate
26
+ # Generate Source Files
27
+ GenerateReason.generate(include_path+'/')
28
+ GenerateConst.generate(include_path+'/', File.dirname(__FILE__) + '/../lib/wmq')
29
+ GenerateStructs.new(include_path+'/', generate_sources_path).generate
49
30
 
50
- # Generate Makefile
51
- create_makefile('wmq/wmq')
52
- end
31
+ # Generate Makefile
32
+ create_makefile('wmq/wmq')
@@ -1,21 +1,5 @@
1
- ################################################################################
2
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
3
1
  #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- ################################################################################
16
-
17
- #
18
- # NOTE: Do NOT use this file unless the platform being requested is not supported
2
+ # NOTE: Do NOT use this file unless the platform being used is not supported
19
3
  # directly by Ruby WMQ. Ruby WMQ already supports automatic dynamic loading on
20
4
  # Windows, Solaris and Linux
21
5
  #
@@ -29,12 +13,12 @@ unless (RUBY_PLATFORM =~ /win/i) || (RUBY_PLATFORM =~ /solaris/i) || (RUBY_PLATF
29
13
  include_path = '/opt/mqm/inc'
30
14
  dir_config('mqm', include_path, '/opt/mqm/lib')
31
15
  have_library('mqic')
32
-
16
+
33
17
  # Generate Source Files # Could check if not already present
34
18
  GenerateReason.generate(include_path+'/')
35
19
  GenerateConst.generate(include_path+'/', '../../lib/wmq')
36
20
  GenerateStructs.new(include_path+'/', '../../generate').generate
37
-
21
+
38
22
  have_header('cmqc.h')
39
23
  create_makefile('wmq_client')
40
24
  end
@@ -1,6 +1,7 @@
1
+ # Extract Constants from the WebSphere MQ header files
1
2
  class GenerateConst
2
-
3
- #Extract Constants from Header files
3
+
4
+ # Extract Constants from Header files
4
5
  def GenerateConst.extract_const(filename, const_prefix, start_exp=nil, end_exp=nil)
5
6
  @constants = []
6
7
  active = if start_exp then false else true end # Sure there is a better way
@@ -23,8 +24,8 @@ class GenerateConst
23
24
  end
24
25
  @constants
25
26
  end
26
-
27
- #Extract MQ Constants from Header files
27
+
28
+ # Extract MQ Constants from Header files
28
29
  def GenerateConst.rb_const(filename, const_prefix, exclude_exp=nil)
29
30
  str = ''
30
31
  GenerateConst.extract_const(filename, const_prefix).each do |item|
@@ -42,7 +43,7 @@ class GenerateConst
42
43
  end
43
44
  str
44
45
  end
45
-
46
+
46
47
  def GenerateConst.config(filename, prefix)
47
48
  str = "# WMQ::QueueManager execute commands\n"
48
49
  str << "execute_commands:\n"
@@ -55,24 +56,10 @@ class GenerateConst
55
56
  end
56
57
  str
57
58
  end
58
-
59
+
59
60
  def GenerateConst.wmq_const(path)
60
61
  str = <<END_OF_STRING
61
62
  ################################################################################
62
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
63
- #
64
- # Licensed under the Apache License, Version 2.0 (the "License");
65
- # you may not use this file except in compliance with the License.
66
- # You may obtain a copy of the License at
67
- #
68
- # http://www.apache.org/licenses/LICENSE-2.0
69
- #
70
- # Unless required by applicable law or agreed to in writing, software
71
- # distributed under the License is distributed on an "AS IS" BASIS,
72
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
73
- # See the License for the specific language governing permissions and
74
- # limitations under the License.
75
- ################################################################################
76
63
  #
77
64
  # WARNING: DO NOT MODIFY THIS FILE
78
65
  #
@@ -81,18 +68,18 @@ class GenerateConst
81
68
  ################################################################################
82
69
  module WMQ
83
70
  END_OF_STRING
84
- [ ['Connect Options','cmqc.h','MQCNO_',/(VERSION)|(CONN_TAG)|(HANDLE_SHARE)/],
71
+ [ ['Connect Options','cmqc.h','MQCNO_',/(VERSION)|(CONN_TAG)|(HANDLE_SHARE)|(_LENGTH)/],
85
72
  ['Open Options', 'cmqc.h','MQOO_' ],
86
73
  ['Close Options', 'cmqc.h','MQCO_'],
87
74
  ['Match Options', 'cmqc.h','MQMO_'],
88
75
  ['Message Format Options', 'cmqc.h','MQFMT_',/(_ARRAY)/],
89
- ['Get Message Options', 'cmqc.h','MQGMO_',/(VERSION)/],
76
+ ['Get Message Options', 'cmqc.h','MQGMO_',/(VERSION)|(LENGTH)|(MQGMO_BROWSE_HANDLE)|(MQGMO_BROWSE_CO_OP)/],
90
77
  ['Transport Types', 'cmqxc.h','MQXPT_'] ,
91
78
  ['Report Options', 'cmqc.h', 'MQRO_'],
92
79
  ['Message Types', 'cmqc.h', 'MQMT_'],
93
80
  ['Expiry', 'cmqc.h', 'MQEI_'],
94
81
  ['Feedback Values', 'cmqc.h', 'MQFB_'],
95
- ['Encoding Values', 'cmqc.h', 'MQENC_'],
82
+ ['Encoding Values', 'cmqc.h', 'MQENC_',/(MQENC_NORMAL)|(MQENC_REVERSED)|(MQENC_S390)|(MQENC_TNS)/],
96
83
  ['Coded Character Set Identifiers', 'cmqc.h', 'MQCCSI_'],
97
84
  ['Priority', 'cmqc.h', 'MQPRI_'],
98
85
  ['Persistence', 'cmqc.h', 'MQPER_'],
@@ -108,24 +95,10 @@ END_OF_STRING
108
95
  end
109
96
  str << "end\n"
110
97
  end
111
-
98
+
112
99
  def GenerateConst.admin_consts(path)
113
100
  str = <<END_OF_STRING
114
101
  ################################################################################
115
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
116
- #
117
- # Licensed under the Apache License, Version 2.0 (the "License");
118
- # you may not use this file except in compliance with the License.
119
- # You may obtain a copy of the License at
120
- #
121
- # http://www.apache.org/licenses/LICENSE-2.0
122
- #
123
- # Unless required by applicable law or agreed to in writing, software
124
- # distributed under the License is distributed on an "AS IS" BASIS,
125
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126
- # See the License for the specific language governing permissions and
127
- # limitations under the License.
128
- ################################################################################
129
102
  #
130
103
  # WARNING: DO NOT MODIFY THIS FILE
131
104
  #
@@ -142,7 +115,7 @@ END_OF_STRING
142
115
  str << "\n# #{item[0]}\n"
143
116
  str << GenerateConst.rb_const("#{path}/#{item[1]}", item[2], item[3])
144
117
  end
145
- GenerateConst.extract_const(path+'cmqc.h', 'MQ', /Queue\sAttributes/, /typedef/).each do |item|
118
+ GenerateConst.extract_const(path+'cmqc.h', 'MQ', /Queue\s+Attributes/, /General\s+Constants/).each do |item|
146
119
  str << " %-30s = #{item[1]}\n" % item[0]
147
120
  end
148
121
  str << "# Admin constants from cmqcfc.h\n"
@@ -151,14 +124,14 @@ END_OF_STRING
151
124
  end
152
125
  str << "end\n"
153
126
  end
154
-
127
+
155
128
  def self.generate(path, target_path='')
156
- File.open(File.join(target_path,'wmq_const_admin.rb'), 'w') {|file| file.write(GenerateConst.admin_consts(path))}
129
+ File.open(File.join(target_path,'constants_admin.rb'), 'w') {|file| file.write(GenerateConst.admin_consts(path))}
157
130
  puts 'Generated wmq_const_admin.rb'
158
- File.open(File.join(target_path,'wmq_const.rb'), 'w') {|file| file.write(GenerateConst.wmq_const(path))}
131
+ File.open(File.join(target_path,'constants.rb'), 'w') {|file| file.write(GenerateConst.wmq_const(path))}
159
132
  puts 'Generated wmq_const.rb'
160
133
  end
161
- end
134
+ end
162
135
 
163
136
  if $0 == __FILE__
164
137
  path = ARGV[0] || raise("Mandatory parameter: 'WebSphere MQ Include path' is missing")
@@ -1,6 +1,6 @@
1
1
  class GenerateReason
2
2
 
3
- #Extract Error Code Constants from Header files
3
+ # Extract Error Code Constants from Header files
4
4
  def GenerateReason.extract_const(filename, const_prefix)
5
5
  @constants = []
6
6
  File.open(filename) do |file|
@@ -16,8 +16,8 @@ class GenerateReason
16
16
  end
17
17
  @constants
18
18
  end
19
-
20
- #Extract Error Code Constants from Header files
19
+
20
+ # Extract Error Code Constants from Header files
21
21
  # Uses lazy print to collect duplicate values
22
22
  def GenerateReason.reason_case(filename, prefix)
23
23
  last_rc = nil
@@ -36,8 +36,8 @@ class GenerateReason
36
36
  end
37
37
  str
38
38
  end
39
-
40
- # The WebSphere MQ header files have several duplicate values,
39
+
40
+ # The WebSphere MQ header files have several duplicate values,
41
41
  # so need to exclude duplicates.
42
42
  def GenerateReason.selector_case(filename, prefix, excludes=nil, &block)
43
43
  GenerateReason.extract_const(filename,prefix).each do |item|
@@ -46,24 +46,10 @@ class GenerateReason
46
46
  block.call item
47
47
  end
48
48
  end
49
-
49
+
50
50
  def GenerateReason.wmq_reason(path)
51
51
  str = <<END_OF_STRING
52
52
  /* --------------------------------------------------------------------------
53
- * Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
54
- *
55
- * Licensed under the Apache License, Version 2.0 (the "License");
56
- * you may not use this file except in compliance with the License.
57
- * You may obtain a copy of the License at
58
- *
59
- * http://www.apache.org/licenses/LICENSE-2.0
60
- *
61
- * Unless required by applicable law or agreed to in writing, software
62
- * distributed under the License is distributed on an "AS IS" BASIS,
63
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
64
- * See the License for the specific language governing permissions and
65
- * limitations under the License.
66
- * --------------------------------------------------------------------------
67
53
  *
68
54
  * WARNING: DO NOT MODIFY THIS FILE
69
55
  *
@@ -97,9 +83,10 @@ END_OF_STRING
97
83
  [['cmqc.h', 'MQIA_'],
98
84
  ['cmqcfc.h', 'MQIACF_', ['MQIACF_ERROR_ID',
99
85
  'MQIACF_QUIESCE']],
100
- ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
101
- 'MQIACH_BYTES_RCVD',
102
- 'MQIACH_BUFFERS_RCVD']],
86
+ ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
87
+ 'MQIACH_BYTES_RCVD',
88
+ 'MQIACH_BUFFERS_RCVD',
89
+ 'MQIACH_MSGS_RCVD']],
103
90
  ['cmqcfc.h', 'MQIAMO_'],
104
91
  ['cmqcfc.h', 'MQIAMO64_', ['MQIAMO64_AVG_Q_TIME',
105
92
  'MQIAMO64_Q_TIME_AVG',
@@ -125,7 +112,7 @@ END_OF_STRING
125
112
  str_switch << " case %-30s: return ID_#{id};\n" % const[0]
126
113
  str_id_init << " ID_%-25s = rb_intern(\"#{id}\");\n" % id
127
114
  str << "static ID ID_#{id};\n"
128
- end
115
+ end
129
116
  end
130
117
 
131
118
  str << <<END_OF_STRING
@@ -156,8 +143,8 @@ END_OF_STRING
156
143
  [['cmqc.h', 'MQIA_'],
157
144
  ['cmqcfc.h', 'MQIACF_', ['MQIACF_ERROR_ID',
158
145
  'MQIACF_QUIESCE']],
159
- ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
160
- 'MQIACH_BYTES_RCVD',
146
+ ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
147
+ 'MQIACH_BYTES_RCVD',
161
148
  'MQIACH_BUFFERS_RCVD']],
162
149
  ['cmqcfc.h', 'MQIAMO_'],
163
150
  ['cmqcfc.h', 'MQIAMO64_', ['MQIAMO64_AVG_Q_TIME',
@@ -169,8 +156,8 @@ END_OF_STRING
169
156
  ].each do |item|
170
157
  str << " /* Consteants #{item[1]}* from #{item[0]} */\n"
171
158
  GenerateReason.selector_case(path+item[0], item[1], item[2]) do |const|
172
- str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
173
- end
159
+ str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
160
+ end
174
161
  end
175
162
  str << "\n *selector_type = MQIT_STRING;\n\n"
176
163
  # Character Selectors for Object Attributes
@@ -182,16 +169,16 @@ END_OF_STRING
182
169
  # ['cmqc.h', 'MQBA_'],
183
170
  # ['cmqcfc.h', 'MQBACF_'],
184
171
  # Group Selectors for Object Attributes
185
- # ['cmqcfc.h', 'MQGACF_']
172
+ # ['cmqcfc.h', 'MQGACF_']
186
173
  ].each do |item|
187
174
  str << " /* Constants #{item[1]}* from #{item[0]} */\n"
188
175
  GenerateReason.selector_case(path+item[0], item[1], item[2]) do |const|
189
- str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
190
- end
176
+ str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
177
+ end
191
178
  end
192
179
 
193
180
  str << <<END_OF_STRING
194
-
181
+
195
182
  rb_raise(rb_eArgError, "WMQ::QueueManager#execute [wmq_selector] Unknown selector supplied");
196
183
  }
197
184
 
@@ -208,9 +195,9 @@ END_OF_STRING
208
195
  end
209
196
  id = const[0].gsub('MQCMD_','').downcase
210
197
  str_id_init << " ID_%-25s = rb_intern(\"#{id}\");\n" % id
211
- str_if << "if(command_id == %-28s{ command = #{const[0]}; }\n" % "ID_#{const[0].gsub('MQCMD_','').downcase})"
198
+ str_if << "if(command_id == %-28s{ command = #{const[0]}; }\n" % "ID_#{const[0].gsub('MQCMD_','').downcase})"
212
199
  str << "static ID ID_#{id};\n"
213
- end
200
+ end
214
201
  str << <<END_OF_STRING
215
202
 
216
203
  void QueueManager_command_id_init()
@@ -221,7 +208,7 @@ void QueueManager_command_id_init()
221
208
  MQLONG wmq_command_lookup(ID command_id)
222
209
  {
223
210
  MQLONG command = 0;
224
- #{str_if}
211
+ #{str_if}
225
212
  else
226
213
  {
227
214
  rb_raise(rb_eArgError, "WMQ::QueueManager#execute [wmq_command_lookup] Unknown command supplied");
@@ -232,7 +219,7 @@ MQLONG wmq_command_lookup(ID command_id)
232
219
  END_OF_STRING
233
220
  str
234
221
  end
235
-
222
+
236
223
  def self.generate(path)
237
224
  File.open('wmq_reason.c', 'w') {|file| file.write(GenerateReason.wmq_reason(path))}
238
225
  puts 'Generated wmq_reason.c'
@@ -1,30 +1,15 @@
1
- ################################################################################
2
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- ################################################################################
16
1
  require 'erb'
17
2
 
18
3
  class GenerateStructs
19
-
4
+
20
5
  @@field_ignore_list = [ 'StrucId', 'Version' , 'StrucLength']
21
-
6
+
22
7
  # Store path to WebSphere MQ Structures
23
8
  def initialize(wmq_includepath, templates_path='.')
24
9
  @path = wmq_includepath
25
10
  @templates_path = templates_path
26
11
  end
27
-
12
+
28
13
  def extract_struct (filename, struct_name)
29
14
  properties_list = []
30
15
  line_number = 0
@@ -51,7 +36,7 @@ class GenerateStructs
51
36
  end
52
37
  properties_list
53
38
  end
54
-
39
+
55
40
  def rubyize_name(name)
56
41
  name.gsub(/::/, '/').
57
42
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
@@ -59,7 +44,7 @@ class GenerateStructs
59
44
  tr("-", "_").
60
45
  downcase
61
46
  end
62
-
47
+
63
48
  def self.test_rubyize_name
64
49
  test = self.new
65
50
  [['a', 'a'],
@@ -75,11 +60,11 @@ class GenerateStructs
75
60
  raise("rubyize_name('#{item[0]}') == #{str} != '#{item[1]})") if str != item[1]
76
61
  end
77
62
  end
78
-
63
+
79
64
  def generate_structs(erb)
80
65
  erb.result(binding)
81
66
  end
82
-
67
+
83
68
  def generate(target_filename = 'wmq_structs.c')
84
69
  erb = nil
85
70
  File.open(@templates_path+'/wmq_structs.erb') { |file| erb = ERB.new(file.read) }