Method: ClassHDL::HDLFunction#instance

Defined in:
lib/tdl/class_hdl/hdl_function.rb

#instanceObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/tdl/class_hdl/hdl_function.rb', line 74

def instance
    str = []
    if @return_type
        if @return_type.is_a? EnumStruct
            str.push "function #{@return_type.typedef_name} #{@name}(#{inst_port}); "
        elsif @return_type.is_a? StructMeta
            str.push "function #{@return_type.name} #{@name}(#{inst_port}); "
        else
            str.push "function #{@return_type.to_s} #{@name}(#{inst_port}); "
        end
    else
        str.push "function #{@name}(#{inst_port}); "
    end

    opertor_chains.each do |op|
        unless op.is_a? OpertorChain
            str.push op.instance(:assign).gsub(/^./){ |m| "    #{m}"}
        else 
            unless op.slaver
                rel_str = ClassHDL.compact_op_ch(op.instance(:assign,belong_to_module))
                str.push "    #{rel_str};"
            end
        end
        
    end
    str.push "endfunction:#{@name}\n"
    str.join("\n")
end