in cs/src/core/Schema.cs [177:236]
static Variant GetDefaultValue(ISchemaField schemaField)
{
var defaultValue = schemaField.GetDefaultValue();
var variant = new Variant();
if (defaultValue == null)
{
if (!schemaField.GetSchemaType().IsBondNullable())
variant.nothing = true;
}
else
{
Type defaultValueType = defaultValue.GetType();
Type schemaFieldType = schemaField.GetSchemaType();
if (schemaFieldType == typeof (Tag.wstring))
schemaFieldType = typeof (string);
bool alias = defaultValueType != schemaFieldType;
switch (schemaField.GetSchemaType().GetBondDataType())
{
case BondDataType.BT_BOOL:
variant.uint_value = alias ? 0ul : ((bool) defaultValue ? 1ul : 0ul);
break;
case BondDataType.BT_UINT8:
case BondDataType.BT_UINT16:
case BondDataType.BT_UINT32:
case BondDataType.BT_UINT64:
variant.uint_value = alias ? 0 : Convert.ToUInt64(defaultValue);
break;
case BondDataType.BT_INT8:
case BondDataType.BT_INT16:
case BondDataType.BT_INT32:
case BondDataType.BT_INT64:
variant.int_value = alias ? 0 : Convert.ToInt64(defaultValue);
break;
case BondDataType.BT_FLOAT:
variant.double_value = alias ? 0 : Convert.ToSingle(defaultValue);
break;
case BondDataType.BT_DOUBLE:
variant.double_value = alias ? 0 : Convert.ToDouble(defaultValue);
break;
case BondDataType.BT_STRING:
variant.string_value = alias ? string.Empty : (string)defaultValue;
break;
case BondDataType.BT_WSTRING:
variant.wstring_value = alias ? string.Empty : (string)defaultValue;
break;
}
}
return variant;
}