| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod AddMetadata (NamedValueTree nvt, NamedValue nv, MdlModeledAttrElement attr,  | 
|   Type type) | 
| { | 
|   TextBody: | 
|   [* | 
|     metadata := nv.AddChild( nvt.GetHandle( LibSE_SettingsContainer::Handle_Metadata() ) ); | 
|     description := metadata.AddChild( nvt.GetHandle( LibSE_SettingsContainer::Handle_Description() ) ); | 
|     description.SetValue( attr.ModeledAttribute().Description() ); | 
|      | 
|     default_value := null( ModeledDefaultValue ); | 
|     default_value_type := type; | 
|     while( not isnull( default_value_type ) and isnull( default_value ) ) | 
|     { | 
|       default_value := guard( attr.ModeledAttribute().FindDefaultValue( default_value_type ), null( ModeledDefaultValue ) ); | 
|       default_value_type := default_value_type.Parent(); | 
|     } | 
|      | 
|     defined_by := Translations::LibSE_SettingsContainer_DefinedBy_QuillDefaultValue(); | 
|     if( not isnull( default_value ) ) | 
|     { | 
|       default_value_node := metadata.AddChild( nvt.GetHandle( LibSE_SettingsContainer::Handle_DefaultValue() ) ); | 
|       type := attr.ValueType(); | 
|       if( type = typeof( Boolean ) ) | 
|       { | 
|         default_value_node.SetValue( StringToBoolean::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( Char ) ) | 
|       { | 
|         default_value_node.SetValue( StringToChar::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( Date ) ) | 
|       { | 
|         default_value_node.SetValue( StringToDate::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( DateTime ) ) | 
|       { | 
|         default_value_node.SetValue( StringToDateTime::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( Duration ) ) | 
|       { | 
|         default_value_node.SetValue( StringToDuration::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( Key ) ) | 
|       { | 
|         default_value_node.SetValue( StringToKey::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( Number ) ) | 
|       { | 
|         default_value_node.SetValue( StringToNumber::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( Real ) ) | 
|       { | 
|         default_value_node.SetValue( StringToReal::ISOConverter().Convert( default_value.ISOValue() ) ); | 
|       } | 
|       else if( type = typeof( String ) ) | 
|       { | 
|         default_value_node.SetValue( default_value.ISOValue() ); | 
|       } | 
|       defined_by := Translations::LibSE_SettingsContainer_DefinedBy_EditorDefaultValue(); | 
|     } | 
|      | 
|     defined_by_nv := metadata.AddChild( nvt.GetHandle( LibSE_SettingsContainer::Handle_DefinedBy() ) ); | 
|     defined_by_nv.SetValue( defined_by ); | 
|   *] | 
| } |