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