indexing description: "Represents a module specification id" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" class P2P_MODULE_SPECIFICATION_ID inherit P2P_ID_UUID create make_from_urn, make, make_with_class feature {NONE} -- Initialization make (class_uuid, specification_uuid: like bytes) is -- Create module specification id with `specification_uuid' for module class `class_uuid' require Class_uuid_valid: class_uuid /= Void and class_uuid.count = uuid_bytes_count Spec_uuid_valid: specification_uuid /= Void and specification_uuid.count = uuid_bytes_count do initialize_bytes bytes.subcopy (class_uuid, 0, uuid_bytes_count - 1, class_uuid_msb) bytes.subcopy (specification_uuid, 0, uuid_bytes_count - 1, specification_uuid_msb) build_uuidformat end make_with_class (class_uuid: like bytes) is -- Create new module specification id with `class_uuid' and with new specification uuid require Class_uuid_valid: class_uuid /= Void and class_uuid.count = uuid_bytes_count do initialize_bytes bytes.subcopy (class_uuid, 0, uuid_bytes_count - 1, class_uuid_msb) create_random_uuid (bytes, specification_uuid_msb) build_uuidformat end feature -- Access flag_id_type: NATURAL_8 is 6 base_class: like bytes is -- Base class UUID do Result := bytes.subarray (class_uuid_msb, class_uuid_lsb) end feature -- Comparison has_same_baseclass (other: like Current): BOOLEAN is -- Has `other' id the same base class? do Result := base_class.is_equal (other.base_class) end is_of_baseclass (class_id: P2P_MODULE_CLASS_ID): BOOLEAN is -- Is `Current' based on class `class_id'? do Result := base_class.is_equal (class_id.base_class) end feature {NONE} -- Implementation Class_uuid_msb: INTEGER is 0 Class_uuid_lsb: INTEGER is 15 Specification_uuid_msb: INTEGER is 16 Specification_uuid_lsb: INTEGER is 31 end