#!/usr/bin/env ruby ARRAY_SIZE = 3 def main is_stub = true Dir.entries(".").each do |file| if(file =~ /axis2_stub_(.*).h/) is_stub = true elsif(file =~ /axis2_skel_(.*).h/) is_stub = false end end if(is_stub) generate_stub else generate_skel end end #function to build the adb object def build_adb obj, is_array=false obj =~ /adb_(.*)/ short_name = $1 $adb_no = $adb_no == nil ? 0: $adb_no +1 var_name = "_#{short_name.downcase}#{$adb_no}" adb_obj_header = "#{obj}.h" declares = %- #{obj}_t *#{var_name};- calls = %- #{var_name} = #{obj}_create(env);- last_lines = Array.new 5.times do |i| last_lines[i] = "" end read_matched_file %r-#{adb_obj_header}- do |content| content.each_line do |line| last_lines.shift last_lines += [line] lines = last_lines.join "" $match_worked = false if(lines =~ /axis2_status_t\s*AXIS2_CALL\s*#{obj}_set_(.*)_nil\(\s*#{obj}_t\s*\*\s* .*,\s*const axutil_env_t\s*\*env,\s*(.*)\s+[^\s]+\);/) elsif(lines =~ /axis2_status_t\s*AXIS2_CALL\s*#{obj}_set_(.*)_nil_at\(\s*#{obj}_t\s*\*\s* .*,\s*const axutil_env_t\s*\*env,\s*(.*)\s+[^\s]+\);/) elsif(lines =~ /axis2_status_t\s*AXIS2_CALL\s*#{obj}_set_(.*)\(\s*#{obj}_t\s*\*\s* .*,\s*const axutil_env_t\s*\*env,\s*(.*)\s+[^\s]+\);/) method_post_fix = $1 type = $2 setter_adder = "set" match_worked = true demo_adb_type = build_types(obj, type, setter_adder, method_post_fix, var_name, false) declares += demo_adb_type[:declares] calls += demo_adb_type[:calls] elsif(lines =~ /axis2_status_t\s*AXIS2_CALL\s*#{obj}_add_(.*)\(\s*#{obj}_t\s*\*\s* .*,\s*const axutil_env_t\s*\*env,\s*(.*)\s+[^\s]+\);/) method_post_fix = $1 type = $2 setter_adder = "add" match_worked = true index = "i" + $loop_no.to_s declare_commons index calls += %- for(#{index} = 0; #{index} < #{ARRAY_SIZE}; #{index} ++) {- $loop_no = $loop_no +1 demo_adb_type = build_types(obj, type, setter_adder, method_post_fix, var_name, true) declares += demo_adb_type[:declares] calls += write_code(demo_adb_type[:calls], 1) calls += %- }- $loop_no = $loop_no -1 end end end {:declares => declares, :calls => calls, :var => var_name } end def build_types obj, type, setter_adder, method_post_fix, var_name, is_array declares = "" calls = "" if(type =~ /adb/) #i.e. just another adb object type =~ /(.*)_t\s*\*/ #just to skip the spaces and * demo_adb = build_adb $1, is_array declares = demo_adb[:declares] calls = demo_adb[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_adb[:var]});- elsif(type =~ /axis2_char_t\s*\*/) demo_str = string_generator is_array declares = demo_str[:declares] calls = demo_str[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_str[:var]});- elsif(type =~ /axutil_date_time_t\s*\*/) demo_date = date_generator is_array declares = demo_date[:declares] calls = demo_date[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_date[:var]});- elsif(type =~ /axutil_uri_t\s*\*/) demo_uri = uri_generator is_array declares = demo_uri[:declares] calls = demo_uri[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_uri[:var]});- elsif(type =~ /axis2_byte_t/) demo_byte = byte_generator is_array declares = demo_byte[:declares] calls = demo_byte[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_byte[:var]});- elsif(type =~ /axis2_bool_t/) demo_bool = bool_generator is_array declares = demo_bool[:declares] calls = demo_bool[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_bool[:var]});- elsif(type =~ /axutil_qname_t\s*\*/) demo_qname = qname_generator is_array declares = demo_qname[:declares] calls = demo_qname[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_qname[:var]});- elsif(type =~ /axutil_base64_binary_t\s*\*/) demo_base64_binary = base64_binary_generator is_array declares = demo_base64_binary[:declares] calls += demo_base64_binary[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_base64_binary[:var]});- elsif(type =~ /axutil_duration_t\s*\*/) demo_duration = duration_generator is_array declares = demo_duration[:declares] calls += demo_duration[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_duration[:var]});- elsif(type =~ /axiom_node_t\s*\*/) demo_node = node_generator is_array declares = demo_node[:declares] calls = demo_node[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_node[:var]});- elsif(type =~ /int/) demo_int = int_generator is_array declares = demo_int[:declares] calls = demo_int[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_int[:var]});- elsif(type =~ /long/) demo_long = long_generator is_array declares = demo_long[:declares] calls = demo_long[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_long[:var]});- elsif(type =~ /short/) demo_short = short_generator is_array declares = demo_short[:declares] calls = demo_short[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_short[:var]});- elsif(type =~ /float/) demo_float = float_generator is_array declares = demo_float[:declares] calls = demo_float[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_float[:var]});- elsif(type =~ /double/) demo_double = double_generator is_array declares = demo_double[:declares] calls = demo_double[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_double[:var]});- elsif(type =~ /char/) demo_char = char_generator is_array declares = demo_char[:declares] calls = demo_char[:calls] calls += %- #{obj}_#{setter_adder}_#{method_post_fix}(#{var_name}, env, #{demo_char[:var]});- end { :declares => declares, :calls => calls } end #function to extract from adb object def extract_adb obj, is_array=false, skip_declares=false obj =~ /adb_(.*)/ short_name = $1 $adb_no = $adb_no == nil ? 0: $adb_no +1 var_name = "_#{short_name.downcase}#{$adb_no}" adb_obj_header = "#{obj}.h" declares = "" if(!skip_declares) declares = %- #{obj}_t *#{var_name};- end calls = "" last_lines = Array.new 4.times do |i| last_lines[i] = "" end read_matched_file %r-#{adb_obj_header}- do |content| content.each_line do |line| last_lines.shift last_lines += [line] lines = last_lines.join "" $match_worked = false if(lines =~ /([^\s]*)\s*AXIS2_CALL\s*#{obj}_get_(.*)_at\(\s*#{obj}_t\s*\*\s* .*,\s*const axutil_env_t\s*\*env,\s*int\s*i\s*\);/) method_post_fix = $2 type = $1 setter_adder = "_at" match_worked = true index = "i" + $loop_no.to_s declare_commons index demo_adb_type = extract_types(obj, type, setter_adder, method_post_fix, var_name, true) size_of_caller = "#{obj}_sizeof_#{method_post_fix}(#{var_name}, env)" calls += %- for(#{index} = 0; #{index} < #{size_of_caller}; #{index} ++) {- $loop_no = $loop_no +1 declares += demo_adb_type[:declares] calls += write_code(demo_adb_type[:calls], 1) calls += %- }- $loop_no = $loop_no -1 elsif(lines =~ /([^\s]*)\s*AXIS2_CALL\s*#{obj}_get_(.*)\(\s*#{obj}_t\s*\*\s* .*,\s*const axutil_env_t\s*\*env\);/) method_post_fix = $2 type = $1 setter_adder = "" match_worked = true demo_adb_type = extract_types(obj, type, setter_adder, method_post_fix, var_name, false) declares += demo_adb_type[:declares] calls += demo_adb_type[:calls] end end end {:declares => declares, :calls => calls, :var => var_name } end def extract_types obj, type, setter_adder, method_post_fix, var_name, is_array declares = "" calls = "" post_fix = "" index = "i" + $loop_no.to_s if(is_array) post_fix = ", #{index}" end if(type =~ /adb/) #i.e. just another adb object type =~ /\s*([^\s]*)_t\s*\*/ #just to skip the spaces and * demo_adb = extract_adb $1, is_array declares = demo_adb[:declares] calls = %- #{demo_adb[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_adb[:calls] elsif(type =~ /axis2_char_t\s*\*/) demo_str = string_extractor is_array declares = demo_str[:declares] calls = %- #{demo_str[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_str[:calls] elsif(type =~ /axutil_date_time_t\s*\*/) demo_date = date_extractor is_array declares = demo_date[:declares] calls = %- #{demo_date[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_date[:calls] elsif(type =~ /axutil_uri_t\s*\*/) demo_uri = uri_extractor is_array declares = demo_uri[:declares] calls = %- #{demo_uri[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_uri[:calls] elsif(type =~ /axis2_byte_t/) demo_byte = byte_extractor is_array declares = demo_byte[:declares] calls = %- #{demo_byte[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_byte[:calls] elsif(type =~ /axis2_bool_t/) demo_bool = bool_extractor is_array declares = demo_bool[:declares] calls = %- #{demo_bool[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_bool[:calls] elsif(type =~ /axutil_qname_t\s*\*/) demo_qname = qname_extractor is_array declares = demo_qname[:declares] calls = %- #{demo_qname[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_qname[:calls] elsif(type =~ /axutil_base64_binary_t\s*\*/) demo_base64_binary = base64_binary_extractor is_array declares = demo_base64_binary[:declares] calls = %- #{demo_base64_binary[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_base64_binary[:calls] elsif(type =~ /axutil_duration_t\s*\*/) demo_duration = duration_extractor is_array declares = demo_duration[:declares] calls = %- #{demo_duration[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_duration[:calls] elsif(type =~ /axiom_node_t\s*\*/) demo_node = node_extractor is_array declares = demo_node[:declares] calls = %- #{demo_node[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_node[:calls] elsif(type =~ /int/) demo_int = int_extractor is_array declares = demo_int[:declares] calls = %- #{demo_int[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_int[:calls] elsif(type =~ /long/) demo_long = long_extractor is_array declares = demo_long[:declares] calls = %- #{demo_long[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_long[:calls] elsif(type =~ /short/) demo_short = short_extractor is_array declares = demo_short[:declares] calls = %- #{demo_short[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_short[:calls] elsif(type =~ /float/) demo_float = float_extractor is_array declares = demo_float[:declares] calls = %- #{demo_float[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_float[:calls] elsif(type =~ /double/) demo_double = double_extractor is_array declares = demo_double[:declares] calls = %- #{demo_double[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_double[:calls] elsif(type =~ /char/) demo_char = char_extractor is_array declares = demo_char[:declares] calls = %- #{demo_char[:var]} = #{obj}_get_#{method_post_fix}#{setter_adder}(#{var_name}, env#{post_fix});- calls += demo_char[:calls] end { :declares => declares, :calls => calls, } end #generate the function def generate_stub_func stub_name, method, request, response $adb_no = 0; $loop_no = 0; $local_hash = {} $local_declares = ""; build_obj = build_adb request extract_obj = extract_adb response $proto_str += %- void #{method}_demo(axis2_stub_t *stub, const axutil_env_t *env);- $call_str += %- #{method}_demo(stub, env);- $func_str += %- void #{method}_demo(axis2_stub_t *stub, const axutil_env_t *env) { #{write_code($local_declares, 1)} #{write_code(build_obj[:declares], 1)} #{write_code(extract_obj[:declares], 1)} /* Build the request adb */ #{write_code(build_obj[:calls], 1)} /* Finished building the request, time to call the service */ #{extract_obj[:var]} = axis2_stub_op_#{stub_name}_#{method}(stub, env, #{build_obj[:var]}); /* Extract the response */ #{write_code(extract_obj[:calls], 1)} }- end def write_code string, num num.times do string.gsub!(/\n/, "\n "); end string end #generate the stub def generate_stub $proto_str = "" $call_str = "" $func_str = "" stub_name = "" read_matched_file /axis2_stub_(.*)\.h/ do |content| if(content =~ /axis2_stub_create_(.*)\(/) stub_name = $1 end #just read two lines at one to match with pattern last_line = "" last_before_line = "" content.each_line do |line| last_three_lines = last_before_line + last_line + line if(last_three_lines =~ /(adb_.*)_t\*\s* axis2_stub_op_#{stub_name}_(.*)\(\s*axis2_stub_t \*stub,\s*const axutil_env_t \*env,\s*(adb_.*)_t\s*\*\s*(.*)\);/) generate_stub_func stub_name, $2, $3, $1 end last_before_line = last_line last_line = line end end open('demo.c', 'w') do |f| f << stub_template($proto_str, $call_str, stub_name) f << $func_str f << "\n" end end #generate the skel def generate_skel $proto_str = "" $call_str = "" $func_str = "" skel_name = "" read_matched_file /axis2_skel_(.*)\.c/ do |content| if(content =~ /\#include\s*"axis2_skel_(.*).h"/) skel_name = $1 end #just read last few lines at one to match with pattern last_lines = Array.new 6.times do |i| last_lines[i] = "" end content.each_line do |line| last_lines.shift last_lines += [line] lines = last_lines.join "" if(lines =~ /(adb_.*)_t\*\s*axis2_skel_#{skel_name}_(.*)\(const axutil_env_t \*env\s*,\s*(adb_.*)_t\s*\*\s*(.*)\)\s*\{([^}]*)\}/) #p "#{$2} #{$3} #{$1}" content = fill_skel_func skel_name, $2, $3, $1, content, $& end end open("axis2_skel_#{skel_name}2.c", 'w') do |f| f << content end end end #fill the skel function def fill_skel_func skel_name, method, request, response, content, original $adb_no = 0; $loop_no = 0; $local_hash = {} $local_declares = ""; extract_obj = extract_adb(request, false, true) build_obj = build_adb response func_str = %- #{response}_t* axis2_skel_#{skel_name}_#{method}(const axutil_env_t *env, #{request}_t *#{extract_obj[:var]}) { #{write_code($local_declares, 1)} #{write_code(build_obj[:declares], 1)} #{write_code(extract_obj[:declares], 1)} /* Extract the request */ #{write_code(extract_obj[:calls], 1)} /* Build the response adb */ #{write_code(build_obj[:calls], 1)} return #{build_obj[:var]}; }- content.gsub(original, write_code(func_str, 2)) end #open a file with the name matches with file_pattern #and read the content as block argument def read_matched_file file_pattern dir_list = Dir.entries(".") dir_list.each do |file| if(file =~ file_pattern) open(file) do |f| content = f.read yield content end return end end end def string_generator is_array $str_no = ($str_no == nil)? 0: $str_no + 1 {:declares => %- axis2_char_t *str_#{$str_no};-, :calls => %- str_#{$str_no} = "demo string id: #{$str_no}";-, :var => "str_#{$str_no}" } end def date_generator is_array $date_no = ($date_no == nil)? 0: $date_no + 1 {:declares => %- axutil_date_time_t *date_#{$date_no};-, :calls => %- date_#{$date_no} = axutil_date_time_create_with_offset(env, #{$date_no*10000});-, :var => "date_#{$date_no}" } end def uri_generator is_array $uri_no = ($uri_no == nil)? 0: $uri_no + 1 {:declares => %- axutil_uri_t *uri_#{$uri_no};-, :calls => %- uri_#{$uri_no} = axutil_uri_parse_string(env, "http://somewhere.somedomain\##{$uri_no}");-, :var => "uri_#{$uri_no}" } end def bool_generator is_array $bool_no = ($bool_no == nil)? 0: $bool_no + 1 {:declares => %- axis2_bool_t bool_#{$bool_no};-, :calls => %- bool_#{$bool_no} = #{$bool_no%2 ==0? "AXIS2_TRUE":"AXIS2_FALSE"};-, :var => "bool_#{$bool_no}" } end def qname_generator is_array $qname_no = ($qname_no == nil)? 0: $qname_no + 1 {:declares => %- axutil_qname_t *qname_#{$qname_no};-, :calls => %- qname_#{$qname_no} = axutil_qname_create(env, "foo\##{$qname_no}", "http://somewhere.somedomain\##{$qname_no}", "qn#{$qname_no}");-, :var => "qname_#{$qname_no}" } end def base64_binary_generator is_array $base64_binary_no = ($base64_binary_no == nil)? 0: $base64_binary_no + 1 {:declares => %- axutil_base64_binary_t *base64_binary_#{$base64_binary_no};-, :calls => %- base64_binary_#{$base64_binary_no} = axutil_base64_binary_create_with_encoded_binary(env, "isnt this appear like encoded binary#{$base64_binary_no}");-, :var => "base64_binary_#{$base64_binary_no}" } end def duration_generator is_array $duration_no = ($duration_no == nil)? 0: $duration_no + 1 {:declares => %- axutil_duration_t *duration_#{$duration_no};-, :calls => %- duration_#{$duration_no} = axutil_duration_create_from_values(env, AXIS2_TRUE, #{$duration_no}, #{$duration_no}, #{$duration_no}, #{$duration_no}, #{$duration_no}, #{$duration_no});-, :var => "duration_#{$duration_no}" } end def node_generator is_array $node_no = ($node_no == nil)? 0: $node_no + 1 {:declares => %- axiom_node_t *node_#{$node_no}; axiom_namespace_t *nodens#{$node_no};-, :calls => %- nodens#{$node_no} = axiom_namespace_create (env, "http://somenode.somewhere\##{$node_no}/", "nodens#{$node_no}"); axiom_element_create(env, NULL, "nodetext#{$node_no}", nodens#{$node_no}, &node_#{$node_no});-, :var => "node_#{$node_no}" } end def int_generator is_array $int_no = ($int_no == nil)? 0: $int_no + 1 {:declares => %- int int_#{$int_no};-, :calls => %- int_#{$int_no} = #{$int_no};-, :var => "int_#{$int_no}" } end def byte_generator is_array $byte_no = ($byte_no == nil)? 0: $byte_no + 1 {:declares => %- axis2_byte_t byte_#{$byte_no};-, :calls => %- byte_#{$byte_no} = #{$byte_no};-, :var => "byte_#{$byte_no}" } end def long_generator is_array $long_no = ($long_no == nil)? 0: $long_no + 1 {:declares => %- long long_#{$long_no};-, :calls => %- long_#{$long_no} = #{$long_no};-, :var => "long_#{$long_no}" } end def short_generator is_array $short_no = ($short_no == nil)? 0: $short_no + 1 {:declares => %- short short_#{$short_no};-, :calls => %- short_#{$short_no} = #{$short_no};-, :var => "short_#{$short_no}" } end def double_generator is_array $double_no = ($double_no == nil)? 0: $double_no + 1 {:declares => %- double double_#{$double_no};-, :calls => %- double_#{$double_no} = #{$double_no};-, :var => "double_#{$double_no}" } end def float_generator is_array $float_no = ($float_no == nil)? 0: $float_no + 1 {:declares => %- float float_#{$float_no};-, :calls => %- float_#{$float_no} = #{$float_no};-, :var => "float_#{$float_no}" } end def char_generator is_array $char_no = ($char_no == nil)? 0: $char_no + 1 {:declares => %- axis2_char_t char_#{$char_no};-, :calls => %- char_#{$char_no} = #{$char_no};-, :var => "char_#{$char_no}" } end #keep on touch with local variables used in common def declare_commons var_name if($local_hash[var_name] == nil) case var_name when "temp_str" $local_declares += %- axis2_char_t temp_str[128];- when /i\d+/ $local_declares += %- int #{var_name};- end end $local_hash[var_name] = true; end # set of extractors def string_extractor is_array $str_no = ($str_no == nil)? 0: $str_no + 1 {:declares => %- axis2_char_t *str_#{$str_no};-, :calls => %- printf("Returned String: %s\\n", str_#{$str_no});-, :var => "str_#{$str_no}" } end def date_extractor is_array $date_no = ($date_no == nil)? 0: $date_no + 1 {:declares => %- axutil_date_time_t *date_#{$date_no};-, :calls => %- printf("Returned Date: %s\\n", axutil_date_time_serialize_time(date_#{$date_no}, env));-, :var => "date_#{$date_no}" } end def uri_extractor is_array $uri_no = ($uri_no == nil)? 0: $uri_no + 1 {:declares => %- axutil_uri_t *uri_#{$uri_no};-, :calls => %- printf("Returned Array: %s\\n", axutil_uri_to_string(uri_#{$uri_no}, env, 0));-, :var => "uri_#{$uri_no}" } end def bool_extractor is_array $bool_no = ($bool_no == nil)? 0: $bool_no + 1 {:declares => %- axis2_bool_t bool_#{$bool_no};-, :calls => %- printf("Returned Bool: %s\\n", bool_#{$bool_no}?"TRUE":"FALSE");-, :var => "bool_#{$bool_no}" } end def qname_extractor is_array $qname_no = ($qname_no == nil)? 0: $qname_no + 1 {:declares => %- axutil_qname_t *qname_#{$qname_no};-, :calls => %- printf("Returned Qname: %s\\n", axutil_qname_to_string(qname_#{$qname_no}, env));-, :var => "qname_#{$qname_no}" } end def base64_binary_extractor is_array $base64_binary_no = ($base64_binary_no == nil)? 0: $base64_binary_no + 1 {:declares => %- axutil_base64_binary_t *base64_binary_#{$base64_binary_no};-, :calls => %- printf("Returned Base64: %s\\n", axutil_base64_binary_get_encoded_binary(base64_binary_#{$base64_binary_no}, env));-, :var => "base64_binary_#{$base64_binary_no}" } end def duration_extractor is_array $duration_no = ($duration_no == nil)? 0: $duration_no + 1 {:declares => %- axutil_duration_t *duration_#{$duration_no};-, :calls => %- printf("Returned Duration: %s\\n", axutil_duration_serialize_duration(duration_#{$duration_no}, env));-, :var => "duration_#{$duration_no}" } end def node_extractor is_array $node_no = ($node_no == nil)? 0: $node_no + 1 {:declares => %- axiom_node_t *node_#{$node_no};-, :calls => %- printf("Returned Node: %s\\n", axiom_node_to_string(node_#{$node_no}, env));-, :var => "node_#{$node_no}" } end def int_extractor is_array $int_no = ($int_no == nil)? 0: $int_no + 1 {:declares => %- int int_#{$int_no};-, :calls => %- printf("Returned int: %d\\n", int_#{$int_no});-, :var => "int_#{$int_no}" } end def byte_extractor is_array $byte_no = ($byte_no == nil)? 0: $byte_no + 1 {:declares => %- axis2_byte_t byte_#{$byte_no};-, :calls => %- printf("Returned Byte: %d\\n", byte_#{$byte_no});-, :var => "byte_#{$byte_no}" } end def long_extractor is_array $long_no = ($long_no == nil)? 0: $long_no + 1 {:declares => %- long long_#{$long_no};-, :calls => %- printf("Returned Long: %d\\n", long_#{$long_no});-, :var => "long_#{$long_no}" } end def short_extractor is_array $short_no = ($short_no == nil)? 0: $short_no + 1 {:declares => %- short short_#{$short_no};-, :calls => %- printf("Returned Short: %d\\n", short_#{$short_no});-, :var => "short_#{$short_no}" } end def double_extractor is_array $double_no = ($double_no == nil)? 0: $double_no + 1 {:declares => %- double double_#{$double_no};-, :calls => %- printf("Returned Double: %f\\n", double_#{$double_no});-, :var => "double_#{$double_no}" } end def float_extractor is_array $float_no = ($float_no == nil)? 0: $float_no + 1 {:declares => %- float float_#{$float_no};-, :calls => %- printf("Returned Float: %f\\n", float_#{$float_no});-, :var => "float_#{$float_no}" } end def char_extractor is_array $char_no = ($char_no == nil)? 0: $char_no + 1 {:declares => %- axis2_char_t char_#{$char_no};-, :calls => %- printf("Returned Char: %c\\n", char_#{$char_no});-, :var => "char_#{$char_no}" } end #returns the stub templates def stub_template prototypes, calls, service_name #service_name="demo" dir_list = Dir.entries(".") dir_list.each do |file| if(file =~ /axis2_stub_(.*).h/) #service_name = $1 end end %- #include "axis2_stub_#{service_name}.h" #include #include #include #include #include #{prototypes} int main(int argc, char **argv) { /** the core variables */ axutil_env_t *env = NULL; axis2_char_t *client_home = NULL; axis2_char_t *endpoint_uri = NULL; axis2_stub_t *stub = NULL; endpoint_uri = "http://localhost:9090/axis2/services/#{service_name}"; env = axutil_env_create_all("alltest.log", AXIS2_LOG_LEVEL_TRACE); client_home = AXIS2_GETENV("AXIS2C_HOME"); stub = axis2_stub_create_#{service_name}(env, client_home, endpoint_uri); #{write_code(calls, 1)} return 0; }- end main