|
using IPA.Config.Data;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace IPA.Config.Stores.Converters
|
|
{
|
|
/// <summary>
|
|
/// Provides utility functions for custom converters.
|
|
/// </summary>
|
|
public static class Converter
|
|
{
|
|
/// <summary>
|
|
/// Gets the integral value of a <see cref="Value"/>, coercing a <see cref="FloatingPoint"/> if necessary,
|
|
/// or <see langword="null"/> if <paramref name="val"/> is not an <see cref="Integer"/> or <see cref="FloatingPoint"/>.
|
|
/// </summary>
|
|
/// <param name="val">the <see cref="Value"/> to get the integral value of</param>
|
|
/// <returns>the integral value of <paramref name="val"/>, or <see langword="null"/></returns>
|
|
public static long? IntValue(Value val)
|
|
=> val is Integer inte ? inte.Value :
|
|
val is FloatingPoint fp ? fp.AsInteger()?.Value :
|
|
null;
|
|
/// <summary>
|
|
/// Gets the floaing point value of a <see cref="Value"/>, coercing an <see cref="Integer"/> if necessary,
|
|
/// or <see langword="null"/> if <paramref name="val"/> is not an <see cref="Integer"/> or <see cref="FloatingPoint"/>.
|
|
/// </summary>
|
|
/// <param name="val">the <see cref="Value"/> to get the floaing point value of</param>
|
|
/// <returns>the floaing point value of <paramref name="val"/>, or <see langword="null"/></returns>
|
|
public static decimal? FloatValue(Value val)
|
|
=> val is FloatingPoint fp ? fp.Value :
|
|
val is Integer inte ? inte.AsFloat()?.Value :
|
|
null;
|
|
}
|
|
|
|
|
|
}
|