module Ipxact::FigField

Attributes

field[R]
word_ct[R]

Public Instance Methods

gen_field_entries(_field, _word_ct) click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 10
def gen_field_entries(_field, _word_ct)
  @field = _field
  @word_ct = _word_ct

  entry = Element.new('entry')
  if width == 1
    entry[:colname] = col_start_index.to_s
  else
    entry[:namest] = (col_start_index).to_s
    entry[:nameend] = (col_end_index+1).to_s
  end
  entry[:valign] = 'middle'
  # entry[:outputclass] = 'rotate' if get_bit_width(name) > fig_bit_width # TODO fix this!!!
  entries = gen_field_access(entry)
  #entries << get_value_entries
end

Private Instance Methods

col_end_index() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 97
def col_end_index
  ms_pos - word_ct * REGFIG_MAX_ROWBITS
end
col_start_index() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 101
def col_start_index
  ls_pos - word_ct * REGFIG_MAX_ROWBITS + 1
end
field_name() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 88
def field_name
  n = field.locate('ipxact:name')
  n.empty? ? nil : n.first.text
end
gen_field_access(entry) click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 31
def gen_field_access(entry)
  read = entry
  write = Element.new('entry')

  #TODO pull out into Duxml#dclone?
  entry.attributes.each do |k,v| write[k] = v end
  unless readable?
    read[:outputclass] = 'shaded'
  end
  if readable? == writable?
    read[:morerows] = '1'
    name = readable? ? gen_field_name(read) : 'Reserved'
    return [name]
  elsif !writable?
    gen_field_name(read)
    write[:outputclass] = 'shaded'
  elsif !readable?
    gen_field_name(write)
  else
    # do nothing
  end
  [read, write]
end
gen_field_name(entry) click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 77
def gen_field_name(entry)
  if field_name.nil?
    entry << '-'
  else
    entry << Element.new('xref')
    entry.xref[:href] = get_xref
    entry.xref << field_name
  end
  entry
end
get_value_entries() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 67
def get_value_entries
  v = []
  width.times do |i|
    b = bits[i] ? bits[i] : 0
    v << e = Element.new('entry')
    e << b.to_s
  end
  v
end
get_xref() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 93
def get_xref
  "NOT_IMPLEMENTED" # TODO
end
ls_pos() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 109
def ls_pos
  field.bitOffset.text.to_i
end
ms_pos() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 113
def ms_pos
  field.bitOffset.text.to_i + field.bitWidth.text.to_i - 1
end
readable?() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 55
def readable?
  access = field.locate('ipxact:access').first
  access = source.access.text unless access
  access.include?('read')
end
width() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 105
def width
  field.bitWidth.text.to_i
end
writable?() click to toggle source
# File lib/ipxact/dita/fig_field.rb, line 61
def writable?
  access = field.locate('ipxact:access').first
  access = source.access.text unless access
  access.include?('write')
end