diff --git a/projects/CSharp/Proto/com.chronoxor.enums.cs b/projects/CSharp/Proto/com.chronoxor.enums.cs index 00b17bd63..d8249fcee 100644 --- a/projects/CSharp/Proto/com.chronoxor.enums.cs +++ b/projects/CSharp/Proto/com.chronoxor.enums.cs @@ -148,12 +148,12 @@ public override int GetHashCode() public const byte _ENUM_VALUE_4_ = (byte)254U + 1; public const byte _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumByte ENUM_VALUE_0 = new EnumByte(_ENUM_VALUE_0_); - public static EnumByte ENUM_VALUE_1 = new EnumByte(_ENUM_VALUE_1_); - public static EnumByte ENUM_VALUE_2 = new EnumByte(_ENUM_VALUE_2_); - public static EnumByte ENUM_VALUE_3 = new EnumByte(_ENUM_VALUE_3_); - public static EnumByte ENUM_VALUE_4 = new EnumByte(_ENUM_VALUE_4_); - public static EnumByte ENUM_VALUE_5 = new EnumByte(_ENUM_VALUE_5_); + public static readonly EnumByte ENUM_VALUE_0 = new EnumByte(_ENUM_VALUE_0_); + public static readonly EnumByte ENUM_VALUE_1 = new EnumByte(_ENUM_VALUE_1_); + public static readonly EnumByte ENUM_VALUE_2 = new EnumByte(_ENUM_VALUE_2_); + public static readonly EnumByte ENUM_VALUE_3 = new EnumByte(_ENUM_VALUE_3_); + public static readonly EnumByte ENUM_VALUE_4 = new EnumByte(_ENUM_VALUE_4_); + public static readonly EnumByte ENUM_VALUE_5 = new EnumByte(_ENUM_VALUE_5_); public override string ToString() { @@ -381,12 +381,12 @@ public override int GetHashCode() public const byte _ENUM_VALUE_4_ = (byte)'3' + 1; public const byte _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumChar ENUM_VALUE_0 = new EnumChar(_ENUM_VALUE_0_); - public static EnumChar ENUM_VALUE_1 = new EnumChar(_ENUM_VALUE_1_); - public static EnumChar ENUM_VALUE_2 = new EnumChar(_ENUM_VALUE_2_); - public static EnumChar ENUM_VALUE_3 = new EnumChar(_ENUM_VALUE_3_); - public static EnumChar ENUM_VALUE_4 = new EnumChar(_ENUM_VALUE_4_); - public static EnumChar ENUM_VALUE_5 = new EnumChar(_ENUM_VALUE_5_); + public static readonly EnumChar ENUM_VALUE_0 = new EnumChar(_ENUM_VALUE_0_); + public static readonly EnumChar ENUM_VALUE_1 = new EnumChar(_ENUM_VALUE_1_); + public static readonly EnumChar ENUM_VALUE_2 = new EnumChar(_ENUM_VALUE_2_); + public static readonly EnumChar ENUM_VALUE_3 = new EnumChar(_ENUM_VALUE_3_); + public static readonly EnumChar ENUM_VALUE_4 = new EnumChar(_ENUM_VALUE_4_); + public static readonly EnumChar ENUM_VALUE_5 = new EnumChar(_ENUM_VALUE_5_); public override string ToString() { @@ -614,12 +614,12 @@ public override int GetHashCode() public const ushort _ENUM_VALUE_4_ = (ushort)0x0555 + 1; public const ushort _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumWChar ENUM_VALUE_0 = new EnumWChar(_ENUM_VALUE_0_); - public static EnumWChar ENUM_VALUE_1 = new EnumWChar(_ENUM_VALUE_1_); - public static EnumWChar ENUM_VALUE_2 = new EnumWChar(_ENUM_VALUE_2_); - public static EnumWChar ENUM_VALUE_3 = new EnumWChar(_ENUM_VALUE_3_); - public static EnumWChar ENUM_VALUE_4 = new EnumWChar(_ENUM_VALUE_4_); - public static EnumWChar ENUM_VALUE_5 = new EnumWChar(_ENUM_VALUE_5_); + public static readonly EnumWChar ENUM_VALUE_0 = new EnumWChar(_ENUM_VALUE_0_); + public static readonly EnumWChar ENUM_VALUE_1 = new EnumWChar(_ENUM_VALUE_1_); + public static readonly EnumWChar ENUM_VALUE_2 = new EnumWChar(_ENUM_VALUE_2_); + public static readonly EnumWChar ENUM_VALUE_3 = new EnumWChar(_ENUM_VALUE_3_); + public static readonly EnumWChar ENUM_VALUE_4 = new EnumWChar(_ENUM_VALUE_4_); + public static readonly EnumWChar ENUM_VALUE_5 = new EnumWChar(_ENUM_VALUE_5_); public override string ToString() { @@ -847,12 +847,12 @@ public override int GetHashCode() public const sbyte _ENUM_VALUE_4_ = (sbyte)126 + 1; public const sbyte _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumInt8 ENUM_VALUE_0 = new EnumInt8(_ENUM_VALUE_0_); - public static EnumInt8 ENUM_VALUE_1 = new EnumInt8(_ENUM_VALUE_1_); - public static EnumInt8 ENUM_VALUE_2 = new EnumInt8(_ENUM_VALUE_2_); - public static EnumInt8 ENUM_VALUE_3 = new EnumInt8(_ENUM_VALUE_3_); - public static EnumInt8 ENUM_VALUE_4 = new EnumInt8(_ENUM_VALUE_4_); - public static EnumInt8 ENUM_VALUE_5 = new EnumInt8(_ENUM_VALUE_5_); + public static readonly EnumInt8 ENUM_VALUE_0 = new EnumInt8(_ENUM_VALUE_0_); + public static readonly EnumInt8 ENUM_VALUE_1 = new EnumInt8(_ENUM_VALUE_1_); + public static readonly EnumInt8 ENUM_VALUE_2 = new EnumInt8(_ENUM_VALUE_2_); + public static readonly EnumInt8 ENUM_VALUE_3 = new EnumInt8(_ENUM_VALUE_3_); + public static readonly EnumInt8 ENUM_VALUE_4 = new EnumInt8(_ENUM_VALUE_4_); + public static readonly EnumInt8 ENUM_VALUE_5 = new EnumInt8(_ENUM_VALUE_5_); public override string ToString() { @@ -1080,12 +1080,12 @@ public override int GetHashCode() public const byte _ENUM_VALUE_4_ = (byte)254U + 1; public const byte _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumUInt8 ENUM_VALUE_0 = new EnumUInt8(_ENUM_VALUE_0_); - public static EnumUInt8 ENUM_VALUE_1 = new EnumUInt8(_ENUM_VALUE_1_); - public static EnumUInt8 ENUM_VALUE_2 = new EnumUInt8(_ENUM_VALUE_2_); - public static EnumUInt8 ENUM_VALUE_3 = new EnumUInt8(_ENUM_VALUE_3_); - public static EnumUInt8 ENUM_VALUE_4 = new EnumUInt8(_ENUM_VALUE_4_); - public static EnumUInt8 ENUM_VALUE_5 = new EnumUInt8(_ENUM_VALUE_5_); + public static readonly EnumUInt8 ENUM_VALUE_0 = new EnumUInt8(_ENUM_VALUE_0_); + public static readonly EnumUInt8 ENUM_VALUE_1 = new EnumUInt8(_ENUM_VALUE_1_); + public static readonly EnumUInt8 ENUM_VALUE_2 = new EnumUInt8(_ENUM_VALUE_2_); + public static readonly EnumUInt8 ENUM_VALUE_3 = new EnumUInt8(_ENUM_VALUE_3_); + public static readonly EnumUInt8 ENUM_VALUE_4 = new EnumUInt8(_ENUM_VALUE_4_); + public static readonly EnumUInt8 ENUM_VALUE_5 = new EnumUInt8(_ENUM_VALUE_5_); public override string ToString() { @@ -1313,12 +1313,12 @@ public override int GetHashCode() public const short _ENUM_VALUE_4_ = (short)32766 + 1; public const short _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumInt16 ENUM_VALUE_0 = new EnumInt16(_ENUM_VALUE_0_); - public static EnumInt16 ENUM_VALUE_1 = new EnumInt16(_ENUM_VALUE_1_); - public static EnumInt16 ENUM_VALUE_2 = new EnumInt16(_ENUM_VALUE_2_); - public static EnumInt16 ENUM_VALUE_3 = new EnumInt16(_ENUM_VALUE_3_); - public static EnumInt16 ENUM_VALUE_4 = new EnumInt16(_ENUM_VALUE_4_); - public static EnumInt16 ENUM_VALUE_5 = new EnumInt16(_ENUM_VALUE_5_); + public static readonly EnumInt16 ENUM_VALUE_0 = new EnumInt16(_ENUM_VALUE_0_); + public static readonly EnumInt16 ENUM_VALUE_1 = new EnumInt16(_ENUM_VALUE_1_); + public static readonly EnumInt16 ENUM_VALUE_2 = new EnumInt16(_ENUM_VALUE_2_); + public static readonly EnumInt16 ENUM_VALUE_3 = new EnumInt16(_ENUM_VALUE_3_); + public static readonly EnumInt16 ENUM_VALUE_4 = new EnumInt16(_ENUM_VALUE_4_); + public static readonly EnumInt16 ENUM_VALUE_5 = new EnumInt16(_ENUM_VALUE_5_); public override string ToString() { @@ -1546,12 +1546,12 @@ public override int GetHashCode() public const ushort _ENUM_VALUE_4_ = (ushort)65534U + 1; public const ushort _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumUInt16 ENUM_VALUE_0 = new EnumUInt16(_ENUM_VALUE_0_); - public static EnumUInt16 ENUM_VALUE_1 = new EnumUInt16(_ENUM_VALUE_1_); - public static EnumUInt16 ENUM_VALUE_2 = new EnumUInt16(_ENUM_VALUE_2_); - public static EnumUInt16 ENUM_VALUE_3 = new EnumUInt16(_ENUM_VALUE_3_); - public static EnumUInt16 ENUM_VALUE_4 = new EnumUInt16(_ENUM_VALUE_4_); - public static EnumUInt16 ENUM_VALUE_5 = new EnumUInt16(_ENUM_VALUE_5_); + public static readonly EnumUInt16 ENUM_VALUE_0 = new EnumUInt16(_ENUM_VALUE_0_); + public static readonly EnumUInt16 ENUM_VALUE_1 = new EnumUInt16(_ENUM_VALUE_1_); + public static readonly EnumUInt16 ENUM_VALUE_2 = new EnumUInt16(_ENUM_VALUE_2_); + public static readonly EnumUInt16 ENUM_VALUE_3 = new EnumUInt16(_ENUM_VALUE_3_); + public static readonly EnumUInt16 ENUM_VALUE_4 = new EnumUInt16(_ENUM_VALUE_4_); + public static readonly EnumUInt16 ENUM_VALUE_5 = new EnumUInt16(_ENUM_VALUE_5_); public override string ToString() { @@ -1779,12 +1779,12 @@ public override int GetHashCode() public const int _ENUM_VALUE_4_ = (int)2147483646 + 1; public const int _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumInt32 ENUM_VALUE_0 = new EnumInt32(_ENUM_VALUE_0_); - public static EnumInt32 ENUM_VALUE_1 = new EnumInt32(_ENUM_VALUE_1_); - public static EnumInt32 ENUM_VALUE_2 = new EnumInt32(_ENUM_VALUE_2_); - public static EnumInt32 ENUM_VALUE_3 = new EnumInt32(_ENUM_VALUE_3_); - public static EnumInt32 ENUM_VALUE_4 = new EnumInt32(_ENUM_VALUE_4_); - public static EnumInt32 ENUM_VALUE_5 = new EnumInt32(_ENUM_VALUE_5_); + public static readonly EnumInt32 ENUM_VALUE_0 = new EnumInt32(_ENUM_VALUE_0_); + public static readonly EnumInt32 ENUM_VALUE_1 = new EnumInt32(_ENUM_VALUE_1_); + public static readonly EnumInt32 ENUM_VALUE_2 = new EnumInt32(_ENUM_VALUE_2_); + public static readonly EnumInt32 ENUM_VALUE_3 = new EnumInt32(_ENUM_VALUE_3_); + public static readonly EnumInt32 ENUM_VALUE_4 = new EnumInt32(_ENUM_VALUE_4_); + public static readonly EnumInt32 ENUM_VALUE_5 = new EnumInt32(_ENUM_VALUE_5_); public override string ToString() { @@ -2012,12 +2012,12 @@ public override int GetHashCode() public const uint _ENUM_VALUE_4_ = (uint)0xFFFFFFFEU + 1; public const uint _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumUInt32 ENUM_VALUE_0 = new EnumUInt32(_ENUM_VALUE_0_); - public static EnumUInt32 ENUM_VALUE_1 = new EnumUInt32(_ENUM_VALUE_1_); - public static EnumUInt32 ENUM_VALUE_2 = new EnumUInt32(_ENUM_VALUE_2_); - public static EnumUInt32 ENUM_VALUE_3 = new EnumUInt32(_ENUM_VALUE_3_); - public static EnumUInt32 ENUM_VALUE_4 = new EnumUInt32(_ENUM_VALUE_4_); - public static EnumUInt32 ENUM_VALUE_5 = new EnumUInt32(_ENUM_VALUE_5_); + public static readonly EnumUInt32 ENUM_VALUE_0 = new EnumUInt32(_ENUM_VALUE_0_); + public static readonly EnumUInt32 ENUM_VALUE_1 = new EnumUInt32(_ENUM_VALUE_1_); + public static readonly EnumUInt32 ENUM_VALUE_2 = new EnumUInt32(_ENUM_VALUE_2_); + public static readonly EnumUInt32 ENUM_VALUE_3 = new EnumUInt32(_ENUM_VALUE_3_); + public static readonly EnumUInt32 ENUM_VALUE_4 = new EnumUInt32(_ENUM_VALUE_4_); + public static readonly EnumUInt32 ENUM_VALUE_5 = new EnumUInt32(_ENUM_VALUE_5_); public override string ToString() { @@ -2245,12 +2245,12 @@ public override int GetHashCode() public const long _ENUM_VALUE_4_ = (long)9223372036854775806L + 1; public const long _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumInt64 ENUM_VALUE_0 = new EnumInt64(_ENUM_VALUE_0_); - public static EnumInt64 ENUM_VALUE_1 = new EnumInt64(_ENUM_VALUE_1_); - public static EnumInt64 ENUM_VALUE_2 = new EnumInt64(_ENUM_VALUE_2_); - public static EnumInt64 ENUM_VALUE_3 = new EnumInt64(_ENUM_VALUE_3_); - public static EnumInt64 ENUM_VALUE_4 = new EnumInt64(_ENUM_VALUE_4_); - public static EnumInt64 ENUM_VALUE_5 = new EnumInt64(_ENUM_VALUE_5_); + public static readonly EnumInt64 ENUM_VALUE_0 = new EnumInt64(_ENUM_VALUE_0_); + public static readonly EnumInt64 ENUM_VALUE_1 = new EnumInt64(_ENUM_VALUE_1_); + public static readonly EnumInt64 ENUM_VALUE_2 = new EnumInt64(_ENUM_VALUE_2_); + public static readonly EnumInt64 ENUM_VALUE_3 = new EnumInt64(_ENUM_VALUE_3_); + public static readonly EnumInt64 ENUM_VALUE_4 = new EnumInt64(_ENUM_VALUE_4_); + public static readonly EnumInt64 ENUM_VALUE_5 = new EnumInt64(_ENUM_VALUE_5_); public override string ToString() { @@ -2478,12 +2478,12 @@ public override int GetHashCode() public const ulong _ENUM_VALUE_4_ = (ulong)0xFFFFFFFFFFFFFFFEUL + 1; public const ulong _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumUInt64 ENUM_VALUE_0 = new EnumUInt64(_ENUM_VALUE_0_); - public static EnumUInt64 ENUM_VALUE_1 = new EnumUInt64(_ENUM_VALUE_1_); - public static EnumUInt64 ENUM_VALUE_2 = new EnumUInt64(_ENUM_VALUE_2_); - public static EnumUInt64 ENUM_VALUE_3 = new EnumUInt64(_ENUM_VALUE_3_); - public static EnumUInt64 ENUM_VALUE_4 = new EnumUInt64(_ENUM_VALUE_4_); - public static EnumUInt64 ENUM_VALUE_5 = new EnumUInt64(_ENUM_VALUE_5_); + public static readonly EnumUInt64 ENUM_VALUE_0 = new EnumUInt64(_ENUM_VALUE_0_); + public static readonly EnumUInt64 ENUM_VALUE_1 = new EnumUInt64(_ENUM_VALUE_1_); + public static readonly EnumUInt64 ENUM_VALUE_2 = new EnumUInt64(_ENUM_VALUE_2_); + public static readonly EnumUInt64 ENUM_VALUE_3 = new EnumUInt64(_ENUM_VALUE_3_); + public static readonly EnumUInt64 ENUM_VALUE_4 = new EnumUInt64(_ENUM_VALUE_4_); + public static readonly EnumUInt64 ENUM_VALUE_5 = new EnumUInt64(_ENUM_VALUE_5_); public override string ToString() { diff --git a/projects/CSharp/Proto/com.chronoxor.proto.cs b/projects/CSharp/Proto/com.chronoxor.proto.cs index 70997faae..7b6996bfc 100644 --- a/projects/CSharp/Proto/com.chronoxor.proto.cs +++ b/projects/CSharp/Proto/com.chronoxor.proto.cs @@ -144,8 +144,8 @@ public override int GetHashCode() public const byte _buy_ = (byte)0U + 0; public const byte _sell_ = (byte)0U + 1; - public static OrderSide buy = new OrderSide(_buy_); - public static OrderSide sell = new OrderSide(_sell_); + public static readonly OrderSide buy = new OrderSide(_buy_); + public static readonly OrderSide sell = new OrderSide(_sell_); public override string ToString() { @@ -366,9 +366,9 @@ public override int GetHashCode() public const byte _limit_ = (byte)0U + 1; public const byte _stop_ = (byte)0U + 2; - public static OrderType market = new OrderType(_market_); - public static OrderType limit = new OrderType(_limit_); - public static OrderType stop = new OrderType(_stop_); + public static readonly OrderType market = new OrderType(_market_); + public static readonly OrderType limit = new OrderType(_limit_); + public static readonly OrderType stop = new OrderType(_stop_); public override string ToString() { @@ -626,13 +626,13 @@ public override int GetHashCode() public const byte _good_ = _initialized_ | _calculated_; public const byte _bad_ = _unknown_ | _invalid_ | _broken_; - public static State unknown = new State(_unknown_); - public static State invalid = new State(_invalid_); - public static State initialized = new State(_initialized_); - public static State calculated = new State(_calculated_); - public static State broken = new State(_broken_); - public static State good = new State(_good_); - public static State bad = new State(_bad_); + public static readonly State unknown = new State(_unknown_); + public static readonly State invalid = new State(_invalid_); + public static readonly State initialized = new State(_initialized_); + public static readonly State calculated = new State(_calculated_); + public static readonly State broken = new State(_broken_); + public static readonly State good = new State(_good_); + public static readonly State bad = new State(_bad_); public override string ToString() { diff --git a/projects/CSharp/Proto/com.chronoxor.protoex.cs b/projects/CSharp/Proto/com.chronoxor.protoex.cs index 7e747b668..f36e87a8e 100644 --- a/projects/CSharp/Proto/com.chronoxor.protoex.cs +++ b/projects/CSharp/Proto/com.chronoxor.protoex.cs @@ -147,9 +147,9 @@ public override int GetHashCode() public const byte _sell_ = (byte)0U + 1; public const byte _tell_ = (byte)0U + 2; - public static OrderSide buy = new OrderSide(_buy_); - public static OrderSide sell = new OrderSide(_sell_); - public static OrderSide tell = new OrderSide(_tell_); + public static readonly OrderSide buy = new OrderSide(_buy_); + public static readonly OrderSide sell = new OrderSide(_sell_); + public static readonly OrderSide tell = new OrderSide(_tell_); public override string ToString() { @@ -372,10 +372,10 @@ public override int GetHashCode() public const byte _stop_ = (byte)0U + 2; public const byte _stoplimit_ = (byte)0U + 3; - public static OrderType market = new OrderType(_market_); - public static OrderType limit = new OrderType(_limit_); - public static OrderType stop = new OrderType(_stop_); - public static OrderType stoplimit = new OrderType(_stoplimit_); + public static readonly OrderType market = new OrderType(_market_); + public static readonly OrderType limit = new OrderType(_limit_); + public static readonly OrderType stop = new OrderType(_stop_); + public static readonly OrderType stoplimit = new OrderType(_stoplimit_); public override string ToString() { @@ -636,15 +636,15 @@ public override int GetHashCode() public const byte _good_ = _initialized_ | _calculated_; public const byte _bad_ = _unknown_ | _invalid_ | _broken_; - public static StateEx unknown = new StateEx(_unknown_); - public static StateEx invalid = new StateEx(_invalid_); - public static StateEx initialized = new StateEx(_initialized_); - public static StateEx calculated = new StateEx(_calculated_); - public static StateEx broken = new StateEx(_broken_); - public static StateEx happy = new StateEx(_happy_); - public static StateEx sad = new StateEx(_sad_); - public static StateEx good = new StateEx(_good_); - public static StateEx bad = new StateEx(_bad_); + public static readonly StateEx unknown = new StateEx(_unknown_); + public static readonly StateEx invalid = new StateEx(_invalid_); + public static readonly StateEx initialized = new StateEx(_initialized_); + public static readonly StateEx calculated = new StateEx(_calculated_); + public static readonly StateEx broken = new StateEx(_broken_); + public static readonly StateEx happy = new StateEx(_happy_); + public static readonly StateEx sad = new StateEx(_sad_); + public static readonly StateEx good = new StateEx(_good_); + public static readonly StateEx bad = new StateEx(_bad_); public override string ToString() { diff --git a/projects/CSharp/Proto/com.chronoxor.test.cs b/projects/CSharp/Proto/com.chronoxor.test.cs index 21a3f6ed2..50e8e164f 100644 --- a/projects/CSharp/Proto/com.chronoxor.test.cs +++ b/projects/CSharp/Proto/com.chronoxor.test.cs @@ -150,12 +150,12 @@ public override int GetHashCode() public const int _ENUM_VALUE_4_ = (int)0x4 + 0; public const int _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumSimple ENUM_VALUE_0 = new EnumSimple(_ENUM_VALUE_0_); - public static EnumSimple ENUM_VALUE_1 = new EnumSimple(_ENUM_VALUE_1_); - public static EnumSimple ENUM_VALUE_2 = new EnumSimple(_ENUM_VALUE_2_); - public static EnumSimple ENUM_VALUE_3 = new EnumSimple(_ENUM_VALUE_3_); - public static EnumSimple ENUM_VALUE_4 = new EnumSimple(_ENUM_VALUE_4_); - public static EnumSimple ENUM_VALUE_5 = new EnumSimple(_ENUM_VALUE_5_); + public static readonly EnumSimple ENUM_VALUE_0 = new EnumSimple(_ENUM_VALUE_0_); + public static readonly EnumSimple ENUM_VALUE_1 = new EnumSimple(_ENUM_VALUE_1_); + public static readonly EnumSimple ENUM_VALUE_2 = new EnumSimple(_ENUM_VALUE_2_); + public static readonly EnumSimple ENUM_VALUE_3 = new EnumSimple(_ENUM_VALUE_3_); + public static readonly EnumSimple ENUM_VALUE_4 = new EnumSimple(_ENUM_VALUE_4_); + public static readonly EnumSimple ENUM_VALUE_5 = new EnumSimple(_ENUM_VALUE_5_); public override string ToString() { @@ -383,12 +383,12 @@ public override int GetHashCode() public const byte _ENUM_VALUE_4_ = (byte)'3' + 1; public const byte _ENUM_VALUE_5_ = _ENUM_VALUE_3_; - public static EnumTyped ENUM_VALUE_0 = new EnumTyped(_ENUM_VALUE_0_); - public static EnumTyped ENUM_VALUE_1 = new EnumTyped(_ENUM_VALUE_1_); - public static EnumTyped ENUM_VALUE_2 = new EnumTyped(_ENUM_VALUE_2_); - public static EnumTyped ENUM_VALUE_3 = new EnumTyped(_ENUM_VALUE_3_); - public static EnumTyped ENUM_VALUE_4 = new EnumTyped(_ENUM_VALUE_4_); - public static EnumTyped ENUM_VALUE_5 = new EnumTyped(_ENUM_VALUE_5_); + public static readonly EnumTyped ENUM_VALUE_0 = new EnumTyped(_ENUM_VALUE_0_); + public static readonly EnumTyped ENUM_VALUE_1 = new EnumTyped(_ENUM_VALUE_1_); + public static readonly EnumTyped ENUM_VALUE_2 = new EnumTyped(_ENUM_VALUE_2_); + public static readonly EnumTyped ENUM_VALUE_3 = new EnumTyped(_ENUM_VALUE_3_); + public static readonly EnumTyped ENUM_VALUE_4 = new EnumTyped(_ENUM_VALUE_4_); + public static readonly EnumTyped ENUM_VALUE_5 = new EnumTyped(_ENUM_VALUE_5_); public override string ToString() { @@ -863,12 +863,12 @@ public override int GetHashCode() public const int _FLAG_VALUE_4_ = _FLAG_VALUE_3_; public const int _FLAG_VALUE_5_ = _FLAG_VALUE_1_ | _FLAG_VALUE_3_; - public static FlagsSimple FLAG_VALUE_0 = new FlagsSimple(_FLAG_VALUE_0_); - public static FlagsSimple FLAG_VALUE_1 = new FlagsSimple(_FLAG_VALUE_1_); - public static FlagsSimple FLAG_VALUE_2 = new FlagsSimple(_FLAG_VALUE_2_); - public static FlagsSimple FLAG_VALUE_3 = new FlagsSimple(_FLAG_VALUE_3_); - public static FlagsSimple FLAG_VALUE_4 = new FlagsSimple(_FLAG_VALUE_4_); - public static FlagsSimple FLAG_VALUE_5 = new FlagsSimple(_FLAG_VALUE_5_); + public static readonly FlagsSimple FLAG_VALUE_0 = new FlagsSimple(_FLAG_VALUE_0_); + public static readonly FlagsSimple FLAG_VALUE_1 = new FlagsSimple(_FLAG_VALUE_1_); + public static readonly FlagsSimple FLAG_VALUE_2 = new FlagsSimple(_FLAG_VALUE_2_); + public static readonly FlagsSimple FLAG_VALUE_3 = new FlagsSimple(_FLAG_VALUE_3_); + public static readonly FlagsSimple FLAG_VALUE_4 = new FlagsSimple(_FLAG_VALUE_4_); + public static readonly FlagsSimple FLAG_VALUE_5 = new FlagsSimple(_FLAG_VALUE_5_); public override string ToString() { @@ -1159,16 +1159,16 @@ public override int GetHashCode() public const ulong _FLAG_VALUE_8_ = _FLAG_VALUE_7_; public const ulong _FLAG_VALUE_9_ = _FLAG_VALUE_2_ | _FLAG_VALUE_4_ | _FLAG_VALUE_6_; - public static FlagsTyped FLAG_VALUE_0 = new FlagsTyped(_FLAG_VALUE_0_); - public static FlagsTyped FLAG_VALUE_1 = new FlagsTyped(_FLAG_VALUE_1_); - public static FlagsTyped FLAG_VALUE_2 = new FlagsTyped(_FLAG_VALUE_2_); - public static FlagsTyped FLAG_VALUE_3 = new FlagsTyped(_FLAG_VALUE_3_); - public static FlagsTyped FLAG_VALUE_4 = new FlagsTyped(_FLAG_VALUE_4_); - public static FlagsTyped FLAG_VALUE_5 = new FlagsTyped(_FLAG_VALUE_5_); - public static FlagsTyped FLAG_VALUE_6 = new FlagsTyped(_FLAG_VALUE_6_); - public static FlagsTyped FLAG_VALUE_7 = new FlagsTyped(_FLAG_VALUE_7_); - public static FlagsTyped FLAG_VALUE_8 = new FlagsTyped(_FLAG_VALUE_8_); - public static FlagsTyped FLAG_VALUE_9 = new FlagsTyped(_FLAG_VALUE_9_); + public static readonly FlagsTyped FLAG_VALUE_0 = new FlagsTyped(_FLAG_VALUE_0_); + public static readonly FlagsTyped FLAG_VALUE_1 = new FlagsTyped(_FLAG_VALUE_1_); + public static readonly FlagsTyped FLAG_VALUE_2 = new FlagsTyped(_FLAG_VALUE_2_); + public static readonly FlagsTyped FLAG_VALUE_3 = new FlagsTyped(_FLAG_VALUE_3_); + public static readonly FlagsTyped FLAG_VALUE_4 = new FlagsTyped(_FLAG_VALUE_4_); + public static readonly FlagsTyped FLAG_VALUE_5 = new FlagsTyped(_FLAG_VALUE_5_); + public static readonly FlagsTyped FLAG_VALUE_6 = new FlagsTyped(_FLAG_VALUE_6_); + public static readonly FlagsTyped FLAG_VALUE_7 = new FlagsTyped(_FLAG_VALUE_7_); + public static readonly FlagsTyped FLAG_VALUE_8 = new FlagsTyped(_FLAG_VALUE_8_); + public static readonly FlagsTyped FLAG_VALUE_9 = new FlagsTyped(_FLAG_VALUE_9_); public override string ToString() { diff --git a/projects/CSharp/Tests/Constants.cs b/projects/CSharp/Tests/Constants.cs new file mode 100644 index 000000000..498b41b01 --- /dev/null +++ b/projects/CSharp/Tests/Constants.cs @@ -0,0 +1,28 @@ +using Xunit; + +using com.chronoxor.test; + +namespace Tests +{ + public class TestConstants + { + [Fact(DisplayName = "Constants: enum and flags constants stay unchanged")] + public void ReadOnlyConstants() + { + // Combining flags from a constant returns the combination and leaves the constant as it was + var flags1 = FlagsTyped.FLAG_VALUE_2.SetFlags(FlagsTyped.FLAG_VALUE_4); + Assert.True(flags1.Value == 0x0A); + Assert.True(FlagsTyped.FLAG_VALUE_2.Value == 0x02); + + var flags2 = FlagsTyped.FLAG_VALUE_9.RemoveFlags(FlagsTyped.FLAG_VALUE_4); + Assert.True(flags2.Value == 0x22); + Assert.True(FlagsTyped.FLAG_VALUE_9.Value == 0x2A); + + // A copy is the caller's own to change + var flags3 = FlagsTyped.FLAG_VALUE_2; + flags3.SetFlags(FlagsTyped.FLAG_VALUE_6); + Assert.True(flags3.Value == 0x22); + Assert.True(FlagsTyped.FLAG_VALUE_2.Value == 0x02); + } + } +} diff --git a/projects/Java/src/com/chronoxor/enums/EnumByte.java b/projects/Java/src/com/chronoxor/enums/EnumByte.java index 98356252e..11e49c57b 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumByte.java +++ b/projects/Java/src/com/chronoxor/enums/EnumByte.java @@ -9,14 +9,15 @@ public final class EnumByte implements Comparable { - public static final EnumByte ENUM_VALUE_0 = new EnumByte(EnumByteEnum.ENUM_VALUE_0); - public static final EnumByte ENUM_VALUE_1 = new EnumByte(EnumByteEnum.ENUM_VALUE_1); - public static final EnumByte ENUM_VALUE_2 = new EnumByte(EnumByteEnum.ENUM_VALUE_2); - public static final EnumByte ENUM_VALUE_3 = new EnumByte(EnumByteEnum.ENUM_VALUE_3); - public static final EnumByte ENUM_VALUE_4 = new EnumByte(EnumByteEnum.ENUM_VALUE_4); - public static final EnumByte ENUM_VALUE_5 = new EnumByte(EnumByteEnum.ENUM_VALUE_5); + public static final EnumByte ENUM_VALUE_0 = new EnumByte(EnumByteEnum.ENUM_VALUE_0).asConstant(); + public static final EnumByte ENUM_VALUE_1 = new EnumByte(EnumByteEnum.ENUM_VALUE_1).asConstant(); + public static final EnumByte ENUM_VALUE_2 = new EnumByte(EnumByteEnum.ENUM_VALUE_2).asConstant(); + public static final EnumByte ENUM_VALUE_3 = new EnumByte(EnumByteEnum.ENUM_VALUE_3).asConstant(); + public static final EnumByte ENUM_VALUE_4 = new EnumByte(EnumByteEnum.ENUM_VALUE_4).asConstant(); + public static final EnumByte ENUM_VALUE_5 = new EnumByte(EnumByteEnum.ENUM_VALUE_5).asConstant(); private EnumByteEnum value = EnumByteEnum.values()[0]; + private boolean fbeConstant; public EnumByte() {} public EnumByte(byte value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumByte() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = EnumByteEnum.mapValue(value); } - public void setEnum(EnumByteEnum value) { this.value = value; } - public void setEnum(EnumByte value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = EnumByteEnum.mapValue(value); } + public void setEnum(EnumByteEnum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumByte value) { ensureMutable(); this.value = value.value; } + + private EnumByte asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumByte constants are read-only, change a copy: new EnumByte(EnumByte.VALUE)"); } @Override public int compareTo(EnumByte other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumChar.java b/projects/Java/src/com/chronoxor/enums/EnumChar.java index 0202729ab..031dcc01f 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumChar.java +++ b/projects/Java/src/com/chronoxor/enums/EnumChar.java @@ -9,14 +9,15 @@ public final class EnumChar implements Comparable { - public static final EnumChar ENUM_VALUE_0 = new EnumChar(EnumCharEnum.ENUM_VALUE_0); - public static final EnumChar ENUM_VALUE_1 = new EnumChar(EnumCharEnum.ENUM_VALUE_1); - public static final EnumChar ENUM_VALUE_2 = new EnumChar(EnumCharEnum.ENUM_VALUE_2); - public static final EnumChar ENUM_VALUE_3 = new EnumChar(EnumCharEnum.ENUM_VALUE_3); - public static final EnumChar ENUM_VALUE_4 = new EnumChar(EnumCharEnum.ENUM_VALUE_4); - public static final EnumChar ENUM_VALUE_5 = new EnumChar(EnumCharEnum.ENUM_VALUE_5); + public static final EnumChar ENUM_VALUE_0 = new EnumChar(EnumCharEnum.ENUM_VALUE_0).asConstant(); + public static final EnumChar ENUM_VALUE_1 = new EnumChar(EnumCharEnum.ENUM_VALUE_1).asConstant(); + public static final EnumChar ENUM_VALUE_2 = new EnumChar(EnumCharEnum.ENUM_VALUE_2).asConstant(); + public static final EnumChar ENUM_VALUE_3 = new EnumChar(EnumCharEnum.ENUM_VALUE_3).asConstant(); + public static final EnumChar ENUM_VALUE_4 = new EnumChar(EnumCharEnum.ENUM_VALUE_4).asConstant(); + public static final EnumChar ENUM_VALUE_5 = new EnumChar(EnumCharEnum.ENUM_VALUE_5).asConstant(); private EnumCharEnum value = EnumCharEnum.values()[0]; + private boolean fbeConstant; public EnumChar() {} public EnumChar(byte value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumChar() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = EnumCharEnum.mapValue(value); } - public void setEnum(EnumCharEnum value) { this.value = value; } - public void setEnum(EnumChar value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = EnumCharEnum.mapValue(value); } + public void setEnum(EnumCharEnum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumChar value) { ensureMutable(); this.value = value.value; } + + private EnumChar asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumChar constants are read-only, change a copy: new EnumChar(EnumChar.VALUE)"); } @Override public int compareTo(EnumChar other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumInt16.java b/projects/Java/src/com/chronoxor/enums/EnumInt16.java index aac97f819..bddba674a 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumInt16.java +++ b/projects/Java/src/com/chronoxor/enums/EnumInt16.java @@ -9,14 +9,15 @@ public final class EnumInt16 implements Comparable { - public static final EnumInt16 ENUM_VALUE_0 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_0); - public static final EnumInt16 ENUM_VALUE_1 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_1); - public static final EnumInt16 ENUM_VALUE_2 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_2); - public static final EnumInt16 ENUM_VALUE_3 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_3); - public static final EnumInt16 ENUM_VALUE_4 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_4); - public static final EnumInt16 ENUM_VALUE_5 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_5); + public static final EnumInt16 ENUM_VALUE_0 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_0).asConstant(); + public static final EnumInt16 ENUM_VALUE_1 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_1).asConstant(); + public static final EnumInt16 ENUM_VALUE_2 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_2).asConstant(); + public static final EnumInt16 ENUM_VALUE_3 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_3).asConstant(); + public static final EnumInt16 ENUM_VALUE_4 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_4).asConstant(); + public static final EnumInt16 ENUM_VALUE_5 = new EnumInt16(EnumInt16Enum.ENUM_VALUE_5).asConstant(); private EnumInt16Enum value = EnumInt16Enum.values()[0]; + private boolean fbeConstant; public EnumInt16() {} public EnumInt16(short value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumInt16() {} public void setDefault() { setEnum((short)0); } - public void setEnum(short value) { this.value = EnumInt16Enum.mapValue(value); } - public void setEnum(EnumInt16Enum value) { this.value = value; } - public void setEnum(EnumInt16 value) { this.value = value.value; } + public void setEnum(short value) { ensureMutable(); this.value = EnumInt16Enum.mapValue(value); } + public void setEnum(EnumInt16Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumInt16 value) { ensureMutable(); this.value = value.value; } + + private EnumInt16 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumInt16 constants are read-only, change a copy: new EnumInt16(EnumInt16.VALUE)"); } @Override public int compareTo(EnumInt16 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumInt32.java b/projects/Java/src/com/chronoxor/enums/EnumInt32.java index 0d69cc2ca..eec0b0b3e 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumInt32.java +++ b/projects/Java/src/com/chronoxor/enums/EnumInt32.java @@ -9,14 +9,15 @@ public final class EnumInt32 implements Comparable { - public static final EnumInt32 ENUM_VALUE_0 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_0); - public static final EnumInt32 ENUM_VALUE_1 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_1); - public static final EnumInt32 ENUM_VALUE_2 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_2); - public static final EnumInt32 ENUM_VALUE_3 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_3); - public static final EnumInt32 ENUM_VALUE_4 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_4); - public static final EnumInt32 ENUM_VALUE_5 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_5); + public static final EnumInt32 ENUM_VALUE_0 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_0).asConstant(); + public static final EnumInt32 ENUM_VALUE_1 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_1).asConstant(); + public static final EnumInt32 ENUM_VALUE_2 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_2).asConstant(); + public static final EnumInt32 ENUM_VALUE_3 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_3).asConstant(); + public static final EnumInt32 ENUM_VALUE_4 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_4).asConstant(); + public static final EnumInt32 ENUM_VALUE_5 = new EnumInt32(EnumInt32Enum.ENUM_VALUE_5).asConstant(); private EnumInt32Enum value = EnumInt32Enum.values()[0]; + private boolean fbeConstant; public EnumInt32() {} public EnumInt32(int value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumInt32() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.value = EnumInt32Enum.mapValue(value); } - public void setEnum(EnumInt32Enum value) { this.value = value; } - public void setEnum(EnumInt32 value) { this.value = value.value; } + public void setEnum(int value) { ensureMutable(); this.value = EnumInt32Enum.mapValue(value); } + public void setEnum(EnumInt32Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumInt32 value) { ensureMutable(); this.value = value.value; } + + private EnumInt32 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumInt32 constants are read-only, change a copy: new EnumInt32(EnumInt32.VALUE)"); } @Override public int compareTo(EnumInt32 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumInt64.java b/projects/Java/src/com/chronoxor/enums/EnumInt64.java index cef182af8..f7a14fea1 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumInt64.java +++ b/projects/Java/src/com/chronoxor/enums/EnumInt64.java @@ -9,14 +9,15 @@ public final class EnumInt64 implements Comparable { - public static final EnumInt64 ENUM_VALUE_0 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_0); - public static final EnumInt64 ENUM_VALUE_1 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_1); - public static final EnumInt64 ENUM_VALUE_2 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_2); - public static final EnumInt64 ENUM_VALUE_3 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_3); - public static final EnumInt64 ENUM_VALUE_4 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_4); - public static final EnumInt64 ENUM_VALUE_5 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_5); + public static final EnumInt64 ENUM_VALUE_0 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_0).asConstant(); + public static final EnumInt64 ENUM_VALUE_1 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_1).asConstant(); + public static final EnumInt64 ENUM_VALUE_2 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_2).asConstant(); + public static final EnumInt64 ENUM_VALUE_3 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_3).asConstant(); + public static final EnumInt64 ENUM_VALUE_4 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_4).asConstant(); + public static final EnumInt64 ENUM_VALUE_5 = new EnumInt64(EnumInt64Enum.ENUM_VALUE_5).asConstant(); private EnumInt64Enum value = EnumInt64Enum.values()[0]; + private boolean fbeConstant; public EnumInt64() {} public EnumInt64(long value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumInt64() {} public void setDefault() { setEnum((long)0); } - public void setEnum(long value) { this.value = EnumInt64Enum.mapValue(value); } - public void setEnum(EnumInt64Enum value) { this.value = value; } - public void setEnum(EnumInt64 value) { this.value = value.value; } + public void setEnum(long value) { ensureMutable(); this.value = EnumInt64Enum.mapValue(value); } + public void setEnum(EnumInt64Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumInt64 value) { ensureMutable(); this.value = value.value; } + + private EnumInt64 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumInt64 constants are read-only, change a copy: new EnumInt64(EnumInt64.VALUE)"); } @Override public int compareTo(EnumInt64 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumInt8.java b/projects/Java/src/com/chronoxor/enums/EnumInt8.java index 964e52dde..564a274b8 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumInt8.java +++ b/projects/Java/src/com/chronoxor/enums/EnumInt8.java @@ -9,14 +9,15 @@ public final class EnumInt8 implements Comparable { - public static final EnumInt8 ENUM_VALUE_0 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_0); - public static final EnumInt8 ENUM_VALUE_1 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_1); - public static final EnumInt8 ENUM_VALUE_2 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_2); - public static final EnumInt8 ENUM_VALUE_3 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_3); - public static final EnumInt8 ENUM_VALUE_4 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_4); - public static final EnumInt8 ENUM_VALUE_5 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_5); + public static final EnumInt8 ENUM_VALUE_0 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_0).asConstant(); + public static final EnumInt8 ENUM_VALUE_1 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_1).asConstant(); + public static final EnumInt8 ENUM_VALUE_2 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_2).asConstant(); + public static final EnumInt8 ENUM_VALUE_3 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_3).asConstant(); + public static final EnumInt8 ENUM_VALUE_4 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_4).asConstant(); + public static final EnumInt8 ENUM_VALUE_5 = new EnumInt8(EnumInt8Enum.ENUM_VALUE_5).asConstant(); private EnumInt8Enum value = EnumInt8Enum.values()[0]; + private boolean fbeConstant; public EnumInt8() {} public EnumInt8(byte value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumInt8() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = EnumInt8Enum.mapValue(value); } - public void setEnum(EnumInt8Enum value) { this.value = value; } - public void setEnum(EnumInt8 value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = EnumInt8Enum.mapValue(value); } + public void setEnum(EnumInt8Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumInt8 value) { ensureMutable(); this.value = value.value; } + + private EnumInt8 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumInt8 constants are read-only, change a copy: new EnumInt8(EnumInt8.VALUE)"); } @Override public int compareTo(EnumInt8 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumUInt16.java b/projects/Java/src/com/chronoxor/enums/EnumUInt16.java index 98a3d7ed8..984102201 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumUInt16.java +++ b/projects/Java/src/com/chronoxor/enums/EnumUInt16.java @@ -9,14 +9,15 @@ public final class EnumUInt16 implements Comparable { - public static final EnumUInt16 ENUM_VALUE_0 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_0); - public static final EnumUInt16 ENUM_VALUE_1 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_1); - public static final EnumUInt16 ENUM_VALUE_2 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_2); - public static final EnumUInt16 ENUM_VALUE_3 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_3); - public static final EnumUInt16 ENUM_VALUE_4 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_4); - public static final EnumUInt16 ENUM_VALUE_5 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_5); + public static final EnumUInt16 ENUM_VALUE_0 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_0).asConstant(); + public static final EnumUInt16 ENUM_VALUE_1 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_1).asConstant(); + public static final EnumUInt16 ENUM_VALUE_2 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_2).asConstant(); + public static final EnumUInt16 ENUM_VALUE_3 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_3).asConstant(); + public static final EnumUInt16 ENUM_VALUE_4 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_4).asConstant(); + public static final EnumUInt16 ENUM_VALUE_5 = new EnumUInt16(EnumUInt16Enum.ENUM_VALUE_5).asConstant(); private EnumUInt16Enum value = EnumUInt16Enum.values()[0]; + private boolean fbeConstant; public EnumUInt16() {} public EnumUInt16(short value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumUInt16() {} public void setDefault() { setEnum((short)0); } - public void setEnum(short value) { this.value = EnumUInt16Enum.mapValue(value); } - public void setEnum(EnumUInt16Enum value) { this.value = value; } - public void setEnum(EnumUInt16 value) { this.value = value.value; } + public void setEnum(short value) { ensureMutable(); this.value = EnumUInt16Enum.mapValue(value); } + public void setEnum(EnumUInt16Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumUInt16 value) { ensureMutable(); this.value = value.value; } + + private EnumUInt16 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumUInt16 constants are read-only, change a copy: new EnumUInt16(EnumUInt16.VALUE)"); } @Override public int compareTo(EnumUInt16 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumUInt32.java b/projects/Java/src/com/chronoxor/enums/EnumUInt32.java index 80a322c09..15d6456d5 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumUInt32.java +++ b/projects/Java/src/com/chronoxor/enums/EnumUInt32.java @@ -9,14 +9,15 @@ public final class EnumUInt32 implements Comparable { - public static final EnumUInt32 ENUM_VALUE_0 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_0); - public static final EnumUInt32 ENUM_VALUE_1 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_1); - public static final EnumUInt32 ENUM_VALUE_2 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_2); - public static final EnumUInt32 ENUM_VALUE_3 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_3); - public static final EnumUInt32 ENUM_VALUE_4 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_4); - public static final EnumUInt32 ENUM_VALUE_5 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_5); + public static final EnumUInt32 ENUM_VALUE_0 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_0).asConstant(); + public static final EnumUInt32 ENUM_VALUE_1 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_1).asConstant(); + public static final EnumUInt32 ENUM_VALUE_2 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_2).asConstant(); + public static final EnumUInt32 ENUM_VALUE_3 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_3).asConstant(); + public static final EnumUInt32 ENUM_VALUE_4 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_4).asConstant(); + public static final EnumUInt32 ENUM_VALUE_5 = new EnumUInt32(EnumUInt32Enum.ENUM_VALUE_5).asConstant(); private EnumUInt32Enum value = EnumUInt32Enum.values()[0]; + private boolean fbeConstant; public EnumUInt32() {} public EnumUInt32(int value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumUInt32() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.value = EnumUInt32Enum.mapValue(value); } - public void setEnum(EnumUInt32Enum value) { this.value = value; } - public void setEnum(EnumUInt32 value) { this.value = value.value; } + public void setEnum(int value) { ensureMutable(); this.value = EnumUInt32Enum.mapValue(value); } + public void setEnum(EnumUInt32Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumUInt32 value) { ensureMutable(); this.value = value.value; } + + private EnumUInt32 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumUInt32 constants are read-only, change a copy: new EnumUInt32(EnumUInt32.VALUE)"); } @Override public int compareTo(EnumUInt32 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumUInt64.java b/projects/Java/src/com/chronoxor/enums/EnumUInt64.java index 7a13e2af1..b43914292 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumUInt64.java +++ b/projects/Java/src/com/chronoxor/enums/EnumUInt64.java @@ -9,14 +9,15 @@ public final class EnumUInt64 implements Comparable { - public static final EnumUInt64 ENUM_VALUE_0 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_0); - public static final EnumUInt64 ENUM_VALUE_1 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_1); - public static final EnumUInt64 ENUM_VALUE_2 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_2); - public static final EnumUInt64 ENUM_VALUE_3 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_3); - public static final EnumUInt64 ENUM_VALUE_4 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_4); - public static final EnumUInt64 ENUM_VALUE_5 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_5); + public static final EnumUInt64 ENUM_VALUE_0 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_0).asConstant(); + public static final EnumUInt64 ENUM_VALUE_1 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_1).asConstant(); + public static final EnumUInt64 ENUM_VALUE_2 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_2).asConstant(); + public static final EnumUInt64 ENUM_VALUE_3 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_3).asConstant(); + public static final EnumUInt64 ENUM_VALUE_4 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_4).asConstant(); + public static final EnumUInt64 ENUM_VALUE_5 = new EnumUInt64(EnumUInt64Enum.ENUM_VALUE_5).asConstant(); private EnumUInt64Enum value = EnumUInt64Enum.values()[0]; + private boolean fbeConstant; public EnumUInt64() {} public EnumUInt64(long value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumUInt64() {} public void setDefault() { setEnum((long)0); } - public void setEnum(long value) { this.value = EnumUInt64Enum.mapValue(value); } - public void setEnum(EnumUInt64Enum value) { this.value = value; } - public void setEnum(EnumUInt64 value) { this.value = value.value; } + public void setEnum(long value) { ensureMutable(); this.value = EnumUInt64Enum.mapValue(value); } + public void setEnum(EnumUInt64Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumUInt64 value) { ensureMutable(); this.value = value.value; } + + private EnumUInt64 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumUInt64 constants are read-only, change a copy: new EnumUInt64(EnumUInt64.VALUE)"); } @Override public int compareTo(EnumUInt64 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumUInt8.java b/projects/Java/src/com/chronoxor/enums/EnumUInt8.java index 6c2e7a72c..a761d798a 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumUInt8.java +++ b/projects/Java/src/com/chronoxor/enums/EnumUInt8.java @@ -9,14 +9,15 @@ public final class EnumUInt8 implements Comparable { - public static final EnumUInt8 ENUM_VALUE_0 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_0); - public static final EnumUInt8 ENUM_VALUE_1 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_1); - public static final EnumUInt8 ENUM_VALUE_2 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_2); - public static final EnumUInt8 ENUM_VALUE_3 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_3); - public static final EnumUInt8 ENUM_VALUE_4 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_4); - public static final EnumUInt8 ENUM_VALUE_5 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_5); + public static final EnumUInt8 ENUM_VALUE_0 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_0).asConstant(); + public static final EnumUInt8 ENUM_VALUE_1 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_1).asConstant(); + public static final EnumUInt8 ENUM_VALUE_2 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_2).asConstant(); + public static final EnumUInt8 ENUM_VALUE_3 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_3).asConstant(); + public static final EnumUInt8 ENUM_VALUE_4 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_4).asConstant(); + public static final EnumUInt8 ENUM_VALUE_5 = new EnumUInt8(EnumUInt8Enum.ENUM_VALUE_5).asConstant(); private EnumUInt8Enum value = EnumUInt8Enum.values()[0]; + private boolean fbeConstant; public EnumUInt8() {} public EnumUInt8(byte value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumUInt8() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = EnumUInt8Enum.mapValue(value); } - public void setEnum(EnumUInt8Enum value) { this.value = value; } - public void setEnum(EnumUInt8 value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = EnumUInt8Enum.mapValue(value); } + public void setEnum(EnumUInt8Enum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumUInt8 value) { ensureMutable(); this.value = value.value; } + + private EnumUInt8 asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumUInt8 constants are read-only, change a copy: new EnumUInt8(EnumUInt8.VALUE)"); } @Override public int compareTo(EnumUInt8 other) diff --git a/projects/Java/src/com/chronoxor/enums/EnumWChar.java b/projects/Java/src/com/chronoxor/enums/EnumWChar.java index 11eaab876..c81d2ee27 100644 --- a/projects/Java/src/com/chronoxor/enums/EnumWChar.java +++ b/projects/Java/src/com/chronoxor/enums/EnumWChar.java @@ -9,14 +9,15 @@ public final class EnumWChar implements Comparable { - public static final EnumWChar ENUM_VALUE_0 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_0); - public static final EnumWChar ENUM_VALUE_1 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_1); - public static final EnumWChar ENUM_VALUE_2 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_2); - public static final EnumWChar ENUM_VALUE_3 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_3); - public static final EnumWChar ENUM_VALUE_4 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_4); - public static final EnumWChar ENUM_VALUE_5 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_5); + public static final EnumWChar ENUM_VALUE_0 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_0).asConstant(); + public static final EnumWChar ENUM_VALUE_1 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_1).asConstant(); + public static final EnumWChar ENUM_VALUE_2 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_2).asConstant(); + public static final EnumWChar ENUM_VALUE_3 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_3).asConstant(); + public static final EnumWChar ENUM_VALUE_4 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_4).asConstant(); + public static final EnumWChar ENUM_VALUE_5 = new EnumWChar(EnumWCharEnum.ENUM_VALUE_5).asConstant(); private EnumWCharEnum value = EnumWCharEnum.values()[0]; + private boolean fbeConstant; public EnumWChar() {} public EnumWChar(int value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumWChar() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.value = EnumWCharEnum.mapValue(value); } - public void setEnum(EnumWCharEnum value) { this.value = value; } - public void setEnum(EnumWChar value) { this.value = value.value; } + public void setEnum(int value) { ensureMutable(); this.value = EnumWCharEnum.mapValue(value); } + public void setEnum(EnumWCharEnum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumWChar value) { ensureMutable(); this.value = value.value; } + + private EnumWChar asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumWChar constants are read-only, change a copy: new EnumWChar(EnumWChar.VALUE)"); } @Override public int compareTo(EnumWChar other) diff --git a/projects/Java/src/com/chronoxor/enums/Enums.java b/projects/Java/src/com/chronoxor/enums/Enums.java index 18e2960ad..8cd535196 100644 --- a/projects/Java/src/com/chronoxor/enums/Enums.java +++ b/projects/Java/src/com/chronoxor/enums/Enums.java @@ -9,72 +9,72 @@ public class Enums implements Comparable { - public EnumByte byte0 = EnumByte.ENUM_VALUE_0; - public EnumByte byte1 = EnumByte.ENUM_VALUE_1; - public EnumByte byte2 = EnumByte.ENUM_VALUE_2; - public EnumByte byte3 = EnumByte.ENUM_VALUE_3; - public EnumByte byte4 = EnumByte.ENUM_VALUE_4; - public EnumByte byte5 = EnumByte.ENUM_VALUE_5; - public EnumChar char0 = EnumChar.ENUM_VALUE_0; - public EnumChar char1 = EnumChar.ENUM_VALUE_1; - public EnumChar char2 = EnumChar.ENUM_VALUE_2; - public EnumChar char3 = EnumChar.ENUM_VALUE_3; - public EnumChar char4 = EnumChar.ENUM_VALUE_4; - public EnumChar char5 = EnumChar.ENUM_VALUE_5; - public EnumWChar wchar0 = EnumWChar.ENUM_VALUE_0; - public EnumWChar wchar1 = EnumWChar.ENUM_VALUE_1; - public EnumWChar wchar2 = EnumWChar.ENUM_VALUE_2; - public EnumWChar wchar3 = EnumWChar.ENUM_VALUE_3; - public EnumWChar wchar4 = EnumWChar.ENUM_VALUE_4; - public EnumWChar wchar5 = EnumWChar.ENUM_VALUE_5; - public EnumInt8 int8b0 = EnumInt8.ENUM_VALUE_0; - public EnumInt8 int8b1 = EnumInt8.ENUM_VALUE_1; - public EnumInt8 int8b2 = EnumInt8.ENUM_VALUE_2; - public EnumInt8 int8b3 = EnumInt8.ENUM_VALUE_3; - public EnumInt8 int8b4 = EnumInt8.ENUM_VALUE_4; - public EnumInt8 int8b5 = EnumInt8.ENUM_VALUE_5; - public EnumUInt8 uint8b0 = EnumUInt8.ENUM_VALUE_0; - public EnumUInt8 uint8b1 = EnumUInt8.ENUM_VALUE_1; - public EnumUInt8 uint8b2 = EnumUInt8.ENUM_VALUE_2; - public EnumUInt8 uint8b3 = EnumUInt8.ENUM_VALUE_3; - public EnumUInt8 uint8b4 = EnumUInt8.ENUM_VALUE_4; - public EnumUInt8 uint8b5 = EnumUInt8.ENUM_VALUE_5; - public EnumInt16 int16b0 = EnumInt16.ENUM_VALUE_0; - public EnumInt16 int16b1 = EnumInt16.ENUM_VALUE_1; - public EnumInt16 int16b2 = EnumInt16.ENUM_VALUE_2; - public EnumInt16 int16b3 = EnumInt16.ENUM_VALUE_3; - public EnumInt16 int16b4 = EnumInt16.ENUM_VALUE_4; - public EnumInt16 int16b5 = EnumInt16.ENUM_VALUE_5; - public EnumUInt16 uint16b0 = EnumUInt16.ENUM_VALUE_0; - public EnumUInt16 uint16b1 = EnumUInt16.ENUM_VALUE_1; - public EnumUInt16 uint16b2 = EnumUInt16.ENUM_VALUE_2; - public EnumUInt16 uint16b3 = EnumUInt16.ENUM_VALUE_3; - public EnumUInt16 uint16b4 = EnumUInt16.ENUM_VALUE_4; - public EnumUInt16 uint16b5 = EnumUInt16.ENUM_VALUE_5; - public EnumInt32 int32b0 = EnumInt32.ENUM_VALUE_0; - public EnumInt32 int32b1 = EnumInt32.ENUM_VALUE_1; - public EnumInt32 int32b2 = EnumInt32.ENUM_VALUE_2; - public EnumInt32 int32b3 = EnumInt32.ENUM_VALUE_3; - public EnumInt32 int32b4 = EnumInt32.ENUM_VALUE_4; - public EnumInt32 int32b5 = EnumInt32.ENUM_VALUE_5; - public EnumUInt32 uint32b0 = EnumUInt32.ENUM_VALUE_0; - public EnumUInt32 uint32b1 = EnumUInt32.ENUM_VALUE_1; - public EnumUInt32 uint32b2 = EnumUInt32.ENUM_VALUE_2; - public EnumUInt32 uint32b3 = EnumUInt32.ENUM_VALUE_3; - public EnumUInt32 uint32b4 = EnumUInt32.ENUM_VALUE_4; - public EnumUInt32 uint32b5 = EnumUInt32.ENUM_VALUE_5; - public EnumInt64 int64b0 = EnumInt64.ENUM_VALUE_0; - public EnumInt64 int64b1 = EnumInt64.ENUM_VALUE_1; - public EnumInt64 int64b2 = EnumInt64.ENUM_VALUE_2; - public EnumInt64 int64b3 = EnumInt64.ENUM_VALUE_3; - public EnumInt64 int64b4 = EnumInt64.ENUM_VALUE_4; - public EnumInt64 int64b5 = EnumInt64.ENUM_VALUE_5; - public EnumUInt64 uint64b0 = EnumUInt64.ENUM_VALUE_0; - public EnumUInt64 uint64b1 = EnumUInt64.ENUM_VALUE_1; - public EnumUInt64 uint64b2 = EnumUInt64.ENUM_VALUE_2; - public EnumUInt64 uint64b3 = EnumUInt64.ENUM_VALUE_3; - public EnumUInt64 uint64b4 = EnumUInt64.ENUM_VALUE_4; - public EnumUInt64 uint64b5 = EnumUInt64.ENUM_VALUE_5; + public EnumByte byte0 = new EnumByte(EnumByte.ENUM_VALUE_0); + public EnumByte byte1 = new EnumByte(EnumByte.ENUM_VALUE_1); + public EnumByte byte2 = new EnumByte(EnumByte.ENUM_VALUE_2); + public EnumByte byte3 = new EnumByte(EnumByte.ENUM_VALUE_3); + public EnumByte byte4 = new EnumByte(EnumByte.ENUM_VALUE_4); + public EnumByte byte5 = new EnumByte(EnumByte.ENUM_VALUE_5); + public EnumChar char0 = new EnumChar(EnumChar.ENUM_VALUE_0); + public EnumChar char1 = new EnumChar(EnumChar.ENUM_VALUE_1); + public EnumChar char2 = new EnumChar(EnumChar.ENUM_VALUE_2); + public EnumChar char3 = new EnumChar(EnumChar.ENUM_VALUE_3); + public EnumChar char4 = new EnumChar(EnumChar.ENUM_VALUE_4); + public EnumChar char5 = new EnumChar(EnumChar.ENUM_VALUE_5); + public EnumWChar wchar0 = new EnumWChar(EnumWChar.ENUM_VALUE_0); + public EnumWChar wchar1 = new EnumWChar(EnumWChar.ENUM_VALUE_1); + public EnumWChar wchar2 = new EnumWChar(EnumWChar.ENUM_VALUE_2); + public EnumWChar wchar3 = new EnumWChar(EnumWChar.ENUM_VALUE_3); + public EnumWChar wchar4 = new EnumWChar(EnumWChar.ENUM_VALUE_4); + public EnumWChar wchar5 = new EnumWChar(EnumWChar.ENUM_VALUE_5); + public EnumInt8 int8b0 = new EnumInt8(EnumInt8.ENUM_VALUE_0); + public EnumInt8 int8b1 = new EnumInt8(EnumInt8.ENUM_VALUE_1); + public EnumInt8 int8b2 = new EnumInt8(EnumInt8.ENUM_VALUE_2); + public EnumInt8 int8b3 = new EnumInt8(EnumInt8.ENUM_VALUE_3); + public EnumInt8 int8b4 = new EnumInt8(EnumInt8.ENUM_VALUE_4); + public EnumInt8 int8b5 = new EnumInt8(EnumInt8.ENUM_VALUE_5); + public EnumUInt8 uint8b0 = new EnumUInt8(EnumUInt8.ENUM_VALUE_0); + public EnumUInt8 uint8b1 = new EnumUInt8(EnumUInt8.ENUM_VALUE_1); + public EnumUInt8 uint8b2 = new EnumUInt8(EnumUInt8.ENUM_VALUE_2); + public EnumUInt8 uint8b3 = new EnumUInt8(EnumUInt8.ENUM_VALUE_3); + public EnumUInt8 uint8b4 = new EnumUInt8(EnumUInt8.ENUM_VALUE_4); + public EnumUInt8 uint8b5 = new EnumUInt8(EnumUInt8.ENUM_VALUE_5); + public EnumInt16 int16b0 = new EnumInt16(EnumInt16.ENUM_VALUE_0); + public EnumInt16 int16b1 = new EnumInt16(EnumInt16.ENUM_VALUE_1); + public EnumInt16 int16b2 = new EnumInt16(EnumInt16.ENUM_VALUE_2); + public EnumInt16 int16b3 = new EnumInt16(EnumInt16.ENUM_VALUE_3); + public EnumInt16 int16b4 = new EnumInt16(EnumInt16.ENUM_VALUE_4); + public EnumInt16 int16b5 = new EnumInt16(EnumInt16.ENUM_VALUE_5); + public EnumUInt16 uint16b0 = new EnumUInt16(EnumUInt16.ENUM_VALUE_0); + public EnumUInt16 uint16b1 = new EnumUInt16(EnumUInt16.ENUM_VALUE_1); + public EnumUInt16 uint16b2 = new EnumUInt16(EnumUInt16.ENUM_VALUE_2); + public EnumUInt16 uint16b3 = new EnumUInt16(EnumUInt16.ENUM_VALUE_3); + public EnumUInt16 uint16b4 = new EnumUInt16(EnumUInt16.ENUM_VALUE_4); + public EnumUInt16 uint16b5 = new EnumUInt16(EnumUInt16.ENUM_VALUE_5); + public EnumInt32 int32b0 = new EnumInt32(EnumInt32.ENUM_VALUE_0); + public EnumInt32 int32b1 = new EnumInt32(EnumInt32.ENUM_VALUE_1); + public EnumInt32 int32b2 = new EnumInt32(EnumInt32.ENUM_VALUE_2); + public EnumInt32 int32b3 = new EnumInt32(EnumInt32.ENUM_VALUE_3); + public EnumInt32 int32b4 = new EnumInt32(EnumInt32.ENUM_VALUE_4); + public EnumInt32 int32b5 = new EnumInt32(EnumInt32.ENUM_VALUE_5); + public EnumUInt32 uint32b0 = new EnumUInt32(EnumUInt32.ENUM_VALUE_0); + public EnumUInt32 uint32b1 = new EnumUInt32(EnumUInt32.ENUM_VALUE_1); + public EnumUInt32 uint32b2 = new EnumUInt32(EnumUInt32.ENUM_VALUE_2); + public EnumUInt32 uint32b3 = new EnumUInt32(EnumUInt32.ENUM_VALUE_3); + public EnumUInt32 uint32b4 = new EnumUInt32(EnumUInt32.ENUM_VALUE_4); + public EnumUInt32 uint32b5 = new EnumUInt32(EnumUInt32.ENUM_VALUE_5); + public EnumInt64 int64b0 = new EnumInt64(EnumInt64.ENUM_VALUE_0); + public EnumInt64 int64b1 = new EnumInt64(EnumInt64.ENUM_VALUE_1); + public EnumInt64 int64b2 = new EnumInt64(EnumInt64.ENUM_VALUE_2); + public EnumInt64 int64b3 = new EnumInt64(EnumInt64.ENUM_VALUE_3); + public EnumInt64 int64b4 = new EnumInt64(EnumInt64.ENUM_VALUE_4); + public EnumInt64 int64b5 = new EnumInt64(EnumInt64.ENUM_VALUE_5); + public EnumUInt64 uint64b0 = new EnumUInt64(EnumUInt64.ENUM_VALUE_0); + public EnumUInt64 uint64b1 = new EnumUInt64(EnumUInt64.ENUM_VALUE_1); + public EnumUInt64 uint64b2 = new EnumUInt64(EnumUInt64.ENUM_VALUE_2); + public EnumUInt64 uint64b3 = new EnumUInt64(EnumUInt64.ENUM_VALUE_3); + public EnumUInt64 uint64b4 = new EnumUInt64(EnumUInt64.ENUM_VALUE_4); + public EnumUInt64 uint64b5 = new EnumUInt64(EnumUInt64.ENUM_VALUE_5); public static final long fbeTypeConst = 1; public long fbeType() { return fbeTypeConst; } diff --git a/projects/Java/src/com/chronoxor/enums/fbe/FieldModelEnums.java b/projects/Java/src/com/chronoxor/enums/fbe/FieldModelEnums.java index 8a12f6e45..f65ceefe7 100644 --- a/projects/Java/src/com/chronoxor/enums/fbe/FieldModelEnums.java +++ b/projects/Java/src/com/chronoxor/enums/fbe/FieldModelEnums.java @@ -792,397 +792,397 @@ public void getFields(com.chronoxor.enums.Enums fbeValue, long fbeStructSize) if ((fbeCurrentSize + byte0.fbeSize()) <= fbeStructSize) fbeValue.byte0 = byte0.get(com.chronoxor.enums.EnumByte.ENUM_VALUE_0); else - fbeValue.byte0 = com.chronoxor.enums.EnumByte.ENUM_VALUE_0; + fbeValue.byte0 = new com.chronoxor.enums.EnumByte(com.chronoxor.enums.EnumByte.ENUM_VALUE_0); fbeCurrentSize += byte0.fbeSize(); if ((fbeCurrentSize + byte1.fbeSize()) <= fbeStructSize) fbeValue.byte1 = byte1.get(com.chronoxor.enums.EnumByte.ENUM_VALUE_1); else - fbeValue.byte1 = com.chronoxor.enums.EnumByte.ENUM_VALUE_1; + fbeValue.byte1 = new com.chronoxor.enums.EnumByte(com.chronoxor.enums.EnumByte.ENUM_VALUE_1); fbeCurrentSize += byte1.fbeSize(); if ((fbeCurrentSize + byte2.fbeSize()) <= fbeStructSize) fbeValue.byte2 = byte2.get(com.chronoxor.enums.EnumByte.ENUM_VALUE_2); else - fbeValue.byte2 = com.chronoxor.enums.EnumByte.ENUM_VALUE_2; + fbeValue.byte2 = new com.chronoxor.enums.EnumByte(com.chronoxor.enums.EnumByte.ENUM_VALUE_2); fbeCurrentSize += byte2.fbeSize(); if ((fbeCurrentSize + byte3.fbeSize()) <= fbeStructSize) fbeValue.byte3 = byte3.get(com.chronoxor.enums.EnumByte.ENUM_VALUE_3); else - fbeValue.byte3 = com.chronoxor.enums.EnumByte.ENUM_VALUE_3; + fbeValue.byte3 = new com.chronoxor.enums.EnumByte(com.chronoxor.enums.EnumByte.ENUM_VALUE_3); fbeCurrentSize += byte3.fbeSize(); if ((fbeCurrentSize + byte4.fbeSize()) <= fbeStructSize) fbeValue.byte4 = byte4.get(com.chronoxor.enums.EnumByte.ENUM_VALUE_4); else - fbeValue.byte4 = com.chronoxor.enums.EnumByte.ENUM_VALUE_4; + fbeValue.byte4 = new com.chronoxor.enums.EnumByte(com.chronoxor.enums.EnumByte.ENUM_VALUE_4); fbeCurrentSize += byte4.fbeSize(); if ((fbeCurrentSize + byte5.fbeSize()) <= fbeStructSize) fbeValue.byte5 = byte5.get(com.chronoxor.enums.EnumByte.ENUM_VALUE_5); else - fbeValue.byte5 = com.chronoxor.enums.EnumByte.ENUM_VALUE_5; + fbeValue.byte5 = new com.chronoxor.enums.EnumByte(com.chronoxor.enums.EnumByte.ENUM_VALUE_5); fbeCurrentSize += byte5.fbeSize(); if ((fbeCurrentSize + char0.fbeSize()) <= fbeStructSize) fbeValue.char0 = char0.get(com.chronoxor.enums.EnumChar.ENUM_VALUE_0); else - fbeValue.char0 = com.chronoxor.enums.EnumChar.ENUM_VALUE_0; + fbeValue.char0 = new com.chronoxor.enums.EnumChar(com.chronoxor.enums.EnumChar.ENUM_VALUE_0); fbeCurrentSize += char0.fbeSize(); if ((fbeCurrentSize + char1.fbeSize()) <= fbeStructSize) fbeValue.char1 = char1.get(com.chronoxor.enums.EnumChar.ENUM_VALUE_1); else - fbeValue.char1 = com.chronoxor.enums.EnumChar.ENUM_VALUE_1; + fbeValue.char1 = new com.chronoxor.enums.EnumChar(com.chronoxor.enums.EnumChar.ENUM_VALUE_1); fbeCurrentSize += char1.fbeSize(); if ((fbeCurrentSize + char2.fbeSize()) <= fbeStructSize) fbeValue.char2 = char2.get(com.chronoxor.enums.EnumChar.ENUM_VALUE_2); else - fbeValue.char2 = com.chronoxor.enums.EnumChar.ENUM_VALUE_2; + fbeValue.char2 = new com.chronoxor.enums.EnumChar(com.chronoxor.enums.EnumChar.ENUM_VALUE_2); fbeCurrentSize += char2.fbeSize(); if ((fbeCurrentSize + char3.fbeSize()) <= fbeStructSize) fbeValue.char3 = char3.get(com.chronoxor.enums.EnumChar.ENUM_VALUE_3); else - fbeValue.char3 = com.chronoxor.enums.EnumChar.ENUM_VALUE_3; + fbeValue.char3 = new com.chronoxor.enums.EnumChar(com.chronoxor.enums.EnumChar.ENUM_VALUE_3); fbeCurrentSize += char3.fbeSize(); if ((fbeCurrentSize + char4.fbeSize()) <= fbeStructSize) fbeValue.char4 = char4.get(com.chronoxor.enums.EnumChar.ENUM_VALUE_4); else - fbeValue.char4 = com.chronoxor.enums.EnumChar.ENUM_VALUE_4; + fbeValue.char4 = new com.chronoxor.enums.EnumChar(com.chronoxor.enums.EnumChar.ENUM_VALUE_4); fbeCurrentSize += char4.fbeSize(); if ((fbeCurrentSize + char5.fbeSize()) <= fbeStructSize) fbeValue.char5 = char5.get(com.chronoxor.enums.EnumChar.ENUM_VALUE_5); else - fbeValue.char5 = com.chronoxor.enums.EnumChar.ENUM_VALUE_5; + fbeValue.char5 = new com.chronoxor.enums.EnumChar(com.chronoxor.enums.EnumChar.ENUM_VALUE_5); fbeCurrentSize += char5.fbeSize(); if ((fbeCurrentSize + wchar0.fbeSize()) <= fbeStructSize) fbeValue.wchar0 = wchar0.get(com.chronoxor.enums.EnumWChar.ENUM_VALUE_0); else - fbeValue.wchar0 = com.chronoxor.enums.EnumWChar.ENUM_VALUE_0; + fbeValue.wchar0 = new com.chronoxor.enums.EnumWChar(com.chronoxor.enums.EnumWChar.ENUM_VALUE_0); fbeCurrentSize += wchar0.fbeSize(); if ((fbeCurrentSize + wchar1.fbeSize()) <= fbeStructSize) fbeValue.wchar1 = wchar1.get(com.chronoxor.enums.EnumWChar.ENUM_VALUE_1); else - fbeValue.wchar1 = com.chronoxor.enums.EnumWChar.ENUM_VALUE_1; + fbeValue.wchar1 = new com.chronoxor.enums.EnumWChar(com.chronoxor.enums.EnumWChar.ENUM_VALUE_1); fbeCurrentSize += wchar1.fbeSize(); if ((fbeCurrentSize + wchar2.fbeSize()) <= fbeStructSize) fbeValue.wchar2 = wchar2.get(com.chronoxor.enums.EnumWChar.ENUM_VALUE_2); else - fbeValue.wchar2 = com.chronoxor.enums.EnumWChar.ENUM_VALUE_2; + fbeValue.wchar2 = new com.chronoxor.enums.EnumWChar(com.chronoxor.enums.EnumWChar.ENUM_VALUE_2); fbeCurrentSize += wchar2.fbeSize(); if ((fbeCurrentSize + wchar3.fbeSize()) <= fbeStructSize) fbeValue.wchar3 = wchar3.get(com.chronoxor.enums.EnumWChar.ENUM_VALUE_3); else - fbeValue.wchar3 = com.chronoxor.enums.EnumWChar.ENUM_VALUE_3; + fbeValue.wchar3 = new com.chronoxor.enums.EnumWChar(com.chronoxor.enums.EnumWChar.ENUM_VALUE_3); fbeCurrentSize += wchar3.fbeSize(); if ((fbeCurrentSize + wchar4.fbeSize()) <= fbeStructSize) fbeValue.wchar4 = wchar4.get(com.chronoxor.enums.EnumWChar.ENUM_VALUE_4); else - fbeValue.wchar4 = com.chronoxor.enums.EnumWChar.ENUM_VALUE_4; + fbeValue.wchar4 = new com.chronoxor.enums.EnumWChar(com.chronoxor.enums.EnumWChar.ENUM_VALUE_4); fbeCurrentSize += wchar4.fbeSize(); if ((fbeCurrentSize + wchar5.fbeSize()) <= fbeStructSize) fbeValue.wchar5 = wchar5.get(com.chronoxor.enums.EnumWChar.ENUM_VALUE_5); else - fbeValue.wchar5 = com.chronoxor.enums.EnumWChar.ENUM_VALUE_5; + fbeValue.wchar5 = new com.chronoxor.enums.EnumWChar(com.chronoxor.enums.EnumWChar.ENUM_VALUE_5); fbeCurrentSize += wchar5.fbeSize(); if ((fbeCurrentSize + int8b0.fbeSize()) <= fbeStructSize) fbeValue.int8b0 = int8b0.get(com.chronoxor.enums.EnumInt8.ENUM_VALUE_0); else - fbeValue.int8b0 = com.chronoxor.enums.EnumInt8.ENUM_VALUE_0; + fbeValue.int8b0 = new com.chronoxor.enums.EnumInt8(com.chronoxor.enums.EnumInt8.ENUM_VALUE_0); fbeCurrentSize += int8b0.fbeSize(); if ((fbeCurrentSize + int8b1.fbeSize()) <= fbeStructSize) fbeValue.int8b1 = int8b1.get(com.chronoxor.enums.EnumInt8.ENUM_VALUE_1); else - fbeValue.int8b1 = com.chronoxor.enums.EnumInt8.ENUM_VALUE_1; + fbeValue.int8b1 = new com.chronoxor.enums.EnumInt8(com.chronoxor.enums.EnumInt8.ENUM_VALUE_1); fbeCurrentSize += int8b1.fbeSize(); if ((fbeCurrentSize + int8b2.fbeSize()) <= fbeStructSize) fbeValue.int8b2 = int8b2.get(com.chronoxor.enums.EnumInt8.ENUM_VALUE_2); else - fbeValue.int8b2 = com.chronoxor.enums.EnumInt8.ENUM_VALUE_2; + fbeValue.int8b2 = new com.chronoxor.enums.EnumInt8(com.chronoxor.enums.EnumInt8.ENUM_VALUE_2); fbeCurrentSize += int8b2.fbeSize(); if ((fbeCurrentSize + int8b3.fbeSize()) <= fbeStructSize) fbeValue.int8b3 = int8b3.get(com.chronoxor.enums.EnumInt8.ENUM_VALUE_3); else - fbeValue.int8b3 = com.chronoxor.enums.EnumInt8.ENUM_VALUE_3; + fbeValue.int8b3 = new com.chronoxor.enums.EnumInt8(com.chronoxor.enums.EnumInt8.ENUM_VALUE_3); fbeCurrentSize += int8b3.fbeSize(); if ((fbeCurrentSize + int8b4.fbeSize()) <= fbeStructSize) fbeValue.int8b4 = int8b4.get(com.chronoxor.enums.EnumInt8.ENUM_VALUE_4); else - fbeValue.int8b4 = com.chronoxor.enums.EnumInt8.ENUM_VALUE_4; + fbeValue.int8b4 = new com.chronoxor.enums.EnumInt8(com.chronoxor.enums.EnumInt8.ENUM_VALUE_4); fbeCurrentSize += int8b4.fbeSize(); if ((fbeCurrentSize + int8b5.fbeSize()) <= fbeStructSize) fbeValue.int8b5 = int8b5.get(com.chronoxor.enums.EnumInt8.ENUM_VALUE_5); else - fbeValue.int8b5 = com.chronoxor.enums.EnumInt8.ENUM_VALUE_5; + fbeValue.int8b5 = new com.chronoxor.enums.EnumInt8(com.chronoxor.enums.EnumInt8.ENUM_VALUE_5); fbeCurrentSize += int8b5.fbeSize(); if ((fbeCurrentSize + uint8b0.fbeSize()) <= fbeStructSize) fbeValue.uint8b0 = uint8b0.get(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_0); else - fbeValue.uint8b0 = com.chronoxor.enums.EnumUInt8.ENUM_VALUE_0; + fbeValue.uint8b0 = new com.chronoxor.enums.EnumUInt8(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_0); fbeCurrentSize += uint8b0.fbeSize(); if ((fbeCurrentSize + uint8b1.fbeSize()) <= fbeStructSize) fbeValue.uint8b1 = uint8b1.get(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_1); else - fbeValue.uint8b1 = com.chronoxor.enums.EnumUInt8.ENUM_VALUE_1; + fbeValue.uint8b1 = new com.chronoxor.enums.EnumUInt8(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_1); fbeCurrentSize += uint8b1.fbeSize(); if ((fbeCurrentSize + uint8b2.fbeSize()) <= fbeStructSize) fbeValue.uint8b2 = uint8b2.get(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_2); else - fbeValue.uint8b2 = com.chronoxor.enums.EnumUInt8.ENUM_VALUE_2; + fbeValue.uint8b2 = new com.chronoxor.enums.EnumUInt8(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_2); fbeCurrentSize += uint8b2.fbeSize(); if ((fbeCurrentSize + uint8b3.fbeSize()) <= fbeStructSize) fbeValue.uint8b3 = uint8b3.get(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_3); else - fbeValue.uint8b3 = com.chronoxor.enums.EnumUInt8.ENUM_VALUE_3; + fbeValue.uint8b3 = new com.chronoxor.enums.EnumUInt8(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_3); fbeCurrentSize += uint8b3.fbeSize(); if ((fbeCurrentSize + uint8b4.fbeSize()) <= fbeStructSize) fbeValue.uint8b4 = uint8b4.get(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_4); else - fbeValue.uint8b4 = com.chronoxor.enums.EnumUInt8.ENUM_VALUE_4; + fbeValue.uint8b4 = new com.chronoxor.enums.EnumUInt8(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_4); fbeCurrentSize += uint8b4.fbeSize(); if ((fbeCurrentSize + uint8b5.fbeSize()) <= fbeStructSize) fbeValue.uint8b5 = uint8b5.get(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_5); else - fbeValue.uint8b5 = com.chronoxor.enums.EnumUInt8.ENUM_VALUE_5; + fbeValue.uint8b5 = new com.chronoxor.enums.EnumUInt8(com.chronoxor.enums.EnumUInt8.ENUM_VALUE_5); fbeCurrentSize += uint8b5.fbeSize(); if ((fbeCurrentSize + int16b0.fbeSize()) <= fbeStructSize) fbeValue.int16b0 = int16b0.get(com.chronoxor.enums.EnumInt16.ENUM_VALUE_0); else - fbeValue.int16b0 = com.chronoxor.enums.EnumInt16.ENUM_VALUE_0; + fbeValue.int16b0 = new com.chronoxor.enums.EnumInt16(com.chronoxor.enums.EnumInt16.ENUM_VALUE_0); fbeCurrentSize += int16b0.fbeSize(); if ((fbeCurrentSize + int16b1.fbeSize()) <= fbeStructSize) fbeValue.int16b1 = int16b1.get(com.chronoxor.enums.EnumInt16.ENUM_VALUE_1); else - fbeValue.int16b1 = com.chronoxor.enums.EnumInt16.ENUM_VALUE_1; + fbeValue.int16b1 = new com.chronoxor.enums.EnumInt16(com.chronoxor.enums.EnumInt16.ENUM_VALUE_1); fbeCurrentSize += int16b1.fbeSize(); if ((fbeCurrentSize + int16b2.fbeSize()) <= fbeStructSize) fbeValue.int16b2 = int16b2.get(com.chronoxor.enums.EnumInt16.ENUM_VALUE_2); else - fbeValue.int16b2 = com.chronoxor.enums.EnumInt16.ENUM_VALUE_2; + fbeValue.int16b2 = new com.chronoxor.enums.EnumInt16(com.chronoxor.enums.EnumInt16.ENUM_VALUE_2); fbeCurrentSize += int16b2.fbeSize(); if ((fbeCurrentSize + int16b3.fbeSize()) <= fbeStructSize) fbeValue.int16b3 = int16b3.get(com.chronoxor.enums.EnumInt16.ENUM_VALUE_3); else - fbeValue.int16b3 = com.chronoxor.enums.EnumInt16.ENUM_VALUE_3; + fbeValue.int16b3 = new com.chronoxor.enums.EnumInt16(com.chronoxor.enums.EnumInt16.ENUM_VALUE_3); fbeCurrentSize += int16b3.fbeSize(); if ((fbeCurrentSize + int16b4.fbeSize()) <= fbeStructSize) fbeValue.int16b4 = int16b4.get(com.chronoxor.enums.EnumInt16.ENUM_VALUE_4); else - fbeValue.int16b4 = com.chronoxor.enums.EnumInt16.ENUM_VALUE_4; + fbeValue.int16b4 = new com.chronoxor.enums.EnumInt16(com.chronoxor.enums.EnumInt16.ENUM_VALUE_4); fbeCurrentSize += int16b4.fbeSize(); if ((fbeCurrentSize + int16b5.fbeSize()) <= fbeStructSize) fbeValue.int16b5 = int16b5.get(com.chronoxor.enums.EnumInt16.ENUM_VALUE_5); else - fbeValue.int16b5 = com.chronoxor.enums.EnumInt16.ENUM_VALUE_5; + fbeValue.int16b5 = new com.chronoxor.enums.EnumInt16(com.chronoxor.enums.EnumInt16.ENUM_VALUE_5); fbeCurrentSize += int16b5.fbeSize(); if ((fbeCurrentSize + uint16b0.fbeSize()) <= fbeStructSize) fbeValue.uint16b0 = uint16b0.get(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_0); else - fbeValue.uint16b0 = com.chronoxor.enums.EnumUInt16.ENUM_VALUE_0; + fbeValue.uint16b0 = new com.chronoxor.enums.EnumUInt16(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_0); fbeCurrentSize += uint16b0.fbeSize(); if ((fbeCurrentSize + uint16b1.fbeSize()) <= fbeStructSize) fbeValue.uint16b1 = uint16b1.get(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_1); else - fbeValue.uint16b1 = com.chronoxor.enums.EnumUInt16.ENUM_VALUE_1; + fbeValue.uint16b1 = new com.chronoxor.enums.EnumUInt16(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_1); fbeCurrentSize += uint16b1.fbeSize(); if ((fbeCurrentSize + uint16b2.fbeSize()) <= fbeStructSize) fbeValue.uint16b2 = uint16b2.get(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_2); else - fbeValue.uint16b2 = com.chronoxor.enums.EnumUInt16.ENUM_VALUE_2; + fbeValue.uint16b2 = new com.chronoxor.enums.EnumUInt16(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_2); fbeCurrentSize += uint16b2.fbeSize(); if ((fbeCurrentSize + uint16b3.fbeSize()) <= fbeStructSize) fbeValue.uint16b3 = uint16b3.get(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_3); else - fbeValue.uint16b3 = com.chronoxor.enums.EnumUInt16.ENUM_VALUE_3; + fbeValue.uint16b3 = new com.chronoxor.enums.EnumUInt16(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_3); fbeCurrentSize += uint16b3.fbeSize(); if ((fbeCurrentSize + uint16b4.fbeSize()) <= fbeStructSize) fbeValue.uint16b4 = uint16b4.get(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_4); else - fbeValue.uint16b4 = com.chronoxor.enums.EnumUInt16.ENUM_VALUE_4; + fbeValue.uint16b4 = new com.chronoxor.enums.EnumUInt16(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_4); fbeCurrentSize += uint16b4.fbeSize(); if ((fbeCurrentSize + uint16b5.fbeSize()) <= fbeStructSize) fbeValue.uint16b5 = uint16b5.get(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_5); else - fbeValue.uint16b5 = com.chronoxor.enums.EnumUInt16.ENUM_VALUE_5; + fbeValue.uint16b5 = new com.chronoxor.enums.EnumUInt16(com.chronoxor.enums.EnumUInt16.ENUM_VALUE_5); fbeCurrentSize += uint16b5.fbeSize(); if ((fbeCurrentSize + int32b0.fbeSize()) <= fbeStructSize) fbeValue.int32b0 = int32b0.get(com.chronoxor.enums.EnumInt32.ENUM_VALUE_0); else - fbeValue.int32b0 = com.chronoxor.enums.EnumInt32.ENUM_VALUE_0; + fbeValue.int32b0 = new com.chronoxor.enums.EnumInt32(com.chronoxor.enums.EnumInt32.ENUM_VALUE_0); fbeCurrentSize += int32b0.fbeSize(); if ((fbeCurrentSize + int32b1.fbeSize()) <= fbeStructSize) fbeValue.int32b1 = int32b1.get(com.chronoxor.enums.EnumInt32.ENUM_VALUE_1); else - fbeValue.int32b1 = com.chronoxor.enums.EnumInt32.ENUM_VALUE_1; + fbeValue.int32b1 = new com.chronoxor.enums.EnumInt32(com.chronoxor.enums.EnumInt32.ENUM_VALUE_1); fbeCurrentSize += int32b1.fbeSize(); if ((fbeCurrentSize + int32b2.fbeSize()) <= fbeStructSize) fbeValue.int32b2 = int32b2.get(com.chronoxor.enums.EnumInt32.ENUM_VALUE_2); else - fbeValue.int32b2 = com.chronoxor.enums.EnumInt32.ENUM_VALUE_2; + fbeValue.int32b2 = new com.chronoxor.enums.EnumInt32(com.chronoxor.enums.EnumInt32.ENUM_VALUE_2); fbeCurrentSize += int32b2.fbeSize(); if ((fbeCurrentSize + int32b3.fbeSize()) <= fbeStructSize) fbeValue.int32b3 = int32b3.get(com.chronoxor.enums.EnumInt32.ENUM_VALUE_3); else - fbeValue.int32b3 = com.chronoxor.enums.EnumInt32.ENUM_VALUE_3; + fbeValue.int32b3 = new com.chronoxor.enums.EnumInt32(com.chronoxor.enums.EnumInt32.ENUM_VALUE_3); fbeCurrentSize += int32b3.fbeSize(); if ((fbeCurrentSize + int32b4.fbeSize()) <= fbeStructSize) fbeValue.int32b4 = int32b4.get(com.chronoxor.enums.EnumInt32.ENUM_VALUE_4); else - fbeValue.int32b4 = com.chronoxor.enums.EnumInt32.ENUM_VALUE_4; + fbeValue.int32b4 = new com.chronoxor.enums.EnumInt32(com.chronoxor.enums.EnumInt32.ENUM_VALUE_4); fbeCurrentSize += int32b4.fbeSize(); if ((fbeCurrentSize + int32b5.fbeSize()) <= fbeStructSize) fbeValue.int32b5 = int32b5.get(com.chronoxor.enums.EnumInt32.ENUM_VALUE_5); else - fbeValue.int32b5 = com.chronoxor.enums.EnumInt32.ENUM_VALUE_5; + fbeValue.int32b5 = new com.chronoxor.enums.EnumInt32(com.chronoxor.enums.EnumInt32.ENUM_VALUE_5); fbeCurrentSize += int32b5.fbeSize(); if ((fbeCurrentSize + uint32b0.fbeSize()) <= fbeStructSize) fbeValue.uint32b0 = uint32b0.get(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_0); else - fbeValue.uint32b0 = com.chronoxor.enums.EnumUInt32.ENUM_VALUE_0; + fbeValue.uint32b0 = new com.chronoxor.enums.EnumUInt32(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_0); fbeCurrentSize += uint32b0.fbeSize(); if ((fbeCurrentSize + uint32b1.fbeSize()) <= fbeStructSize) fbeValue.uint32b1 = uint32b1.get(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_1); else - fbeValue.uint32b1 = com.chronoxor.enums.EnumUInt32.ENUM_VALUE_1; + fbeValue.uint32b1 = new com.chronoxor.enums.EnumUInt32(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_1); fbeCurrentSize += uint32b1.fbeSize(); if ((fbeCurrentSize + uint32b2.fbeSize()) <= fbeStructSize) fbeValue.uint32b2 = uint32b2.get(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_2); else - fbeValue.uint32b2 = com.chronoxor.enums.EnumUInt32.ENUM_VALUE_2; + fbeValue.uint32b2 = new com.chronoxor.enums.EnumUInt32(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_2); fbeCurrentSize += uint32b2.fbeSize(); if ((fbeCurrentSize + uint32b3.fbeSize()) <= fbeStructSize) fbeValue.uint32b3 = uint32b3.get(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_3); else - fbeValue.uint32b3 = com.chronoxor.enums.EnumUInt32.ENUM_VALUE_3; + fbeValue.uint32b3 = new com.chronoxor.enums.EnumUInt32(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_3); fbeCurrentSize += uint32b3.fbeSize(); if ((fbeCurrentSize + uint32b4.fbeSize()) <= fbeStructSize) fbeValue.uint32b4 = uint32b4.get(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_4); else - fbeValue.uint32b4 = com.chronoxor.enums.EnumUInt32.ENUM_VALUE_4; + fbeValue.uint32b4 = new com.chronoxor.enums.EnumUInt32(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_4); fbeCurrentSize += uint32b4.fbeSize(); if ((fbeCurrentSize + uint32b5.fbeSize()) <= fbeStructSize) fbeValue.uint32b5 = uint32b5.get(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_5); else - fbeValue.uint32b5 = com.chronoxor.enums.EnumUInt32.ENUM_VALUE_5; + fbeValue.uint32b5 = new com.chronoxor.enums.EnumUInt32(com.chronoxor.enums.EnumUInt32.ENUM_VALUE_5); fbeCurrentSize += uint32b5.fbeSize(); if ((fbeCurrentSize + int64b0.fbeSize()) <= fbeStructSize) fbeValue.int64b0 = int64b0.get(com.chronoxor.enums.EnumInt64.ENUM_VALUE_0); else - fbeValue.int64b0 = com.chronoxor.enums.EnumInt64.ENUM_VALUE_0; + fbeValue.int64b0 = new com.chronoxor.enums.EnumInt64(com.chronoxor.enums.EnumInt64.ENUM_VALUE_0); fbeCurrentSize += int64b0.fbeSize(); if ((fbeCurrentSize + int64b1.fbeSize()) <= fbeStructSize) fbeValue.int64b1 = int64b1.get(com.chronoxor.enums.EnumInt64.ENUM_VALUE_1); else - fbeValue.int64b1 = com.chronoxor.enums.EnumInt64.ENUM_VALUE_1; + fbeValue.int64b1 = new com.chronoxor.enums.EnumInt64(com.chronoxor.enums.EnumInt64.ENUM_VALUE_1); fbeCurrentSize += int64b1.fbeSize(); if ((fbeCurrentSize + int64b2.fbeSize()) <= fbeStructSize) fbeValue.int64b2 = int64b2.get(com.chronoxor.enums.EnumInt64.ENUM_VALUE_2); else - fbeValue.int64b2 = com.chronoxor.enums.EnumInt64.ENUM_VALUE_2; + fbeValue.int64b2 = new com.chronoxor.enums.EnumInt64(com.chronoxor.enums.EnumInt64.ENUM_VALUE_2); fbeCurrentSize += int64b2.fbeSize(); if ((fbeCurrentSize + int64b3.fbeSize()) <= fbeStructSize) fbeValue.int64b3 = int64b3.get(com.chronoxor.enums.EnumInt64.ENUM_VALUE_3); else - fbeValue.int64b3 = com.chronoxor.enums.EnumInt64.ENUM_VALUE_3; + fbeValue.int64b3 = new com.chronoxor.enums.EnumInt64(com.chronoxor.enums.EnumInt64.ENUM_VALUE_3); fbeCurrentSize += int64b3.fbeSize(); if ((fbeCurrentSize + int64b4.fbeSize()) <= fbeStructSize) fbeValue.int64b4 = int64b4.get(com.chronoxor.enums.EnumInt64.ENUM_VALUE_4); else - fbeValue.int64b4 = com.chronoxor.enums.EnumInt64.ENUM_VALUE_4; + fbeValue.int64b4 = new com.chronoxor.enums.EnumInt64(com.chronoxor.enums.EnumInt64.ENUM_VALUE_4); fbeCurrentSize += int64b4.fbeSize(); if ((fbeCurrentSize + int64b5.fbeSize()) <= fbeStructSize) fbeValue.int64b5 = int64b5.get(com.chronoxor.enums.EnumInt64.ENUM_VALUE_5); else - fbeValue.int64b5 = com.chronoxor.enums.EnumInt64.ENUM_VALUE_5; + fbeValue.int64b5 = new com.chronoxor.enums.EnumInt64(com.chronoxor.enums.EnumInt64.ENUM_VALUE_5); fbeCurrentSize += int64b5.fbeSize(); if ((fbeCurrentSize + uint64b0.fbeSize()) <= fbeStructSize) fbeValue.uint64b0 = uint64b0.get(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_0); else - fbeValue.uint64b0 = com.chronoxor.enums.EnumUInt64.ENUM_VALUE_0; + fbeValue.uint64b0 = new com.chronoxor.enums.EnumUInt64(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_0); fbeCurrentSize += uint64b0.fbeSize(); if ((fbeCurrentSize + uint64b1.fbeSize()) <= fbeStructSize) fbeValue.uint64b1 = uint64b1.get(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_1); else - fbeValue.uint64b1 = com.chronoxor.enums.EnumUInt64.ENUM_VALUE_1; + fbeValue.uint64b1 = new com.chronoxor.enums.EnumUInt64(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_1); fbeCurrentSize += uint64b1.fbeSize(); if ((fbeCurrentSize + uint64b2.fbeSize()) <= fbeStructSize) fbeValue.uint64b2 = uint64b2.get(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_2); else - fbeValue.uint64b2 = com.chronoxor.enums.EnumUInt64.ENUM_VALUE_2; + fbeValue.uint64b2 = new com.chronoxor.enums.EnumUInt64(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_2); fbeCurrentSize += uint64b2.fbeSize(); if ((fbeCurrentSize + uint64b3.fbeSize()) <= fbeStructSize) fbeValue.uint64b3 = uint64b3.get(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_3); else - fbeValue.uint64b3 = com.chronoxor.enums.EnumUInt64.ENUM_VALUE_3; + fbeValue.uint64b3 = new com.chronoxor.enums.EnumUInt64(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_3); fbeCurrentSize += uint64b3.fbeSize(); if ((fbeCurrentSize + uint64b4.fbeSize()) <= fbeStructSize) fbeValue.uint64b4 = uint64b4.get(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_4); else - fbeValue.uint64b4 = com.chronoxor.enums.EnumUInt64.ENUM_VALUE_4; + fbeValue.uint64b4 = new com.chronoxor.enums.EnumUInt64(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_4); fbeCurrentSize += uint64b4.fbeSize(); if ((fbeCurrentSize + uint64b5.fbeSize()) <= fbeStructSize) fbeValue.uint64b5 = uint64b5.get(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_5); else - fbeValue.uint64b5 = com.chronoxor.enums.EnumUInt64.ENUM_VALUE_5; + fbeValue.uint64b5 = new com.chronoxor.enums.EnumUInt64(com.chronoxor.enums.EnumUInt64.ENUM_VALUE_5); fbeCurrentSize += uint64b5.fbeSize(); } diff --git a/projects/Java/src/com/chronoxor/proto/OrderSide.java b/projects/Java/src/com/chronoxor/proto/OrderSide.java index 04be2b622..83cf99e23 100644 --- a/projects/Java/src/com/chronoxor/proto/OrderSide.java +++ b/projects/Java/src/com/chronoxor/proto/OrderSide.java @@ -9,10 +9,11 @@ public final class OrderSide implements Comparable { - public static final OrderSide buy = new OrderSide(OrderSideEnum.buy); - public static final OrderSide sell = new OrderSide(OrderSideEnum.sell); + public static final OrderSide buy = new OrderSide(OrderSideEnum.buy).asConstant(); + public static final OrderSide sell = new OrderSide(OrderSideEnum.sell).asConstant(); private OrderSideEnum value = OrderSideEnum.values()[0]; + private boolean fbeConstant; public OrderSide() {} public OrderSide(byte value) { setEnum(value); } @@ -24,9 +25,12 @@ public OrderSide() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = OrderSideEnum.mapValue(value); } - public void setEnum(OrderSideEnum value) { this.value = value; } - public void setEnum(OrderSide value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = OrderSideEnum.mapValue(value); } + public void setEnum(OrderSideEnum value) { ensureMutable(); this.value = value; } + public void setEnum(OrderSide value) { ensureMutable(); this.value = value.value; } + + private OrderSide asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("OrderSide constants are read-only, change a copy: new OrderSide(OrderSide.VALUE)"); } @Override public int compareTo(OrderSide other) diff --git a/projects/Java/src/com/chronoxor/proto/OrderType.java b/projects/Java/src/com/chronoxor/proto/OrderType.java index 9f6ebba25..00934121d 100644 --- a/projects/Java/src/com/chronoxor/proto/OrderType.java +++ b/projects/Java/src/com/chronoxor/proto/OrderType.java @@ -9,11 +9,12 @@ public final class OrderType implements Comparable { - public static final OrderType market = new OrderType(OrderTypeEnum.market); - public static final OrderType limit = new OrderType(OrderTypeEnum.limit); - public static final OrderType stop = new OrderType(OrderTypeEnum.stop); + public static final OrderType market = new OrderType(OrderTypeEnum.market).asConstant(); + public static final OrderType limit = new OrderType(OrderTypeEnum.limit).asConstant(); + public static final OrderType stop = new OrderType(OrderTypeEnum.stop).asConstant(); private OrderTypeEnum value = OrderTypeEnum.values()[0]; + private boolean fbeConstant; public OrderType() {} public OrderType(byte value) { setEnum(value); } @@ -25,9 +26,12 @@ public OrderType() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = OrderTypeEnum.mapValue(value); } - public void setEnum(OrderTypeEnum value) { this.value = value; } - public void setEnum(OrderType value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = OrderTypeEnum.mapValue(value); } + public void setEnum(OrderTypeEnum value) { ensureMutable(); this.value = value; } + public void setEnum(OrderType value) { ensureMutable(); this.value = value.value; } + + private OrderType asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("OrderType constants are read-only, change a copy: new OrderType(OrderType.VALUE)"); } @Override public int compareTo(OrderType other) diff --git a/projects/Java/src/com/chronoxor/proto/State.java b/projects/Java/src/com/chronoxor/proto/State.java index faeaa2974..e27f428b8 100644 --- a/projects/Java/src/com/chronoxor/proto/State.java +++ b/projects/Java/src/com/chronoxor/proto/State.java @@ -9,16 +9,17 @@ public final class State implements Comparable { - public static final State unknown = new State(StateEnum.unknown); - public static final State invalid = new State(StateEnum.invalid); - public static final State initialized = new State(StateEnum.initialized); - public static final State calculated = new State(StateEnum.calculated); - public static final State broken = new State(StateEnum.broken); - public static final State good = new State(StateEnum.good); - public static final State bad = new State(StateEnum.bad); + public static final State unknown = new State(StateEnum.unknown).asConstant(); + public static final State invalid = new State(StateEnum.invalid).asConstant(); + public static final State initialized = new State(StateEnum.initialized).asConstant(); + public static final State calculated = new State(StateEnum.calculated).asConstant(); + public static final State broken = new State(StateEnum.broken).asConstant(); + public static final State good = new State(StateEnum.good).asConstant(); + public static final State bad = new State(StateEnum.bad).asConstant(); private StateEnum value = StateEnum.values()[0]; private byte flags = value.getRaw(); + private boolean fbeConstant; public State() {} public State(byte value) { setEnum(value); } @@ -31,10 +32,13 @@ public State() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.flags = value; this.value = StateEnum.mapValue(value); } - public void setEnum(StateEnum value) { this.value = value; this.flags = value.getRaw(); } + public void setEnum(byte value) { ensureMutable(); this.flags = value; this.value = StateEnum.mapValue(value); } + public void setEnum(StateEnum value) { ensureMutable(); this.value = value; this.flags = value.getRaw(); } public void setEnum(java.util.EnumSet value) { setEnum(State.fromSet(value)); } - public void setEnum(State value) { this.value = value.value; this.flags = value.flags; } + public void setEnum(State value) { ensureMutable(); this.value = value.value; this.flags = value.flags; } + + private State asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("State constants are read-only, change a copy: new State(State.VALUE)"); } public boolean hasFlags(byte flags) { return (((this.flags & flags) != 0) && ((this.flags & flags) == flags)); } public boolean hasFlags(StateEnum flags) { return hasFlags(flags.getRaw()); } diff --git a/projects/Java/src/com/chronoxor/protoex/OrderSide.java b/projects/Java/src/com/chronoxor/protoex/OrderSide.java index 413669705..d81efc8c8 100644 --- a/projects/Java/src/com/chronoxor/protoex/OrderSide.java +++ b/projects/Java/src/com/chronoxor/protoex/OrderSide.java @@ -9,11 +9,12 @@ public final class OrderSide implements Comparable { - public static final OrderSide buy = new OrderSide(OrderSideEnum.buy); - public static final OrderSide sell = new OrderSide(OrderSideEnum.sell); - public static final OrderSide tell = new OrderSide(OrderSideEnum.tell); + public static final OrderSide buy = new OrderSide(OrderSideEnum.buy).asConstant(); + public static final OrderSide sell = new OrderSide(OrderSideEnum.sell).asConstant(); + public static final OrderSide tell = new OrderSide(OrderSideEnum.tell).asConstant(); private OrderSideEnum value = OrderSideEnum.values()[0]; + private boolean fbeConstant; public OrderSide() {} public OrderSide(byte value) { setEnum(value); } @@ -25,9 +26,12 @@ public OrderSide() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = OrderSideEnum.mapValue(value); } - public void setEnum(OrderSideEnum value) { this.value = value; } - public void setEnum(OrderSide value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = OrderSideEnum.mapValue(value); } + public void setEnum(OrderSideEnum value) { ensureMutable(); this.value = value; } + public void setEnum(OrderSide value) { ensureMutable(); this.value = value.value; } + + private OrderSide asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("OrderSide constants are read-only, change a copy: new OrderSide(OrderSide.VALUE)"); } @Override public int compareTo(OrderSide other) diff --git a/projects/Java/src/com/chronoxor/protoex/OrderType.java b/projects/Java/src/com/chronoxor/protoex/OrderType.java index 6c5e95e55..760650073 100644 --- a/projects/Java/src/com/chronoxor/protoex/OrderType.java +++ b/projects/Java/src/com/chronoxor/protoex/OrderType.java @@ -9,12 +9,13 @@ public final class OrderType implements Comparable { - public static final OrderType market = new OrderType(OrderTypeEnum.market); - public static final OrderType limit = new OrderType(OrderTypeEnum.limit); - public static final OrderType stop = new OrderType(OrderTypeEnum.stop); - public static final OrderType stoplimit = new OrderType(OrderTypeEnum.stoplimit); + public static final OrderType market = new OrderType(OrderTypeEnum.market).asConstant(); + public static final OrderType limit = new OrderType(OrderTypeEnum.limit).asConstant(); + public static final OrderType stop = new OrderType(OrderTypeEnum.stop).asConstant(); + public static final OrderType stoplimit = new OrderType(OrderTypeEnum.stoplimit).asConstant(); private OrderTypeEnum value = OrderTypeEnum.values()[0]; + private boolean fbeConstant; public OrderType() {} public OrderType(byte value) { setEnum(value); } @@ -26,9 +27,12 @@ public OrderType() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = OrderTypeEnum.mapValue(value); } - public void setEnum(OrderTypeEnum value) { this.value = value; } - public void setEnum(OrderType value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = OrderTypeEnum.mapValue(value); } + public void setEnum(OrderTypeEnum value) { ensureMutable(); this.value = value; } + public void setEnum(OrderType value) { ensureMutable(); this.value = value.value; } + + private OrderType asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("OrderType constants are read-only, change a copy: new OrderType(OrderType.VALUE)"); } @Override public int compareTo(OrderType other) diff --git a/projects/Java/src/com/chronoxor/protoex/StateEx.java b/projects/Java/src/com/chronoxor/protoex/StateEx.java index 19652dc0d..61112b81e 100644 --- a/projects/Java/src/com/chronoxor/protoex/StateEx.java +++ b/projects/Java/src/com/chronoxor/protoex/StateEx.java @@ -9,18 +9,19 @@ public final class StateEx implements Comparable { - public static final StateEx unknown = new StateEx(StateExEnum.unknown); - public static final StateEx invalid = new StateEx(StateExEnum.invalid); - public static final StateEx initialized = new StateEx(StateExEnum.initialized); - public static final StateEx calculated = new StateEx(StateExEnum.calculated); - public static final StateEx broken = new StateEx(StateExEnum.broken); - public static final StateEx happy = new StateEx(StateExEnum.happy); - public static final StateEx sad = new StateEx(StateExEnum.sad); - public static final StateEx good = new StateEx(StateExEnum.good); - public static final StateEx bad = new StateEx(StateExEnum.bad); + public static final StateEx unknown = new StateEx(StateExEnum.unknown).asConstant(); + public static final StateEx invalid = new StateEx(StateExEnum.invalid).asConstant(); + public static final StateEx initialized = new StateEx(StateExEnum.initialized).asConstant(); + public static final StateEx calculated = new StateEx(StateExEnum.calculated).asConstant(); + public static final StateEx broken = new StateEx(StateExEnum.broken).asConstant(); + public static final StateEx happy = new StateEx(StateExEnum.happy).asConstant(); + public static final StateEx sad = new StateEx(StateExEnum.sad).asConstant(); + public static final StateEx good = new StateEx(StateExEnum.good).asConstant(); + public static final StateEx bad = new StateEx(StateExEnum.bad).asConstant(); private StateExEnum value = StateExEnum.values()[0]; private byte flags = value.getRaw(); + private boolean fbeConstant; public StateEx() {} public StateEx(byte value) { setEnum(value); } @@ -33,10 +34,13 @@ public StateEx() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.flags = value; this.value = StateExEnum.mapValue(value); } - public void setEnum(StateExEnum value) { this.value = value; this.flags = value.getRaw(); } + public void setEnum(byte value) { ensureMutable(); this.flags = value; this.value = StateExEnum.mapValue(value); } + public void setEnum(StateExEnum value) { ensureMutable(); this.value = value; this.flags = value.getRaw(); } public void setEnum(java.util.EnumSet value) { setEnum(StateEx.fromSet(value)); } - public void setEnum(StateEx value) { this.value = value.value; this.flags = value.flags; } + public void setEnum(StateEx value) { ensureMutable(); this.value = value.value; this.flags = value.flags; } + + private StateEx asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("StateEx constants are read-only, change a copy: new StateEx(StateEx.VALUE)"); } public boolean hasFlags(byte flags) { return (((this.flags & flags) != 0) && ((this.flags & flags) == flags)); } public boolean hasFlags(StateExEnum flags) { return hasFlags(flags.getRaw()); } diff --git a/projects/Java/src/com/chronoxor/test/EnumEmpty.java b/projects/Java/src/com/chronoxor/test/EnumEmpty.java index e69567273..07b7665a1 100644 --- a/projects/Java/src/com/chronoxor/test/EnumEmpty.java +++ b/projects/Java/src/com/chronoxor/test/EnumEmpty.java @@ -11,6 +11,7 @@ public final class EnumEmpty implements Comparable { private EnumEmptyEnum value = EnumEmptyEnum.values()[0]; + private boolean fbeConstant; public EnumEmpty() {} public EnumEmpty(int value) { setEnum(value); } @@ -22,9 +23,12 @@ public EnumEmpty() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.value = EnumEmptyEnum.mapValue(value); } - public void setEnum(EnumEmptyEnum value) { this.value = value; } - public void setEnum(EnumEmpty value) { this.value = value.value; } + public void setEnum(int value) { ensureMutable(); this.value = EnumEmptyEnum.mapValue(value); } + public void setEnum(EnumEmptyEnum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumEmpty value) { ensureMutable(); this.value = value.value; } + + private EnumEmpty asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumEmpty constants are read-only, change a copy: new EnumEmpty(EnumEmpty.VALUE)"); } @Override public int compareTo(EnumEmpty other) diff --git a/projects/Java/src/com/chronoxor/test/EnumSimple.java b/projects/Java/src/com/chronoxor/test/EnumSimple.java index 02c412c26..e364a2f0d 100644 --- a/projects/Java/src/com/chronoxor/test/EnumSimple.java +++ b/projects/Java/src/com/chronoxor/test/EnumSimple.java @@ -9,14 +9,15 @@ public final class EnumSimple implements Comparable { - public static final EnumSimple ENUM_VALUE_0 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_0); - public static final EnumSimple ENUM_VALUE_1 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_1); - public static final EnumSimple ENUM_VALUE_2 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_2); - public static final EnumSimple ENUM_VALUE_3 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_3); - public static final EnumSimple ENUM_VALUE_4 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_4); - public static final EnumSimple ENUM_VALUE_5 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_5); + public static final EnumSimple ENUM_VALUE_0 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_0).asConstant(); + public static final EnumSimple ENUM_VALUE_1 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_1).asConstant(); + public static final EnumSimple ENUM_VALUE_2 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_2).asConstant(); + public static final EnumSimple ENUM_VALUE_3 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_3).asConstant(); + public static final EnumSimple ENUM_VALUE_4 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_4).asConstant(); + public static final EnumSimple ENUM_VALUE_5 = new EnumSimple(EnumSimpleEnum.ENUM_VALUE_5).asConstant(); private EnumSimpleEnum value = EnumSimpleEnum.values()[0]; + private boolean fbeConstant; public EnumSimple() {} public EnumSimple(int value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumSimple() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.value = EnumSimpleEnum.mapValue(value); } - public void setEnum(EnumSimpleEnum value) { this.value = value; } - public void setEnum(EnumSimple value) { this.value = value.value; } + public void setEnum(int value) { ensureMutable(); this.value = EnumSimpleEnum.mapValue(value); } + public void setEnum(EnumSimpleEnum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumSimple value) { ensureMutable(); this.value = value.value; } + + private EnumSimple asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumSimple constants are read-only, change a copy: new EnumSimple(EnumSimple.VALUE)"); } @Override public int compareTo(EnumSimple other) diff --git a/projects/Java/src/com/chronoxor/test/EnumTyped.java b/projects/Java/src/com/chronoxor/test/EnumTyped.java index 8fa123ba5..4237506b4 100644 --- a/projects/Java/src/com/chronoxor/test/EnumTyped.java +++ b/projects/Java/src/com/chronoxor/test/EnumTyped.java @@ -9,14 +9,15 @@ public final class EnumTyped implements Comparable { - public static final EnumTyped ENUM_VALUE_0 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_0); - public static final EnumTyped ENUM_VALUE_1 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_1); - public static final EnumTyped ENUM_VALUE_2 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_2); - public static final EnumTyped ENUM_VALUE_3 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_3); - public static final EnumTyped ENUM_VALUE_4 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_4); - public static final EnumTyped ENUM_VALUE_5 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_5); + public static final EnumTyped ENUM_VALUE_0 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_0).asConstant(); + public static final EnumTyped ENUM_VALUE_1 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_1).asConstant(); + public static final EnumTyped ENUM_VALUE_2 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_2).asConstant(); + public static final EnumTyped ENUM_VALUE_3 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_3).asConstant(); + public static final EnumTyped ENUM_VALUE_4 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_4).asConstant(); + public static final EnumTyped ENUM_VALUE_5 = new EnumTyped(EnumTypedEnum.ENUM_VALUE_5).asConstant(); private EnumTypedEnum value = EnumTypedEnum.values()[0]; + private boolean fbeConstant; public EnumTyped() {} public EnumTyped(byte value) { setEnum(value); } @@ -28,9 +29,12 @@ public EnumTyped() {} public void setDefault() { setEnum((byte)0); } - public void setEnum(byte value) { this.value = EnumTypedEnum.mapValue(value); } - public void setEnum(EnumTypedEnum value) { this.value = value; } - public void setEnum(EnumTyped value) { this.value = value.value; } + public void setEnum(byte value) { ensureMutable(); this.value = EnumTypedEnum.mapValue(value); } + public void setEnum(EnumTypedEnum value) { ensureMutable(); this.value = value; } + public void setEnum(EnumTyped value) { ensureMutable(); this.value = value.value; } + + private EnumTyped asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("EnumTyped constants are read-only, change a copy: new EnumTyped(EnumTyped.VALUE)"); } @Override public int compareTo(EnumTyped other) diff --git a/projects/Java/src/com/chronoxor/test/FlagsEmpty.java b/projects/Java/src/com/chronoxor/test/FlagsEmpty.java index 3468ef0c0..f4d8d6580 100644 --- a/projects/Java/src/com/chronoxor/test/FlagsEmpty.java +++ b/projects/Java/src/com/chronoxor/test/FlagsEmpty.java @@ -12,6 +12,7 @@ public final class FlagsEmpty implements Comparable private FlagsEmptyEnum value = FlagsEmptyEnum.values()[0]; private int flags = value.getRaw(); + private boolean fbeConstant; public FlagsEmpty() {} public FlagsEmpty(int value) { setEnum(value); } @@ -24,10 +25,13 @@ public FlagsEmpty() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.flags = value; this.value = FlagsEmptyEnum.mapValue(value); } - public void setEnum(FlagsEmptyEnum value) { this.value = value; this.flags = value.getRaw(); } + public void setEnum(int value) { ensureMutable(); this.flags = value; this.value = FlagsEmptyEnum.mapValue(value); } + public void setEnum(FlagsEmptyEnum value) { ensureMutable(); this.value = value; this.flags = value.getRaw(); } public void setEnum(java.util.EnumSet value) { setEnum(FlagsEmpty.fromSet(value)); } - public void setEnum(FlagsEmpty value) { this.value = value.value; this.flags = value.flags; } + public void setEnum(FlagsEmpty value) { ensureMutable(); this.value = value.value; this.flags = value.flags; } + + private FlagsEmpty asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("FlagsEmpty constants are read-only, change a copy: new FlagsEmpty(FlagsEmpty.VALUE)"); } public boolean hasFlags(int flags) { return (((this.flags & flags) != 0) && ((this.flags & flags) == flags)); } public boolean hasFlags(FlagsEmptyEnum flags) { return hasFlags(flags.getRaw()); } diff --git a/projects/Java/src/com/chronoxor/test/FlagsSimple.java b/projects/Java/src/com/chronoxor/test/FlagsSimple.java index 311818b3c..07266e9c4 100644 --- a/projects/Java/src/com/chronoxor/test/FlagsSimple.java +++ b/projects/Java/src/com/chronoxor/test/FlagsSimple.java @@ -9,15 +9,16 @@ public final class FlagsSimple implements Comparable { - public static final FlagsSimple FLAG_VALUE_0 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_0); - public static final FlagsSimple FLAG_VALUE_1 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_1); - public static final FlagsSimple FLAG_VALUE_2 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_2); - public static final FlagsSimple FLAG_VALUE_3 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_3); - public static final FlagsSimple FLAG_VALUE_4 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_4); - public static final FlagsSimple FLAG_VALUE_5 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_5); + public static final FlagsSimple FLAG_VALUE_0 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_0).asConstant(); + public static final FlagsSimple FLAG_VALUE_1 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_1).asConstant(); + public static final FlagsSimple FLAG_VALUE_2 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_2).asConstant(); + public static final FlagsSimple FLAG_VALUE_3 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_3).asConstant(); + public static final FlagsSimple FLAG_VALUE_4 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_4).asConstant(); + public static final FlagsSimple FLAG_VALUE_5 = new FlagsSimple(FlagsSimpleEnum.FLAG_VALUE_5).asConstant(); private FlagsSimpleEnum value = FlagsSimpleEnum.values()[0]; private int flags = value.getRaw(); + private boolean fbeConstant; public FlagsSimple() {} public FlagsSimple(int value) { setEnum(value); } @@ -30,10 +31,13 @@ public FlagsSimple() {} public void setDefault() { setEnum((int)0); } - public void setEnum(int value) { this.flags = value; this.value = FlagsSimpleEnum.mapValue(value); } - public void setEnum(FlagsSimpleEnum value) { this.value = value; this.flags = value.getRaw(); } + public void setEnum(int value) { ensureMutable(); this.flags = value; this.value = FlagsSimpleEnum.mapValue(value); } + public void setEnum(FlagsSimpleEnum value) { ensureMutable(); this.value = value; this.flags = value.getRaw(); } public void setEnum(java.util.EnumSet value) { setEnum(FlagsSimple.fromSet(value)); } - public void setEnum(FlagsSimple value) { this.value = value.value; this.flags = value.flags; } + public void setEnum(FlagsSimple value) { ensureMutable(); this.value = value.value; this.flags = value.flags; } + + private FlagsSimple asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("FlagsSimple constants are read-only, change a copy: new FlagsSimple(FlagsSimple.VALUE)"); } public boolean hasFlags(int flags) { return (((this.flags & flags) != 0) && ((this.flags & flags) == flags)); } public boolean hasFlags(FlagsSimpleEnum flags) { return hasFlags(flags.getRaw()); } diff --git a/projects/Java/src/com/chronoxor/test/FlagsTyped.java b/projects/Java/src/com/chronoxor/test/FlagsTyped.java index 0bca54b43..239edd90c 100644 --- a/projects/Java/src/com/chronoxor/test/FlagsTyped.java +++ b/projects/Java/src/com/chronoxor/test/FlagsTyped.java @@ -9,19 +9,20 @@ public final class FlagsTyped implements Comparable { - public static final FlagsTyped FLAG_VALUE_0 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_0); - public static final FlagsTyped FLAG_VALUE_1 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_1); - public static final FlagsTyped FLAG_VALUE_2 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_2); - public static final FlagsTyped FLAG_VALUE_3 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_3); - public static final FlagsTyped FLAG_VALUE_4 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_4); - public static final FlagsTyped FLAG_VALUE_5 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_5); - public static final FlagsTyped FLAG_VALUE_6 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_6); - public static final FlagsTyped FLAG_VALUE_7 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_7); - public static final FlagsTyped FLAG_VALUE_8 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_8); - public static final FlagsTyped FLAG_VALUE_9 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_9); + public static final FlagsTyped FLAG_VALUE_0 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_0).asConstant(); + public static final FlagsTyped FLAG_VALUE_1 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_1).asConstant(); + public static final FlagsTyped FLAG_VALUE_2 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_2).asConstant(); + public static final FlagsTyped FLAG_VALUE_3 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_3).asConstant(); + public static final FlagsTyped FLAG_VALUE_4 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_4).asConstant(); + public static final FlagsTyped FLAG_VALUE_5 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_5).asConstant(); + public static final FlagsTyped FLAG_VALUE_6 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_6).asConstant(); + public static final FlagsTyped FLAG_VALUE_7 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_7).asConstant(); + public static final FlagsTyped FLAG_VALUE_8 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_8).asConstant(); + public static final FlagsTyped FLAG_VALUE_9 = new FlagsTyped(FlagsTypedEnum.FLAG_VALUE_9).asConstant(); private FlagsTypedEnum value = FlagsTypedEnum.values()[0]; private long flags = value.getRaw(); + private boolean fbeConstant; public FlagsTyped() {} public FlagsTyped(long value) { setEnum(value); } @@ -34,10 +35,13 @@ public FlagsTyped() {} public void setDefault() { setEnum((long)0); } - public void setEnum(long value) { this.flags = value; this.value = FlagsTypedEnum.mapValue(value); } - public void setEnum(FlagsTypedEnum value) { this.value = value; this.flags = value.getRaw(); } + public void setEnum(long value) { ensureMutable(); this.flags = value; this.value = FlagsTypedEnum.mapValue(value); } + public void setEnum(FlagsTypedEnum value) { ensureMutable(); this.value = value; this.flags = value.getRaw(); } public void setEnum(java.util.EnumSet value) { setEnum(FlagsTyped.fromSet(value)); } - public void setEnum(FlagsTyped value) { this.value = value.value; this.flags = value.flags; } + public void setEnum(FlagsTyped value) { ensureMutable(); this.value = value.value; this.flags = value.flags; } + + private FlagsTyped asConstant() { fbeConstant = true; return this; } + private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException("FlagsTyped constants are read-only, change a copy: new FlagsTyped(FlagsTyped.VALUE)"); } public boolean hasFlags(long flags) { return (((this.flags & flags) != 0) && ((this.flags & flags) == flags)); } public boolean hasFlags(FlagsTypedEnum flags) { return hasFlags(flags.getRaw()); } diff --git a/projects/Java/src/com/chronoxor/test/StructNested.java b/projects/Java/src/com/chronoxor/test/StructNested.java index fe1625e44..cf41a2bb9 100644 --- a/projects/Java/src/com/chronoxor/test/StructNested.java +++ b/projects/Java/src/com/chronoxor/test/StructNested.java @@ -11,7 +11,7 @@ public class StructNested extends StructOptional { public EnumSimple f1000 = new EnumSimple(); public EnumSimple f1001 = null; - public EnumTyped f1002 = EnumTyped.ENUM_VALUE_2; + public EnumTyped f1002 = new EnumTyped(EnumTyped.ENUM_VALUE_2); public EnumTyped f1003 = null; public FlagsSimple f1004 = new FlagsSimple(); public FlagsSimple f1005 = null; diff --git a/projects/Java/src/com/chronoxor/test/fbe/FieldModelStructNested.java b/projects/Java/src/com/chronoxor/test/fbe/FieldModelStructNested.java index d4661f15d..ebf7fd181 100644 --- a/projects/Java/src/com/chronoxor/test/fbe/FieldModelStructNested.java +++ b/projects/Java/src/com/chronoxor/test/fbe/FieldModelStructNested.java @@ -278,7 +278,7 @@ public void getFields(com.chronoxor.test.StructNested fbeValue, long fbeStructSi if ((fbeCurrentSize + f1002.fbeSize()) <= fbeStructSize) fbeValue.f1002 = f1002.get(com.chronoxor.test.EnumTyped.ENUM_VALUE_2); else - fbeValue.f1002 = com.chronoxor.test.EnumTyped.ENUM_VALUE_2; + fbeValue.f1002 = new com.chronoxor.test.EnumTyped(com.chronoxor.test.EnumTyped.ENUM_VALUE_2); fbeCurrentSize += f1002.fbeSize(); if ((fbeCurrentSize + f1003.fbeSize()) <= fbeStructSize) diff --git a/projects/Java/src/tests/TestConstants.java b/projects/Java/src/tests/TestConstants.java new file mode 100644 index 000000000..89e5448cd --- /dev/null +++ b/projects/Java/src/tests/TestConstants.java @@ -0,0 +1,39 @@ +package tests; + +import org.testng.*; +import org.testng.annotations.*; + +import com.chronoxor.test.*; + +public class TestConstants +{ + @Test() + public void readOnlyConstants() + { + // A constant is shared by every user of its type, so changing it in place is refused + Assert.assertThrows(UnsupportedOperationException.class, () -> FlagsTyped.FLAG_VALUE_2.setFlags(FlagsTyped.FLAG_VALUE_4)); + Assert.assertThrows(UnsupportedOperationException.class, () -> FlagsTyped.FLAG_VALUE_9.removeFlags(FlagsTyped.FLAG_VALUE_4)); + Assert.assertThrows(UnsupportedOperationException.class, () -> FlagsTyped.FLAG_VALUE_9.setDefault()); + Assert.assertThrows(UnsupportedOperationException.class, () -> EnumSimple.ENUM_VALUE_1.setEnum(EnumSimple.ENUM_VALUE_2)); + Assert.assertEquals(FlagsTyped.FLAG_VALUE_2.getRaw(), 0x02L); + Assert.assertEquals(FlagsTyped.FLAG_VALUE_9.getRaw(), 0x2AL); + Assert.assertEquals(EnumSimple.ENUM_VALUE_1.getRaw(), 1); + + // A copy is the caller's own to change + var flags = new FlagsTyped(FlagsTyped.FLAG_VALUE_2).setFlags(FlagsTyped.FLAG_VALUE_4); + Assert.assertEquals(flags.getRaw(), 0x0AL); + var value = new EnumSimple(EnumSimple.ENUM_VALUE_1); + value.setEnum(EnumSimple.ENUM_VALUE_2); + Assert.assertEquals(value, EnumSimple.ENUM_VALUE_2); + + // So is a struct field whose default is a constant + var struct1 = new StructNested(); + var struct2 = new StructNested(); + struct1.f1002.setEnum(EnumTyped.ENUM_VALUE_1); + struct1.f1006.removeFlags(FlagsTyped.FLAG_VALUE_4); + Assert.assertEquals(struct1.f1002, EnumTyped.ENUM_VALUE_1); + Assert.assertEquals(struct1.f1006.getRaw(), 0x22L); + Assert.assertEquals(struct2.f1002, EnumTyped.ENUM_VALUE_2); + Assert.assertEquals(struct2.f1006.getRaw(), 0x2AL); + } +} diff --git a/source/generator_csharp.cpp b/source/generator_csharp.cpp index 533dfb6bf..0ac288bb0 100644 --- a/source/generator_csharp.cpp +++ b/source/generator_csharp.cpp @@ -4634,7 +4634,7 @@ void GeneratorCSharp::GenerateEnum(const std::string& domain, const std::shared_ if (e->body) { for (auto it = e->body->values.begin(); it != e->body->values.end(); ++it) - WriteLineIndent("public static " + *e->name + " " + *(*it)->name + " = new " + *e->name + "(_" + *(*it)->name + "_);"); + WriteLineIndent("public static readonly " + *e->name + " " + *(*it)->name + " = new " + *e->name + "(_" + *(*it)->name + "_);"); WriteLine(); } @@ -5010,7 +5010,7 @@ void GeneratorCSharp::GenerateFlags(const std::string& domain, const std::shared { for (auto it = f->body->values.begin(); it != f->body->values.end(); ++it) if ((*it)->value) - WriteLineIndent("public static " + *f->name + " " + *(*it)->name + " = new " + *f->name + "(_" + *(*it)->name + "_);"); + WriteLineIndent("public static readonly " + *f->name + " " + *(*it)->name + " = new " + *f->name + "(_" + *(*it)->name + "_);"); WriteLine(); } diff --git a/source/generator_java.cpp b/source/generator_java.cpp index f8ac78a84..e802d7048 100644 --- a/source/generator_java.cpp +++ b/source/generator_java.cpp @@ -4589,13 +4589,16 @@ void GeneratorJava::GenerateEnumClass(const std::shared_ptr& p, const s if (e->body) { for (const auto& value : e->body->values) - WriteLineIndent("public static final " + enum_name + " " + *value->name + " = new " + enum_name + "(" + enum_type_name + "." + *value->name + ");"); + WriteLineIndent("public static final " + enum_name + " " + *value->name + " = new " + enum_name + "(" + enum_type_name + "." + *value->name + ").asConstant();"); WriteLine(); } // Generate enum class value WriteLineIndent("private " + enum_type_name + " value = " + enum_type_name + ".values()[0];"); + // The static constants are shared by the whole process, so changing one in place would change it for every user + WriteLineIndent("private boolean fbeConstant;"); + // Generate enum class constructors WriteLine(); WriteLineIndent("public " + enum_name + "() {}"); @@ -4614,9 +4617,14 @@ void GeneratorJava::GenerateEnumClass(const std::shared_ptr& p, const s // Generate enum class setEnum() methods WriteLine(); - WriteLineIndent("public void setEnum(" + enum_base_type + " value) { this.value = " + enum_type_name + ".mapValue(value); }"); - WriteLineIndent("public void setEnum(" + enum_type_name + " value) { this.value = value; }"); - WriteLineIndent("public void setEnum(" + enum_name + " value) { this.value = value.value; }"); + WriteLineIndent("public void setEnum(" + enum_base_type + " value) { ensureMutable(); this.value = " + enum_type_name + ".mapValue(value); }"); + WriteLineIndent("public void setEnum(" + enum_type_name + " value) { ensureMutable(); this.value = value; }"); + WriteLineIndent("public void setEnum(" + enum_name + " value) { ensureMutable(); this.value = value.value; }"); + + // Generate enum class constant guard methods + WriteLine(); + WriteLineIndent("private " + enum_name + " asConstant() { fbeConstant = true; return this; }"); + WriteLineIndent("private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException(\"" + enum_name + " constants are read-only, change a copy: new " + enum_name + "(" + enum_name + ".VALUE)\"); }"); // Generate enum class compareTo() method WriteLine(); @@ -4931,7 +4939,7 @@ void GeneratorJava::GenerateFlagsClass(const std::shared_ptr& p, const if (f->body) { for (const auto& value : f->body->values) - WriteLineIndent("public static final " + flags_name + " " + *value->name + " = new " + flags_name + "(" + flags_type_name + "." + *value->name + ");"); + WriteLineIndent("public static final " + flags_name + " " + *value->name + " = new " + flags_name + "(" + flags_type_name + "." + *value->name + ").asConstant();"); WriteLine(); } @@ -4939,6 +4947,9 @@ void GeneratorJava::GenerateFlagsClass(const std::shared_ptr& p, const WriteLineIndent("private " + flags_type_name + " value = " + flags_type_name + ".values()[0];"); WriteLineIndent("private " + flags_base_type + " flags = value.getRaw();"); + // The static constants are shared by the whole process, so changing one in place would change it for every user + WriteLineIndent("private boolean fbeConstant;"); + // Generate flags class constructors WriteLine(); WriteLineIndent("public " + flags_name + "() {}"); @@ -4958,10 +4969,15 @@ void GeneratorJava::GenerateFlagsClass(const std::shared_ptr& p, const // Generate flags class setEnum() methods WriteLine(); - WriteLineIndent("public void setEnum(" + flags_base_type + " value) { this.flags = value; this.value = " + flags_type_name + ".mapValue(value); }"); - WriteLineIndent("public void setEnum(" + flags_type_name + " value) { this.value = value; this.flags = value.getRaw(); }"); + WriteLineIndent("public void setEnum(" + flags_base_type + " value) { ensureMutable(); this.flags = value; this.value = " + flags_type_name + ".mapValue(value); }"); + WriteLineIndent("public void setEnum(" + flags_type_name + " value) { ensureMutable(); this.value = value; this.flags = value.getRaw(); }"); WriteLineIndent("public void setEnum(java.util.EnumSet<" + flags_type_name + "> value) { setEnum(" + flags_name + ".fromSet(value)); }"); - WriteLineIndent("public void setEnum(" + flags_name + " value) { this.value = value.value; this.flags = value.flags; }"); + WriteLineIndent("public void setEnum(" + flags_name + " value) { ensureMutable(); this.value = value.value; this.flags = value.flags; }"); + + // Generate flags class constant guard methods + WriteLine(); + WriteLineIndent("private " + flags_name + " asConstant() { fbeConstant = true; return this; }"); + WriteLineIndent("private void ensureMutable() { if (fbeConstant) throw new UnsupportedOperationException(\"" + flags_name + " constants are read-only, change a copy: new " + flags_name + "(" + flags_name + ".VALUE)\"); }"); // Generate flags class hasFlags() methods WriteLine(); @@ -7962,7 +7978,15 @@ std::string GeneratorJava::ConvertDefault(const std::string& domain, const std:: std::string GeneratorJava::ConvertDefault(const std::string& domain, const std::string& package, const StructField& field) { if (field.value) - return ConvertConstant(domain, package, *field.type, *field.value, field.optional); + { + std::string value = ConvertConstant(domain, package, *field.type, *field.value, field.optional); + + // Enum and flags constants are read-only, so a field defaulted to one gets a copy its owner may change + if (!IsKnownType(*field.type) && (value.find('(') == std::string::npos) && (value.find('.') != std::string::npos)) + value = "new " + value.substr(0, value.find_last_of('.')) + "(" + value + ")"; + + return value; + } if (field.array) return "new " + ConvertTypeName(domain, package, *field.type, field.optional) + "[" + std::to_string(field.N) + "]";