Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Changeset 3913

Show
Ignore:
Timestamp:
08/25/08 22:55:58 (3 months ago)
Author:
kris
Message:

made parser a bit faster (again)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/tango/text/json/Json.d

    r3875 r3913  
    7272                         p.index = 0; 
    7373 
    74                 super.reset (json); 
    75  
    7674                auto v = values.allocate.reset; 
    7775 
    78                 if (super.next
     76                if (super.reset (json)
    7977                    if (curType is Token.BeginObject) 
    8078                        v.set (parseObject); 
  • trunk/tango/text/json/JsonParser.d

    r3912 r3913  
    2525               { 
    2626               Empty, Name, String, Number, BeginObject, EndObject,  
    27                BeginArray, EndArray, True, False, Null  
     27               BeginArray, EndArray, True, False, Null 
    2828               } 
    2929 
     
    6969                auto e = str.end; 
    7070 
    71                 while (p < e && *p <= 32)  
     71                while (*p <= 32 && p < e)  
    7272                       ++p;  
    7373 
     
    8080                switch (curType) 
    8181                       { 
     82                       case Token.Name: 
     83                            return parseMemberValue; 
     84 
    8285                       default:                 
    8386                            break; 
    84  
    85                        case Token.Name: 
    86                             return parseMemberValue; 
    87  
    88                        case Token.Empty: 
    89                             return start (*p); 
    9087                       } 
    9188 
     
    115112        ***********************************************************************/ 
    116113         
    117         void reset (T[] json = null) 
     114        bool reset (T[] json = null) 
    118115        { 
    119116                state.clear; 
     
    121118                curType = Token.Empty; 
    122119                curState = State.Object; 
     120 
     121                if (json.length) 
     122                   { 
     123                   auto p = str.ptr; 
     124                   auto e = str.end; 
     125 
     126                   while (*p <= 32 && p < e)  
     127                          ++p;  
     128                   if (p < e) 
     129                       return start (*(str.ptr = p)); 
     130                   } 
     131                return false; 
    123132        } 
    124133