Sha256: cdefcce7bdcc6e1ce6fffc9267ccef5b9652fbad34ce2609318b4722286d4879

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

# This is free and unencumbered software released into the public domain.

module FFIDB
  module Symbolic
    include Comparable

    ##
    # @param  [Symbolic] other
    # @return [Integer]
    def <=>(other)
      self.name <=> other.name
    end

    ##
    # @return [Symbol]
    def kind
      case
        when self.typedef? then :typedef
        when self.enum? then :enum
        when self.struct? then :struct
        when self.union? then :union
        when self.function? then :function
      end
    end

    ##
    # @return [Integer]
    def kind_weight
      case
        when self.typedef? then 1
        when self.enum? then 2
        when self.struct? then 3
        when self.union? then 4
        when self.function? then 5
      end
    end

    ##
    # @return [Boolean]
    def typedef?() return false end

    ##
    # @return [Boolean]
    def enum?() return false end

    ##
    # @return [Boolean]
    def struct?() return false end

    ##
    # @return [Boolean]
    def union?() return false end

    ##
    # @return [Boolean]
    def function?() return false end

    ##
    # @return [String]
    def to_yaml
      h = self.to_h
      h.transform_keys!(&:to_s)
      h.transform_values! { |v| v.is_a?(Hash) ? v.transform_keys!(&:to_s) : v }
      YAML.dump(h).gsub!("---\n", "--- !#{self.kind}\n")
    end
  end # Symbolic
end # FFIDB

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ffidb-0.13.0 lib/ffidb/symbolic.rb
ffidb-0.12.0 lib/ffidb/symbolic.rb