(file) Return to WQLParser.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / WQL

Diff for /pegasus/src/Pegasus/WQL/WQLParser.cpp between version 1.2 and 1.3

version 1.2, 2001/12/13 14:54:45 version 1.3, 2002/01/11 17:41:58
Line 29 
Line 29 
  
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
 #include <Pegasus/Common/Exception.h> #include <Pegasus/Common/Exception.h>
   #include <Pegasus/Common/Destroyer.h>
 #include <iostream> #include <iostream>
 #include "WQLParser.h" #include "WQLParser.h"
 #include "WQLParserState.h" #include "WQLParserState.h"
Line 42 
Line 43 
 WQLParserState* globalParserState = 0; WQLParserState* globalParserState = 0;
  
 void WQLParser::parse( void WQLParser::parse(
     const Array<Sint8>& text,      const char* text,
     WQLSelectStatement& statement)     WQLSelectStatement& statement)
 { {
     if (text.size() == 0 || text[text.size() - 1] != '\0')      if (!text)
         throw MissingNullTerminator();          throw NullPointer();
   
       statement.clear();
  
     globalParserState = new WQLParserState;     globalParserState = new WQLParserState;
     globalParserState->error = false;     globalParserState->error = false;
     globalParserState->text = text;     globalParserState->text = text;
       globalParserState->textSize = strlen(text) + 1;
     globalParserState->offset = 0;     globalParserState->offset = 0;
     globalParserState->statement = &statement;     globalParserState->statement = &statement;
  
Line 68 
Line 72 
     delete globalParserState;     delete globalParserState;
 } }
  
   void WQLParser::parse(
       const Array<Sint8>& text,
       WQLSelectStatement& statement)
   {
       if (text.size() == 0 || text[text.size() - 1] != '\0')
           throw MissingNullTerminator();
   
       parse(text.getData(), statement);
   }
   
   void WQLParser::parse(
       const String& text,
       WQLSelectStatement& statement)
   {
       char* tmpText = text.allocateCString();
       ArrayDestroyer<char> destroyer(tmpText);
       parse(tmpText, statement);
   }
   
 void WQLParser::cleanup() void WQLParser::cleanup()
 { {
     Array<char*>& arr = globalParserState->outstandingStrings;     Array<char*>& arr = globalParserState->outstandingStrings;
Line 97 
Line 120 
     //     //
  
     int remaining =     int remaining =
         globalParserState->text.size() - globalParserState->offset - 1;          globalParserState->textSize - globalParserState->offset - 1;
  
     if (remaining == 0)     if (remaining == 0)
     {     {
Line 109 
Line 132 
         numRequested = remaining;         numRequested = remaining;
  
     memcpy(buffer,     memcpy(buffer,
         globalParserState->text.getData() + globalParserState->offset,          globalParserState->text + globalParserState->offset,
         numRequested);         numRequested);
  
     globalParserState->offset += numRequested;     globalParserState->offset += numRequested;


Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2