class Fiddle::CStruct - RDoc Documentation

# class Fiddle::CStruct

A base class for objects representing a C structure

### Public Class Methods

entity_class() click to toggle source

accessor to `Fiddle::CStructEntity`

    # File ext/fiddle/lib/fiddle/struct.rb, line 12
    def CStruct.entity_class
      CStructEntity
    end

### Public Instance Methods

each() { |self| ... } click to toggle source

    # File ext/fiddle/lib/fiddle/struct.rb, line 68
    def each
      return enum_for(__function__) unless block_given?

      self.class.members.each do |name,|
        yield(self[name])
      end
    end

each_pair() { |name, self| ... } click to toggle source

    # File ext/fiddle/lib/fiddle/struct.rb, line 76
    def each_pair
      return enum_for(__function__) unless block_given?

      self.class.members.each do |name,|
        yield(name, self[name])
      end
    end

replace(another) click to toggle source

    # File ext/fiddle/lib/fiddle/struct.rb, line 92
    def replace(another)
      if another.nil?
        self.class.members.each do |name,|
          self[name] = nil
        end
      elsif another.respond_to?(:each_pair)
        another.each_pair do |name, value|
          self[name] = value
        end
      else
        another.each do |name, value|
          self[name] = value
        end
      end
      self
    end

to_h() click to toggle source

    # File ext/fiddle/lib/fiddle/struct.rb, line 84
    def to_h
      hash = {}
      each_pair do |name, value|
        hash[name] = unstruct(value)
      end
      hash
    end

### Private Instance Methods

unstruct(value) click to toggle source

    # File ext/fiddle/lib/fiddle/struct.rb, line 110
    def unstruct(value)
      case value
      when CStruct
        value.to_h
      when Array
        value.collect do |v|
          unstruct(v)
        end
      else
        value
      end
    end