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