Class: AutoC::UserDefinedType
- Inherits:
-
Type
show all
- Defined in:
- lib/autoc/type.rb
Constant Summary
Instance Attribute Summary
Attributes inherited from Type
#type
Instance Method Summary
(collapse)
Methods inherited from Type
#abort, #assert, #calloc, #extern, #free, #inline, #malloc, #method_missing, #static, #write_decls, #write_defs, #write_exported_declarations, #write_exported_types, #write_implementations, #write_intf
Methods inherited from Code
#attach, #priority, #source_size, #write_decls, #write_defs, #write_intf
Constructor Details
Returns a new instance of UserDefinedType
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/autoc/type.rb', line 152
def initialize(opt)
@deps = []
v = :public
if [Symbol, String].include?(opt.class)
t = opt
elsif opt.is_a?(Hash)
t = opt[:type].nil? ? raise("type is not specified") : opt[:type]
[:ctor, :dtor, :copy, :equal, :less, :identify].each do |key|
instance_variable_set("@#{key}".to_sym, opt[key].to_s) unless opt[key].nil?
end
@deps << PublicDeclaration.new(opt[:forward]) unless opt[:forward].nil?
optv = opt[:visibility]
v = optv.nil? ? :public : optv
else
raise "failed to decode the argument"
end
super(t, v)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class AutoC::Type
Instance Method Details
- (Object) copy(dst, src)
179
180
181
|
# File 'lib/autoc/type.rb', line 179
def copy(dst, src)
@copy.nil? ? "(#{dst} = #{src})" : "#{@copy}(#{dst}, #{src})"
end
|
- (Object) ctor(obj)
171
172
173
|
# File 'lib/autoc/type.rb', line 171
def ctor(obj)
@ctor.nil? ? "(#{obj} = 0)" : "#{@ctor}(#{obj})"
end
|
- (Object) dtor(obj)
175
176
177
|
# File 'lib/autoc/type.rb', line 175
def dtor(obj)
@dtor.nil? ? nil : "#{@dtor}(#{obj})"
end
|
- (Object) entities
150
|
# File 'lib/autoc/type.rb', line 150
def entities; super + @deps end
|
- (Object) equal(lt, rt)
183
184
185
|
# File 'lib/autoc/type.rb', line 183
def equal(lt, rt)
@equal.nil? ? "(#{lt} == #{rt})" : "#{@equal}(#{lt}, #{rt})"
end
|
- (Object) identify(obj)
191
192
193
|
# File 'lib/autoc/type.rb', line 191
def identify(obj)
@identify.nil? ? "(size_t)(#{obj})" : "#{@identify}(#{obj})"
end
|
- (Object) less(lt, rt)
187
188
189
|
# File 'lib/autoc/type.rb', line 187
def less(lt, rt)
@less.nil? ? "(#{lt} < #{rt})" : "#{@less}(#{lt}, #{rt})"
end
|