Ignore:
Timestamp:
Aug 9, 2017, 7:43:07 PM (7 years ago)
Author:
alloc
Message:

Fixes 14_16_21

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

Legend:

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

    r187 r309  
    2323                }
    2424
    25                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     25                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    2626                {
    27                         StringBuilder sb = new StringBuilder ("[");
     27                        stringBuilder.Append ("[");
    2828                        if (prettyPrint)
    29                                 sb.Append ('\n');
     29                                stringBuilder.Append ('\n');
    3030                        foreach (JSONNode n in nodes) {
    3131                                if (prettyPrint)
    32                                         sb.Append (new String ('\t', currentLevel + 1));
    33                                 sb.Append (n.ToString (prettyPrint, currentLevel + 1));
    34                                 sb.Append (",");
     32                                        stringBuilder.Append (new String ('\t', currentLevel + 1));
     33                                n.ToString (stringBuilder, prettyPrint, currentLevel + 1);
     34                                stringBuilder.Append (",");
    3535                                if (prettyPrint)
    36                                         sb.Append ('\n');
     36                                        stringBuilder.Append ('\n');
    3737                        }
    38                         if (sb.Length > 1)
    39                                 sb.Remove (sb.Length - (prettyPrint ? 2 : 1), 1);
     38                        if (stringBuilder.Length > 1)
     39                                stringBuilder.Remove (stringBuilder.Length - (prettyPrint ? 2 : 1), 1);
    4040                        if (prettyPrint)
    41                                 sb.Append (new String ('\t', currentLevel));
    42                         sb.Append ("]");
    43                         return sb.ToString ();
     41                                stringBuilder.Append (new String ('\t', currentLevel));
     42                        stringBuilder.Append ("]");
    4443                }
    4544
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONBoolean.cs

    r279 r309  
    11using System;
     2using System.Text;
    23
    34namespace AllocsFixes.JSON
     
    1718                }
    1819
    19                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     20                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    2021                {
    21                         return value.ToString (System.Globalization.CultureInfo.InvariantCulture).ToLower ();
     22                        stringBuilder.Append (value ? "true" : "false");
    2223                }
    2324
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONNode.cs

    r187 r309  
    11using System;
     2using System.Text;
    23
    34namespace AllocsFixes.JSON
     
    56        public abstract class JSONNode
    67        {
    7                 public abstract string ToString(bool prettyPrint = false, int currentLevel = 0);
     8                public abstract void ToString(StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0);
     9
     10                public override string ToString () {
     11                        StringBuilder sb = new StringBuilder ();
     12                        ToString (sb);
     13                        return sb.ToString ();
     14                }
    815        }
    916}
    10 
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONNull.cs

    r279 r309  
    11using System;
     2using System.Text;
    23
    34namespace AllocsFixes.JSON
     
    910                }
    1011
    11                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     12                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    1213                {
    13                         return "null";
     14                        stringBuilder.Append ("null");
    1415                }
    1516
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONNumber.cs

    r279 r309  
    2323                }
    2424
    25                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     25                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    2626                {
    27                         return value.ToString (System.Globalization.CultureInfo.InvariantCulture);
     27                        stringBuilder.Append (value.ToCultureInvariantString ());
    2828                }
    2929
     
    8686                                } else {
    8787                                        double number;
    88                                         if (!double.TryParse (sbNum.ToString (), out number)) {
     88                                        if (!Utils.TryParseDouble(sbNum.ToString (), out number)) {
    8989                                                throw new MalformedJSONException ("Mantissa is not a valid decimal (\"" + sbNum.ToString () + "\")");
    9090                                        }
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONObject.cs

    r187 r309  
    3232                }
    3333
    34                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     34                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    3535                {
    36                         StringBuilder sb = new StringBuilder ("{");
     36                        stringBuilder.Append ("{");
    3737                        if (prettyPrint)
    38                                 sb.Append ('\n');
     38                                stringBuilder.Append ('\n');
    3939                        foreach (KeyValuePair<string, JSONNode> kvp in nodes) {
    4040                                if (prettyPrint)
    41                                         sb.Append (new String ('\t', currentLevel + 1));
    42                                 sb.Append (String.Format ("\"{0}\":", kvp.Key));
     41                                        stringBuilder.Append (new String ('\t', currentLevel + 1));
     42                                stringBuilder.Append (String.Format ("\"{0}\":", kvp.Key));
    4343                                if (prettyPrint)
    44                                         sb.Append (" ");
    45                                 sb.Append (kvp.Value.ToString (prettyPrint, currentLevel + 1));
    46                                 sb.Append (",");
     44                                        stringBuilder.Append (" ");
     45                                kvp.Value.ToString (stringBuilder, prettyPrint, currentLevel + 1);
     46                                stringBuilder.Append (",");
    4747                                if (prettyPrint)
    48                                         sb.Append ('\n');
     48                                        stringBuilder.Append ('\n');
    4949                        }
    50                         if (sb.Length > 1)
    51                                 sb.Remove (sb.Length - (prettyPrint ? 2 : 1), 1);
     50                        if (stringBuilder.Length > 1)
     51                                stringBuilder.Remove (stringBuilder.Length - (prettyPrint ? 2 : 1), 1);
    5252                        if (prettyPrint)
    53                                 sb.Append (new String ('\t', currentLevel));
    54                         sb.Append ("}");
    55                         return sb.ToString ();
     53                                stringBuilder.Append (new String ('\t', currentLevel));
     54                        stringBuilder.Append ("}");
    5655                }
    5756
  • binary-improvements/7dtd-server-fixes/src/JSON/JSONString.cs

    r306 r309  
    1818                }
    1919
    20                 public override string ToString (bool prettyPrint = false, int currentLevel = 0)
     20                public override void ToString (StringBuilder stringBuilder, bool prettyPrint = false, int currentLevel = 0)
    2121                {
    2222                        if (value == null || value.Length == 0) {
    23                                 return "\"\"";
     23                                stringBuilder.Append ("\"\"");
     24                                return;
    2425                        }
    2526
    2627                        int len = value.Length;
    2728
    28                         StringBuilder sb = new StringBuilder (len + 4);
     29                        stringBuilder.EnsureCapacity (stringBuilder.Length + 2*len);
    2930                        String t;
     31
     32                        stringBuilder.Append ('"');
    3033
    3134                        foreach (char c in value) {
     
    3437                                        case '"':
    3538//                                      case '/':
    36                                                 sb.Append ('\\');
    37                                                 sb.Append (c);
     39                                                stringBuilder.Append ('\\');
     40                                                stringBuilder.Append (c);
    3841                                                break;
    3942                                        case '\b':
    40                                                 sb.Append ("\\b");
     43                                                stringBuilder.Append ("\\b");
    4144                                                break;
    4245                                        case '\t':
    43                                                 sb.Append ("\\t");
     46                                                stringBuilder.Append ("\\t");
    4447                                                break;
    4548                                        case '\n':
    46                                                 sb.Append ("\\n");
     49                                                stringBuilder.Append ("\\n");
    4750                                                break;
    4851                                        case '\f':
    49                                                 sb.Append ("\\f");
     52                                                stringBuilder.Append ("\\f");
    5053                                                break;
    5154                                        case '\r':
    52                                                 sb.Append ("\\r");
     55                                                stringBuilder.Append ("\\r");
    5356                                                break;
    5457                                        default:
    5558                                                if (c < ' ') {
    56                                                         t = "000" + String.Format ("X", c);
    57                                                         sb.Append ("\\u" + t.Substring (t.Length - 4));
     59                                                        stringBuilder.Append ("\\u");
     60                                                        stringBuilder.Append (((int)c).ToString ("X4"));
    5861                                                } else {
    59                                                         sb.Append (c);
     62                                                        stringBuilder.Append (c);
    6063                                                }
    6164                                                break;
     
    6366                        }
    6467
    65                         return string.Format ("\"{0}\"", sb.ToString ());
     68                        stringBuilder.Append ('"');
    6669                }
    6770
Note: See TracChangeset for help on using the changeset viewer.