Class: ParseC::Function
- Inherits:
-
Object
- Object
- ParseC::Function
- Defined in:
- lib/parsec.rb
Overview
Defined function.
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Func name.
-
#variadic ⇒ Object
readonly
Variadic (end with ellipsis).
Instance Method Summary collapse
-
#addArgument(name, type) ⇒ Object
Add argument to functions argument list.
-
#argDecl(name) ⇒ Object
Get argument declarations String presentation.
-
#declaration ⇒ Object
Return functions declation as String.
-
#done ⇒ Object
Close function defition.
-
#initialize(name, variadic = false) ⇒ Function
constructor
Initialize function object.
-
#setReturnType(type) ⇒ Object
Set function return type.
Constructor Details
#initialize(name, variadic = false) ⇒ Function
Initialize function object. Default return type to void.
249 250 251 252 253 254 |
# File 'lib/parsec.rb', line 249 def initialize( name, variadic = false ) @name = name @variadic = variadic @args = {} @returnType = 'void' end |
Instance Attribute Details
#name ⇒ Object (readonly)
Func name.
240 241 242 |
# File 'lib/parsec.rb', line 240 def name @name end |
#variadic ⇒ Object (readonly)
Variadic (end with ellipsis).
243 244 245 |
# File 'lib/parsec.rb', line 243 def variadic @variadic end |
Instance Method Details
#addArgument(name, type) ⇒ Object
Add argument to functions argument list.
264 265 266 |
# File 'lib/parsec.rb', line 264 def addArgument( name, type ) @args[ name ] = type end |
#argDecl(name) ⇒ Object
Get argument declarations String presentation.
284 285 286 287 288 289 290 291 292 |
# File 'lib/parsec.rb', line 284 def argDecl( name ) if name # Has type. "#{@args[ name ]} #{name}" else # Void/variadic. @args[ name ] end end |
#declaration ⇒ Object
Return functions declation as String.
296 297 298 |
# File 'lib/parsec.rb', line 296 def declaration "#{@returnType} #{@name}( #{(@args.keys.map { |k| argDecl(k) }).join(', ')} );" end |
#done ⇒ Object
Close function defition. If argument list is empty, then arg list contains only void.
271 272 273 274 275 276 277 278 279 280 |
# File 'lib/parsec.rb', line 271 def done if @variadic @args[ nil ] = '...' end if @args.empty? @args = { nil => 'void' } end self end |
#setReturnType(type) ⇒ Object
Set function return type.
258 259 260 |
# File 'lib/parsec.rb', line 258 def setReturnType( type ) @returnType = type end |