Sha256: 551963a57a785d431fb35389e0cdfeff6f5a1a05b2e01975a564365b37474f3f

Contents?: true

Size: 781 Bytes

Versions: 1

Compression:

Stored size: 781 Bytes

Contents

module Furnace
  module CFG
    class Node
      attr_reader :label, :operations

      def initialize(cfg, label, operations)
        @cfg, @label, @operations = cfg, label, operations
      end

      def entering_edges
        @cfg.edges.select { |e| e.target == self }
      end

      def leaving_edges
        @cfg.edges.select { |e| e.source == self }
      end

      def leaving_edge(source)
        leaving_edges.find { |e| e.source_operation == source }
      end

      def default_leaving_edge
        leaving_edge(nil)
      end

      def ==(other)
        self.label == other.label
      end

      def inspect
        if @label
          "<#{@label}:#{@operations.map(&:inspect).join ", "}>"
        else
          "<!exit>"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
furnace-0.0.1 lib/furnace/cfg/node.rb