class OroGen::Gen::RTT_CPP::TaskContextGeneration::GeneratedObject

Base class for code generation in tasks

Attributes

task[R]

Public Class Methods

code_snippet(name, with_generation = true) click to toggle source
# File lib/orogen/gen/tasks.rb, line 699
                def self.code_snippet(name, with_generation = true)
                    class_eval <<-EOD
                    def #{name}(code = nil, &block)
                        if !code && !block
                            return @#{name}
                        end
                        code = TaskContextGeneration.validate_code_object(code, block)
                        @#{name} = code
                        self
                    end
                    def add_to_#{name}_before(code, &block)
                        if !@#{name}
                            #{name}(code,&block)
                        else
                            code = TaskContextGeneration.validate_code_object(code, block)
                            old_code = @#{name}
                            @#{name} = lambda { |*args| code.call(*args) + old_code.call(*args) }
                        end
                        self
                    end
                    def add_to_#{name}_after(code, &block)
                        if !@#{name}
                            #{name}(code,&block)
                        else
                            code = TaskContextGeneration.validate_code_object(code, block)
                            old_code = @#{name}
                            @#{name} = lambda { |*args| old_code.call(*args) + code.call(*args) }
                        end
                        self
                    end
                    EOD
                    
                    if with_generation
                        class_eval <<-EOD
                        def generate_#{name}
                            if @#{name}
                                if result = @#{name}.call
                                    result
                                else ""
                                end
                            end
                        end
                        EOD
                    end
                end
new(task) click to toggle source
# File lib/orogen/gen/tasks.rb, line 745
def initialize(task)
    @task = task
    @doc = nil
end

Public Instance Methods

doc(*lines) click to toggle source
# File lib/orogen/gen/tasks.rb, line 750
def doc(*lines)
    if lines.empty?
        return @doc
    end

    comment = lines.join("\n * ") + "\n"
    if !@doc
        @doc = "/* #{comment}"
    else
        @doc = " * #{comment}"
    end
    self
end
with_indent(number, method) click to toggle source
# File lib/orogen/gen/tasks.rb, line 764
def with_indent(number, method)
    text = send("generate_#{method}")
    if text
        indent = " " * number
        indent + text.split("\n").join("\n#{indent}")
    end
end