Ignore:
Timestamp:
Aug 7, 2022, 3:02:24 PM (2 years ago)
Author:
alloc
Message:

Major refactoring/cleanup

Location:
binary-improvements2/7dtd-server-fixes/src/JSON
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONArray.cs

    r351 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONArray : JSONNode {
    6                 private readonly List<JSONNode> nodes = new List<JSONNode> ();
     5        public class JsonArray : JsonNode {
     6                private readonly List<JsonNode> nodes = new List<JsonNode> ();
    77
    8                 public JSONNode this [int _index] {
    9                         get { return nodes [_index]; }
    10                         set { nodes [_index] = value; }
     8                public JsonNode this [int _index] {
     9                        get => nodes [_index];
     10                        set => nodes [_index] = value;
    1111                }
    1212
    13                 public int Count {
    14                         get { return nodes.Count; }
    15                 }
     13                public int Count => nodes.Count;
    1614
    17                 public void Add (JSONNode _node) {
     15                public void Add (JsonNode _node) {
    1816                        nodes.Add (_node);
    1917                }
     
    2523                        }
    2624
    27                         foreach (JSONNode n in nodes) {
     25                        foreach (JsonNode n in nodes) {
    2826                                if (_prettyPrint) {
    2927                                        _stringBuilder.Append (new string ('\t', _currentLevel + 1));
     
    4846                }
    4947
    50                 public static JSONArray Parse (string _json, ref int _offset) {
     48                public static JsonArray Parse (string _json, ref int _offset) {
    5149                        //Log.Out ("ParseArray enter (" + offset + ")");
    52                         JSONArray arr = new JSONArray ();
     50                        JsonArray arr = new JsonArray ();
    5351
    5452                        bool nextElemAllowed = true;
     
    6361                                                        _offset++;
    6462                                                } else {
    65                                                         throw new MalformedJSONException (
     63                                                        throw new MalformedJsonException (
    6664                                                                "Could not parse array, found a comma without a value first");
    6765                                                }
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONBoolean.cs

    r389 r391  
    22
    33namespace AllocsFixes.JSON {
    4         public class JSONBoolean : JSONValue {
     4        public class JsonBoolean : JsonValue {
    55                private readonly bool value;
    66
    7                 public JSONBoolean (bool _value) {
     7                public JsonBoolean (bool _value) {
    88                        value = _value;
    99                }
     
    1717                }
    1818
    19                 public static JSONBoolean Parse (string _json, ref int _offset) {
     19                public static JsonBoolean Parse (string _json, ref int _offset) {
    2020                        //Log.Out ("ParseBool enter (" + offset + ")");
    2121
     
    2323                                //Log.Out ("JSON:Parsed Bool: true");
    2424                                _offset += 4;
    25                                 return new JSONBoolean (true);
     25                                return new JsonBoolean (true);
    2626                        }
    2727
     
    2929                                //Log.Out ("JSON:Parsed Bool: false");
    3030                                _offset += 5;
    31                                 return new JSONBoolean (false);
     31                                return new JsonBoolean (false);
    3232                        }
    3333
    34                         throw new MalformedJSONException ("No valid boolean found");
     34                        throw new MalformedJsonException ("No valid boolean found");
    3535                }
    3636
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONNode.cs

    r351 r391  
    22
    33namespace AllocsFixes.JSON {
    4         public abstract class JSONNode {
     4        public abstract class JsonNode {
    55                public abstract void ToString (StringBuilder _stringBuilder, bool _prettyPrint = false, int _currentLevel = 0);
    66
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONNull.cs

    r389 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONNull : JSONValue {
     5        public class JsonNull : JsonValue {
    66                public override void ToString (StringBuilder _stringBuilder, bool _prettyPrint = false, int _currentLevel = 0) {
    77                        _stringBuilder.Append ("null");
    88                }
    99
    10                 public static JSONNull Parse (string _json, ref int _offset) {
     10                public static JsonNull Parse (string _json, ref int _offset) {
    1111                        //Log.Out ("ParseNull enter (" + offset + ")");
    1212
    1313                        if (!_json.Substring (_offset, 4).Equals ("null")) {
    14                                 throw new MalformedJSONException ("No valid null value found");
     14                                throw new MalformedJsonException ("No valid null value found");
    1515                        }
    1616
    1717                        //Log.Out ("JSON:Parsed Null");
    1818                        _offset += 4;
    19                         return new JSONNull ();
     19                        return new JsonNull ();
    2020                }
    2121
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONNumber.cs

    r389 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONNumber : JSONValue {
     5        public class JsonNumber : JsonValue {
    66                private readonly double value;
    77
    8                 public JSONNumber (double _value) {
     8                public JsonNumber (double _value) {
    99                        value = _value;
    1010                }
     
    2222                }
    2323
    24                 public static JSONNumber Parse (string _json, ref int _offset) {
     24                public static JsonNumber Parse (string _json, ref int _offset) {
    2525                        //Log.Out ("ParseNumber enter (" + offset + ")");
    2626                        StringBuilder sbNum = new StringBuilder ();
     
    3737                                } else if (_json [_offset] == '.') {
    3838                                        if (hasExp) {
    39                                                 throw new MalformedJSONException ("Decimal separator in exponent");
     39                                                throw new MalformedJsonException ("Decimal separator in exponent");
    4040                                        }
    4141
    4242                                        if (hasDec) {
    43                                                 throw new MalformedJSONException ("Multiple decimal separators in number found");
     43                                                throw new MalformedJsonException ("Multiple decimal separators in number found");
    4444                                        }
    4545
    4646                                        if (sbNum.Length == 0) {
    47                                                 throw new MalformedJSONException ("No leading digits before decimal separator found");
     47                                                throw new MalformedJsonException ("No leading digits before decimal separator found");
    4848                                        }
    4949
     
    5353                                        if (hasExp) {
    5454                                                if (sbExp.Length > 0) {
    55                                                         throw new MalformedJSONException ("Negative sign in exponent after digits");
     55                                                        throw new MalformedJsonException ("Negative sign in exponent after digits");
    5656                                                }
    5757
     
    5959                                        } else {
    6060                                                if (sbNum.Length > 0) {
    61                                                         throw new MalformedJSONException ("Negative sign in mantissa after digits");
     61                                                        throw new MalformedJsonException ("Negative sign in mantissa after digits");
    6262                                                }
    6363
     
    6666                                } else if (_json [_offset] == 'e' || _json [_offset] == 'E') {
    6767                                        if (hasExp) {
    68                                                 throw new MalformedJSONException ("Multiple exponential markers in number found");
     68                                                throw new MalformedJsonException ("Multiple exponential markers in number found");
    6969                                        }
    7070
    7171                                        if (sbNum.Length == 0) {
    72                                                 throw new MalformedJSONException ("No leading digits before exponential marker found");
     72                                                throw new MalformedJsonException ("No leading digits before exponential marker found");
    7373                                        }
    7474
     
    7878                                        if (hasExp) {
    7979                                                if (sbExp.Length > 0) {
    80                                                         throw new MalformedJSONException ("Positive sign in exponent after digits");
     80                                                        throw new MalformedJsonException ("Positive sign in exponent after digits");
    8181                                                }
    8282
    8383                                                sbExp.Append (_json [_offset]);
    8484                                        } else {
    85                                                 throw new MalformedJSONException ("Positive sign in mantissa found");
     85                                                throw new MalformedJsonException ("Positive sign in mantissa found");
    8686                                        }
    8787                                } else {
    88                                         double number;
    89                                         if (!StringParsers.TryParseDouble (sbNum.ToString (), out number)) {
    90                                                 throw new MalformedJSONException ("Mantissa is not a valid decimal (\"" + sbNum + "\")");
     88                                        if (!StringParsers.TryParseDouble (sbNum.ToString (), out double number)) {
     89                                                throw new MalformedJsonException ("Mantissa is not a valid decimal (\"" + sbNum + "\")");
    9190                                        }
    9291
    9392                                        if (hasExp) {
    94                                                 int exp;
    95                                                 if (!int.TryParse (sbExp.ToString (), out exp)) {
    96                                                         throw new MalformedJSONException ("Exponent is not a valid integer (\"" + sbExp + "\")");
     93                                                if (!int.TryParse (sbExp.ToString (), out int exp)) {
     94                                                        throw new MalformedJsonException ("Exponent is not a valid integer (\"" + sbExp + "\")");
    9795                                                }
    9896
    99                                                 number = number * Math.Pow (10, exp);
     97                                                number *= Math.Pow (10, exp);
    10098                                        }
    10199
    102100                                        //Log.Out ("JSON:Parsed Number: " + number.ToString ());
    103                                         return new JSONNumber (number);
     101                                        return new JsonNumber (number);
    104102                                }
    105103
     
    107105                        }
    108106
    109                         throw new MalformedJSONException ("End of JSON reached before parsing number finished");
     107                        throw new MalformedJsonException ("End of JSON reached before parsing number finished");
    110108                }
    111109
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONObject.cs

    r389 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class JSONObject : JSONNode {
    6                 private readonly Dictionary<string, JSONNode> nodes = new Dictionary<string, JSONNode> ();
     5        public class JsonObject : JsonNode {
     6                private readonly Dictionary<string, JsonNode> nodes = new Dictionary<string, JsonNode> ();
    77
    8                 public JSONNode this [string _name] {
     8                public JsonNode this [string _name] {
    99                        get => nodes [_name];
    1010                        set => nodes [_name] = value;
     
    1919                }
    2020
    21                 public bool TryGetValue (string _name, out JSONNode _node) {
     21                public bool TryGetValue (string _name, out JsonNode _node) {
    2222                        return nodes.TryGetValue (_name, out _node);
    2323                }
    2424
    25                 public void Add (string _name, JSONNode _node) {
     25                public void Add (string _name, JsonNode _node) {
    2626                        nodes.Add (_name, _node);
    2727                }
     
    3333                        }
    3434
    35                         foreach (KeyValuePair<string, JSONNode> kvp in nodes) {
     35                        foreach ((string key, JsonNode value) in nodes) {
    3636                                if (_prettyPrint) {
    3737                                        _stringBuilder.Append (new string ('\t', _currentLevel + 1));
    3838                                }
    3939
    40                                 _stringBuilder.Append (string.Format ("\"{0}\":", kvp.Key));
     40                                _stringBuilder.Append ($"\"{key}\":");
    4141                                if (_prettyPrint) {
    4242                                        _stringBuilder.Append (" ");
    4343                                }
    4444
    45                                 kvp.Value.ToString (_stringBuilder, _prettyPrint, _currentLevel + 1);
     45                                value.ToString (_stringBuilder, _prettyPrint, _currentLevel + 1);
    4646                                _stringBuilder.Append (",");
    4747                                if (_prettyPrint) {
     
    6161                }
    6262
    63                 public static JSONObject Parse (string _json, ref int _offset) {
     63                public static JsonObject Parse (string _json, ref int _offset) {
    6464                        //Log.Out ("ParseObject enter (" + offset + ")");
    65                         JSONObject obj = new JSONObject ();
     65                        JsonObject obj = new JsonObject ();
    6666
    6767                        bool nextElemAllowed = true;
     
    7272                                        case '"':
    7373                                                if (nextElemAllowed) {
    74                                                         JSONString key = JSONString.Parse (_json, ref _offset);
     74                                                        JsonString key = JsonString.Parse (_json, ref _offset);
    7575                                                        Parser.SkipWhitespace (_json, ref _offset);
    7676                                                        if (_json [_offset] != ':') {
    77                                                                 throw new MalformedJSONException (
     77                                                                throw new MalformedJsonException (
    7878                                                                        "Could not parse object, missing colon (\":\") after key");
    7979                                                        }
    8080
    8181                                                        _offset++;
    82                                                         JSONNode val = Parser.ParseInternal (_json, ref _offset);
     82                                                        JsonNode val = Parser.ParseInternal (_json, ref _offset);
    8383                                                        obj.Add (key.GetString (), val);
    8484                                                        nextElemAllowed = false;
    8585                                                } else {
    86                                                         throw new MalformedJSONException (
     86                                                        throw new MalformedJsonException (
    8787                                                                "Could not parse object, found new key without a separating comma");
    8888                                                }
     
    9494                                                        _offset++;
    9595                                                } else {
    96                                                         throw new MalformedJSONException (
     96                                                        throw new MalformedJsonException (
    9797                                                                "Could not parse object, found a comma without a key/value pair first");
    9898                                                }
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONString.cs

    r389 r391  
    22
    33namespace AllocsFixes.JSON {
    4         public class JSONString : JSONValue {
     4        public class JsonString : JsonValue {
    55                private readonly string value;
    66
    7                 public JSONString (string _value) {
     7                public JsonString (string _value) {
    88                        value = _value;
    99                }
     
    1414
    1515                public override void ToString (StringBuilder _stringBuilder, bool _prettyPrint = false, int _currentLevel = 0) {
    16                         if (value == null || value.Length == 0) {
     16                        if (string.IsNullOrEmpty (value)) {
    1717                                _stringBuilder.Append ("\"\"");
    1818                                return;
     
    6464                }
    6565
    66                 public static JSONString Parse (string _json, ref int _offset) {
     66                public static JsonString Parse (string _json, ref int _offset) {
    6767                        //Log.Out ("ParseString enter (" + offset + ")");
    6868                        StringBuilder sb = new StringBuilder ();
     
    104104
    105105                                                //Log.Out ("JSON:Parsed String: " + sb.ToString ());
    106                                                 return new JSONString (sb.ToString ());
     106                                                return new JsonString (sb.ToString ());
    107107                                        default:
    108108                                                sb.Append (_json [_offset]);
     
    112112                        }
    113113
    114                         throw new MalformedJSONException ("End of JSON reached before parsing string finished");
     114                        throw new MalformedJsonException ("End of JSON reached before parsing string finished");
    115115                }
    116116
  • binary-improvements2/7dtd-server-fixes/src/JSON/JSONValue.cs

    r389 r391  
    11namespace AllocsFixes.JSON {
    2         public abstract class JSONValue : JSONNode {
     2        public abstract class JsonValue : JsonNode {
    33                public abstract string AsString { get; }
    44                public abstract int AsInt { get; }
  • binary-improvements2/7dtd-server-fixes/src/JSON/JsonManualBuilder.cs

    r354 r391  
    99                        NonEmpty = 1,
    1010                        Object = 2,
    11                         Array = 4,
     11                        Array = 4
    1212                }
    1313
     
    2020                private int currentLevelNumber;
    2121
    22                 private ELevelInfo CurrentLevelInfo {
    23                         get { return (ELevelInfo) (currentLevelType & levelBitsMask); }
    24                 }
    25 
    26                 private bool CurrentLevelIsNonEmpty {
    27                         get { return (CurrentLevelInfo & ELevelInfo.NonEmpty) == ELevelInfo.NonEmpty; }
    28                 }
    29 
    30                 private bool CurrentLevelIsArray {
    31                         get { return (CurrentLevelInfo & ELevelInfo.Array) != ELevelInfo.Array; }
    32                 }
    33 
    34                 private bool CurrentLevelIsObject {
    35                         get { return (CurrentLevelInfo & ELevelInfo.Object) != ELevelInfo.Object; }
    36                 }
    37                
     22                private ELevelInfo CurrentLevelInfo => (ELevelInfo) (currentLevelType & levelBitsMask);
     23
     24                private bool CurrentLevelIsNonEmpty => (CurrentLevelInfo & ELevelInfo.NonEmpty) == ELevelInfo.NonEmpty;
     25
     26                private bool CurrentLevelIsArray => (CurrentLevelInfo & ELevelInfo.Array) != ELevelInfo.Array;
     27
     28                private bool CurrentLevelIsObject => (CurrentLevelInfo & ELevelInfo.Object) != ELevelInfo.Object;
     29
    3830                public JsonManualBuilder (bool _prettyPrint) {
    3931                        prettyPrint = _prettyPrint;
     
    5446                        }
    5547
    56                         currentLevelType = currentLevelType | (long) ELevelInfo.NonEmpty;
     48                        currentLevelType |= (long) ELevelInfo.NonEmpty;
    5749                }
    5850
     
    210202
    211203                        currentLevelNumber--;
    212                         currentLevelType = currentLevelType >> levelTypeBits;
     204                        currentLevelType >>= levelTypeBits;
    213205
    214206                        if (prettyPrint) {
  • binary-improvements2/7dtd-server-fixes/src/JSON/MalformedJSONException.cs

    r351 r391  
    33
    44namespace AllocsFixes.JSON {
    5         public class MalformedJSONException : ApplicationException {
    6                 public MalformedJSONException () {
     5        public class MalformedJsonException : ApplicationException {
     6                public MalformedJsonException () {
    77                }
    88
    9                 public MalformedJSONException (string _message) : base (_message) {
     9                public MalformedJsonException (string _message) : base (_message) {
    1010                }
    1111
    12                 public MalformedJSONException (string _message, Exception _inner) : base (_message, _inner) {
     12                public MalformedJsonException (string _message, Exception _inner) : base (_message, _inner) {
    1313                }
    1414
    15                 protected MalformedJSONException (SerializationInfo _info, StreamingContext _context) : base (_info, _context) {
     15                protected MalformedJsonException (SerializationInfo _info, StreamingContext _context) : base (_info, _context) {
    1616                }
    1717        }
  • binary-improvements2/7dtd-server-fixes/src/JSON/Parser.cs

    r351 r391  
    11namespace AllocsFixes.JSON {
    2         public class Parser {
    3                 public static JSONNode Parse (string _json) {
     2        public static class Parser {
     3                public static JsonNode Parse (string _json) {
    44                        int offset = 0;
    55                        return ParseInternal (_json, ref offset);
    66                }
    77
    8                 public static JSONNode ParseInternal (string _json, ref int _offset) {
     8                public static JsonNode ParseInternal (string _json, ref int _offset) {
    99                        SkipWhitespace (_json, ref _offset);
    1010
     
    1212                        switch (_json [_offset]) {
    1313                                case '[':
    14                                         return JSONArray.Parse (_json, ref _offset);
     14                                        return JsonArray.Parse (_json, ref _offset);
    1515                                case '{':
    16                                         return JSONObject.Parse (_json, ref _offset);
     16                                        return JsonObject.Parse (_json, ref _offset);
    1717                                case '"':
    18                                         return JSONString.Parse (_json, ref _offset);
     18                                        return JsonString.Parse (_json, ref _offset);
    1919                                case 't':
    2020                                case 'f':
    21                                         return JSONBoolean.Parse (_json, ref _offset);
     21                                        return JsonBoolean.Parse (_json, ref _offset);
    2222                                case 'n':
    23                                         return JSONNull.Parse (_json, ref _offset);
     23                                        return JsonNull.Parse (_json, ref _offset);
    2424                                default:
    25                                         return JSONNumber.Parse (_json, ref _offset);
     25                                        return JsonNumber.Parse (_json, ref _offset);
    2626                        }
    2727                }
     
    4242                        }
    4343
    44                         throw new MalformedJSONException ("End of JSON reached before parsing finished");
     44                        throw new MalformedJsonException ("End of JSON reached before parsing finished");
    4545                }
    4646        }
Note: See TracChangeset for help on using the changeset viewer.