module BuildLogParser::Gem5Stats

Public Class Methods

get_key_sequence(str) click to toggle source
# File lib/buildlogparser/parsers/gem5.rb, line 62
def self.get_key_sequence(str)
  # split the key string into a sequence of symbols and strings
  keys = []
  fragments = str.split("::").reject { |f| f.empty? }
  fragments.each { |f|
    if Gem5Stats::valid_symbol_sequence?(f)
      keys.concat(Gem5Stats::to_symbol_sequence(f))
    else
      keys.push(f)
    end
  }
  return keys
end
insert_into_hash(hash, keys, value) click to toggle source
# File lib/buildlogparser/parsers/gem5.rb, line 76
def self.insert_into_hash(hash, keys, value)
  ptr = hash
  keys[0..-2].each { |k|
    ptr[k] ||= {}
    ptr = ptr[k]
  }
  ptr[keys[-1]] = value
end
to_symbol_sequence(str) click to toggle source
# File lib/buildlogparser/parsers/gem5.rb, line 57
def self.to_symbol_sequence(str)
  parts = str.split('.').reject { |f| f.empty? }
  return parts.map { |e| e.to_sym }
end
valid_symbol?(str) click to toggle source
# File lib/buildlogparser/parsers/gem5.rb, line 47
def self.valid_symbol?(str)
  str.match(/^\w+$/) != nil
end
valid_symbol_sequence?(str) click to toggle source
# File lib/buildlogparser/parsers/gem5.rb, line 51
def self.valid_symbol_sequence?(str)
  parts = str.split('.').reject { |f| f.empty? }
  parts.each { |e| return false unless Gem5Stats::valid_symbol?(e) }
  return true
end