def _build_one_methods(props, other_props=nil)
name = props.value(:name)
other_role = other_props && other_props.value(:name)
if props.value(:derived)
build_derived_method(name, props, :one)
else
@@one_read_builder ||= ERB.new "\ndef get<%= firstToUpper(name) %>\n<% if !props.reference? && props.value(:defaultValueLiteral) %>\n<% defVal = props.value(:defaultValueLiteral) %>\n<% check_default_value_literal(defVal, props) %>\n<% defVal = '\"'+defVal+'\"' if props.impl_type == String %>\n<% defVal = ':'+defVal if props.impl_type.is_a?(DataTypes::Enum) && props.impl_type != DataTypes::Boolean %>\n(defined? @<%= name %>) ? @<%= name %> : <%= defVal %>\n<% else %>\n@<%= name %>\n<% end %>\nend\n<% if name != \"class\" %>\nalias <%= name %> get<%= firstToUpper(name) %>\n<% end %>\n\n"
self::ClassModule.module_eval(@@one_read_builder.result(binding))
end
if props.value(:changeable)
@@one_write_builder ||= ERB.new "\ndef set<%= firstToUpper(name) %>(val)\nreturn if (defined? @<%= name %>) && val == @<%= name %>\n<%= type_check_code(\"val\", props) %>\noldval = @<%= name %>\n@<%= name %> = val\n<% if other_role %>\noldval._unregister<%= firstToUpper(other_role) %>(self) unless oldval.nil? || oldval.is_a?(MMGeneric)\nval._register<%= firstToUpper(other_role) %>(self) unless val.nil? || val.is_a?(MMGeneric)\n<% end %>\n<% if props.reference? && props.value(:containment) %>\nval._set_container(self, :<%= name %>) unless val.nil?\noldval._set_container(nil, nil) unless oldval.nil?\n<% end %>\nend\nalias <%= name %>= set<%= firstToUpper(name) %>\n\ndef _register<%= firstToUpper(name) %>(val)\n<% if other_role %>\n@<%= name %>._unregister<%= firstToUpper(other_role) %>(self) unless @<%= name %>.nil? || @<%= name %>.is_a?(MMGeneric)\n<% end %>\n<% if props.reference? && props.value(:containment) %>\n@<%= name %>._set_container(nil, nil) unless @<%= name %>.nil?\nval._set_container(self, :<%= name %>) unless val.nil?\n<% end %>\n@<%= name %> = val\nend\n\ndef _unregister<%= firstToUpper(name) %>(val)\n<% if props.reference? && props.value(:containment) %>\n@<%= name %>._set_container(nil, nil) unless @<%= name %>.nil?\n<% end %>\n@<%= name %> = nil\nend\n\n"
self::ClassModule.module_eval(@@one_write_builder.result(binding))
end
end