static Variant GetDefaultValue()

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;
            }