module EasySwig::HFilesManager
Public Class Methods
assoc_headers(api_node)
click to toggle source
# File lib/tasks/hfiles_manager.rb, line 6 def assoc_headers(api_node) api_nodes = api_node.api_nodes hfile_hash = Hash.new api_nodes.each { |api_n| hfile = api_n.file next if hfile.nil? filename = hfile.name if hfile_hash[filename] == nil params = {'node_type' => 'file', 'features' => api_n.features } hfile_hash[filename] = IncFile.new(params).assoc_with_node(hfile) hfile_hash[filename].assoc_inner_node(api_node) end api_n.header_file = hfile_hash[filename] hfile_hash[filename].assoc_inner_node(api_n) } hfile_hash.each_value { |f| f.ignore_inner_nodes puts f.name } hfiles = hfile_hash.values hfiles end
compare(fx, fy, files_set)
click to toggle source
# File lib/tasks/hfiles_manager.rb, line 64 def compare(fx, fy, files_set) num_incl_by_fx = num_included_by(fx, files_set) num_incl_by_fy = num_included_by(fy, files_set) num_incl_fx = num_includes(fx, files_set) num_incl_fy = num_includes(fy, files_set) if num_incl_by_fx == 0 && num_incl_by_fy == 0 return num_incl_fy <=> num_incl_fx end return -1 if num_incl_by_fx == 0 return 1 if num_incl_by_fy == 0 return (num_incl_fy - num_incl_by_fy) <=> (num_incl_fx - num_incl_by_fx) end
num_included_by(file, files_set)
click to toggle source
# File lib/tasks/hfiles_manager.rb, line 81 def num_included_by(file, files_set) file.files_including.map { |f| f.name }.select{ |f| files_set.include?(f) }.size end
num_includes(file, files_set)
click to toggle source
# File lib/tasks/hfiles_manager.rb, line 77 def num_includes(file, files_set) file.files_included.map { |f| f.name }.select { |f| files_set.include?(f) }.size end
sort_headers(files)
click to toggle source
# File lib/tasks/hfiles_manager.rb, line 34 def sort_headers(files) sorted = [] includes = {} while true break if files.empty? files_aux = files.map { |f| f.name } files = files.sort { |fx,fy| compare(fx, fy, files_aux) } includes = {} while true f = files.shift break if f.nil? incs = f.files_included.map { |x| x.name } t1 = files.select { |h| incs.include?(h.name) } t2 = sorted.select { |h| incs.include?(h.name) } t2.select! { |h| compare(h, f, files_aux) > 0} includes[f] = t1 includes[f] << t2.flatten t1.each { |v| files.delete(v) } t2.each { |v| sorted.delete(v) } files -= includes[f] end sorted.push(*includes.keys) files = includes.values.flatten end sorted.reverse end