示例#1
0
        private void AppendToSlow(StringBuffer stringBuffer, bool enumRegistered)
        {
            if (!enumRegistered && LogManager.Config.LazyRegisterEnums)
            {
                LogManager.RegisterEnum(TypeUtil.GetTypeFromHandle(_typeHandle));
                var enumString = EnumCache.GetString(_typeHandle, _value, out _);
                if (enumString != null)
                {
                    stringBuffer.Append(enumString);
                    return;
                }
            }

            if (_value <= long.MaxValue)
            {
                stringBuffer.Append(_value, StringView.Empty);
                return;
            }

            if (EnumCache.IsEnumSigned(_typeHandle))
            {
                stringBuffer.Append(unchecked ((long)_value), StringView.Empty);
            }
            else
            {
                stringBuffer.Append(_value, StringView.Empty);
            }
        }
示例#2
0
        private ILogEvent AppendEnumInternal <T>(T value)
        {
            if (!PrepareAppend(sizeof(ArgumentType) + sizeof(EnumArg)))
            {
                return(this);
            }

            AppendArgumentType(ArgumentType.Enum);
            *(EnumArg *)_dataPointer = new EnumArg(TypeUtil <T> .TypeHandle, EnumCache.ToUInt64(value));
            _dataPointer            += sizeof(EnumArg);
            return(this);
        }
示例#3
0
        public void AppendTo(StringBuffer stringBuffer)
        {
            var enumString = EnumCache.GetString(_typeHandle, _value, out var enumRegistered);

            if (enumString != null)
            {
                stringBuffer.Append(enumString);
                return;
            }

            AppendToSlow(stringBuffer, enumRegistered);
        }
示例#4
0
        private void AppendNullableEnumInternal <T>(T value) // T = Nullable<SomeEnum>
        {
            if (!PrepareAppend(sizeof(ArgumentType) + sizeof(EnumArg)))
            {
                return;
            }

            var enumValue = EnumCache.ToUInt64Nullable(value);

            if (enumValue == null)
            {
                AppendArgumentType(ArgumentType.Null);
                return;
            }

            AppendArgumentType(ArgumentType.Enum);
            *(EnumArg *)_dataPointer = new EnumArg(TypeUtilSlow <T> .UnderlyingTypeHandle, enumValue.GetValueOrDefault());
            _dataPointer            += sizeof(EnumArg);
        }
示例#5
0
 public static void RegisterEnum([NotNull] Type enumType)
 => EnumCache.Register(enumType);
示例#6
0
 public static void RegisterEnum(Type enumType)
 => EnumCache.Register(enumType);