Example #1
0
    def create_enums(self, d):
        kfh = CKoretFuzzyHashing()
        kfh.bsize = 1
        kfh.output_size = 8

        fuzzy_hashes = {}
        for key in d.keys():
            hash1, hash2, _ = kfh.hash_bytes(key).split(";")
            new_key = "%s-%s" % (hash1, hash2)
            if new_key in fuzzy_hashes:
                fuzzy_hashes[new_key].append(key)
            else:
                fuzzy_hashes[new_key] = [key]

        enums = {}
        enums[DEFAULT_ENUM] = []
        for key in fuzzy_hashes:
            l = fuzzy_hashes[key]
            if len(l) == 1:
                continue

            enum_name = self.get_enum_name(l)
            enums[enum_name] = []
            tmp = []
            for element in l:
                tmp.append("  %s = %s, " % (element, str(d[element])))

            tmp.sort()
            tmp.insert(0, "enum %s {" % enum_name)
            tmp.append("};")
            enums[enum_name] = "\n".join(tmp)

        return enums
Example #2
0
  def create_enums(self, d):
    kfh = CKoretFuzzyHashing()
    kfh.bsize = 1
    kfh.output_size = 8

    fuzzy_hashes = {}
    for key in d.keys():
      hash1, hash2, _ = kfh.hash_bytes(key).split(";")
      new_key = "%s-%s" % (hash1, hash2)
      if new_key in fuzzy_hashes:
        fuzzy_hashes[new_key].append(key)
      else:
        fuzzy_hashes[new_key] = [key]

    enums = {}
    enums[DEFAULT_ENUM] = []
    for key in fuzzy_hashes:
      l = fuzzy_hashes[key]
      if len(l) == 1:
        continue

      enum_name = self.get_enum_name(l)
      enums[enum_name] = []
      tmp = []
      for element in l:
        value = None
        if type(d[element]) is decimal.Decimal:
          eng_str = d[element].to_eng_string()
          if str(eng_str).find(".") == -1:
            value = "0x%08x" % long(eng_str)

        if value is None:
          value = str(d[element])
        tmp.append("  %s = %s, " % (element, value))

      tmp.sort()
      tmp.insert(0, "enum %s {" % enum_name)
      tmp.append("};")
      enums[enum_name] = "\n".join(tmp)

    return enums