def enums(self): name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict()) name_stable_map = {} for version in self.versions: logger.debug("version: {}".format(version.ir_version)) of_protocol = loxi_globals.ir[version.ir_version] for enum in of_protocol.enums: name_version_enum_map[enum.name][version] = enum stable = (enum.params.get('stable') == 'True') logger.debug("Enum: %s stable: %s", enum.name, stable) if not enum.name in name_stable_map: name_stable_map[enum.name] = stable else: if name_stable_map[enum.name] != stable: raise Exception("Inconsistent enum stability (should be caught " +\ " by IR)") enums = [ JavaEnum(name, name_stable_map[name], version_enum_map) for name, version_enum_map, in name_version_enum_map.items() ] # inelegant - need java name here enums = [ enum for enum in enums if enum.name not in self.enum_blacklist ] return enums
def __init__(self, c_name, version_enum_map): self.c_name = c_name self.name = "OF" + java_type.name_c_to_caps_camel("_".join( c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict( lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" self.metadata = model.enum_metadata_map[self.name]
def __init__(self, c_name, version_enum_map): self.c_name = c_name if c_name == "of_stats_types": self.name = "OFStatsType" else: self.name = "OF" + java_type.name_c_to_caps_camel("_".join(c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict(lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" self.metadata = model.enum_metadata_map[self.name]
def enums(self): name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict()) for version in self.versions: of_protocol = of_g.ir[version.int_version] for enum in of_protocol.enums: name_version_enum_map[enum.name][version] = enum enums = [ JavaEnum(name, version_enum_map) for name, version_enum_map, in name_version_enum_map.items() ] # inelegant - need java name here enums = [ enum for enum in enums if enum.name not in self.enum_blacklist ] return enums
def enums(self): name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict()) for version in self.versions: logger.info("version: {}".format(version.ir_version)) of_protocol = loxi_globals.ir[version.ir_version] for enum in of_protocol.enums: name_version_enum_map[enum.name][version] = enum enums = [JavaEnum(name, version_enum_map) for name, version_enum_map, in name_version_enum_map.items()] # inelegant - need java name here enums = [enum for enum in enums if enum.name not in self.enum_blacklist] return enums
def __init__(self, c_name, stable, version_enum_map): self.c_name = c_name self.stable = stable self.name = "OF" + java_type.name_c_to_caps_camel("_".join( c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict( lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" static_metadata = model.enum_metadata_map[self.name] if self.stable: # need this to look up wire_type, which does not matter any_version = version_enum_map.keys()[0] # if this is a 'stable' enum, i.e., its value won't change, add # a "Metadata" (virtual) field "StableValue" to it that returns # its wirevalue. stable_value = JavaModel.OFEnumPropertyMetadata( "StableValue", self.wire_type(any_version), value=lambda entry: entry.stable_value) self.metadata = JavaModel.OFEnumMetadata( properties=static_metadata.properties + (stable_value, ), to_string=static_metadata.to_string) else: self.metadata = static_metadata
def enums(self): name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict()) for version in self.versions: logger.info("version: {}".format(version.ir_version)) of_protocol = loxi_globals.ir[version.ir_version] for enum in of_protocol.enums: name_version_enum_map[enum.name][version] = enum enums = [ JavaEnum(name, version_enum_map) for name, version_enum_map, in name_version_enum_map.items() ] # inelegant - need java name here enums = [ enum for enum in enums if enum.name not in self.enum_blacklist ] return enums
def __init__(self, c_name, stable, version_enum_map): self.c_name = c_name self.stable = stable self.name = "OF" + java_type.name_c_to_caps_camel("_".join(c_name.split("_")[1:])) # Port_features has constants that start with digits self.name_prefix = "PF_" if self.name == "OFPortFeatures" else "" self.version_enums = version_enum_map entry_name_version_value_map = OrderedDefaultDict(lambda: OrderedDict()) for version, ir_enum in version_enum_map.items(): for ir_entry in ir_enum.entries: entry_name_version_value_map[ir_entry.name][version] = ir_entry.value self.entries = [ JavaEnumEntry(self, name, version_value_map) for (name, version_value_map) in entry_name_version_value_map.items() ] self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ] self.package = "org.projectfloodlight.openflow.protocol" static_metadata = model.enum_metadata_map[self.name] if self.stable: # need this to look up wire_type, which does not matter any_version = version_enum_map.keys()[0] # if this is a 'stable' enum, i.e., its value won't change, add # a "Metadata" (virtual) field "StableValue" to it that returns # its wirevalue. stable_value = JavaModel.OFEnumPropertyMetadata("StableValue", self.wire_type(any_version), value = lambda entry: entry.stable_value) self.metadata = JavaModel.OFEnumMetadata( properties=static_metadata.properties + (stable_value, ), to_string=static_metadata.to_string ) else: self.metadata = static_metadata