
This avoids unnecessary duplicate constant warnings for C constants that are defined in two legs of an #ifdef.
38 lines
879 B
Ruby
38 lines
879 B
Ruby
# encoding: utf-8
|
|
|
|
module FlexNBD
|
|
|
|
# eeevil is his one and only name...
|
|
def self.read_constants
|
|
parents = []
|
|
current = File.expand_path(".")
|
|
while current != "/"
|
|
parents << current
|
|
current = File.expand_path( File.join( current, ".." ) )
|
|
end
|
|
|
|
source_root = parents.find do |dirname|
|
|
File.directory?( File.join( dirname, "src" ) )
|
|
end
|
|
|
|
fail "No source root!" unless source_root
|
|
|
|
headers = Dir[File.join( source_root, "src", "*.h" ) ]
|
|
|
|
headers.each do |header_filename|
|
|
txt_lines = File.readlines( header_filename )
|
|
txt_lines.each do |line|
|
|
if line =~ /^#\s*define\s+([A-Z0-9_]+)\s+(\d+)\s*$/
|
|
# Bodge until I can figure out what to do with #ifdefs
|
|
const_set($1, $2.to_i) unless constants.include?( $1 )
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
read_constants()
|
|
end # module FlexNBD
|
|
|
|
|