Module: BOAST::Annotation

Includes:
PrivateStateAccessor
Included in:
Expression, For, Procedure, Variable, While
Defined in:
lib/BOAST/Language/Annotation.rb

Instance Method Summary collapse

Methods included from PrivateStateAccessor

#address_size, #address_size=, #annotate, #annotate=, #annotate?, #annotate_indepth_list, #annotate_indepth_list=, #annotate_level, #annotate_level=, #annotate_list, #annotate_list=, #architecture, #architecture=, #array_start, #array_start=, #chain_code, #chain_code=, #chain_code?, #debug, #debug=, #debug?, #debug_source, #debug_source=, #debug_source?, #decl_module, #decl_module=, #decl_module?, #default_align, #default_align=, #default_int_signed, #default_int_signed=, #default_int_signed?, #default_int_size, #default_int_size=, #default_real_size, #default_real_size=, #disable_openmp, #disable_openmp=, #disable_openmp?, #ffi, #ffi=, #ffi?, #fortran_line_length, #fortran_line_length=, #get_address_size, #get_annotate, #get_annotate_indepth_list, #get_annotate_level, #get_annotate_list, #get_architecture, #get_array_start, #get_chain_code, #get_debug, #get_debug_source, #get_decl_module, #get_default_align, #get_default_int_signed, #get_default_int_size, #get_default_real_size, #get_disable_openmp, #get_ffi, #get_fortran_line_length, #get_indent_increment, #get_indent_level, #get_keep_temp, #get_lang, #get_model, #get_optimizer_log, #get_optimizer_log_file, #get_output, #get_replace_constants, #get_use_vla, #get_verbose, #indent_increment, #indent_increment=, #indent_level, #indent_level=, #keep_temp, #keep_temp=, #keep_temp?, #lang, #lang=, #model, #model=, #optimizer_log, #optimizer_log=, #optimizer_log?, #optimizer_log_file, #optimizer_log_file=, #output, #output=, #replace_constants, #replace_constants=, #replace_constants?, #set_address_size, #set_annotate, #set_annotate_indepth_list, #set_annotate_level, #set_annotate_list, #set_architecture, #set_array_start, #set_chain_code, #set_debug, #set_debug_source, #set_decl_module, #set_default_align, #set_default_int_signed, #set_default_int_size, #set_default_real_size, #set_disable_openmp, #set_ffi, #set_fortran_line_length, #set_indent_increment, #set_indent_level, #set_keep_temp, #set_lang, #set_model, #set_optimizer_log, #set_optimizer_log_file, #set_output, #set_replace_constants, #set_use_vla, #set_verbose, #use_vla, #use_vla=, #use_vla?, #verbose, #verbose=, #verbose?

Instance Method Details

#annotate_array(a, level) ⇒ Object



30
31
32
33
34
# File 'lib/BOAST/Language/Annotation.rb', line 30

def annotate_array(a, level)
  return a.collect { |e|
    annotate_var(e, level)
  }
end

#annotate_indepth?(level) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
# File 'lib/BOAST/Language/Annotation.rb', line 7

def annotate_indepth?(level)
  return false if level > annotate_level
  return false unless annotate_indepth_list.include?(self.class.name.gsub("BOAST::", ""))
  return true
end

#annotate_scalar(s, level) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/BOAST/Language/Annotation.rb', line 18

def annotate_scalar(s, level)
  if s.is_a?(Annotation) and s.annotate_indepth?(level + 1) then
    return { s.annotation_identifier => s.annotation(level + 1) }
  elsif s.is_a?(Numeric)
    return s
  else
    str = s.to_s
    str = nil if str == ''
    return str
  end
end

#annotate_var(v, level) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/BOAST/Language/Annotation.rb', line 36

def annotate_var(v, level)
  if v.is_a?(Array) then
    return annotate_array(v, level)
  else
    return annotate_scalar(v, level)
  end
end

#annotation(level) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/BOAST/Language/Annotation.rb', line 44

def annotation(level)
  anns = {}
  self.class.const_get(:ANNOTATIONS).each { |a|
    var_sym = ("@" + a.to_s).to_sym
    var = self.instance_variable_get(var_sym)
    anns[a] = annotate_var(var, level)
  }
  return anns
end

#annotation_identifierObject



13
14
15
16
# File 'lib/BOAST/Language/Annotation.rb', line 13

def annotation_identifier
  name = self.class.name.gsub("BOAST::", "")
  return "#{name}#{annotate_number(name)}"
end