namespace AyCode.Core.Serializers.Binaries;

/// <summary>
/// Controls string interning behavior during binary serialization.
/// </summary>
public enum StringInterningMode
{
    /// <summary>
    /// No string interning. All strings are written inline.
    /// </summary>
    None = 0,

    /// <summary>
    /// Only intern strings on properties marked with [AcStringIntern(true)].
    /// Properties without attribute or with [AcStringIntern(false)] are written inline.
    /// </summary>
    Attribute = 1,

    /// <summary>
    /// Intern all strings that meet the length criteria (MinStringInternLength to MaxStringInternLength).
    /// [AcStringIntern(false)] can opt-out specific properties.
    /// </summary>
    All = 2
}
