[llvm-commits] [hlvm] r38314 - in /hlvm/trunk: hlvm/Reader/Reader.h hlvm/Reader/XMLReader.cpp tools/hlvm-xml2xml/hlvm-xml2xml.cpp

Reid Spencer reid at x10sys.com
Sat Jul 7 17:02:16 PDT 2007


Author: reid
Date: Sat Jul  7 19:02:16 2007
New Revision: 38314

URL: http://llvm.org/viewvc/llvm-project?rev=38314&view=rev
Log:
Make the Reader::read interface return a boolean indicating whether the reading
succeeded or failed. Make the xml2xml tool return an error if it fails. This
assists with getting more accurate results from the "invalid" test suite.

Modified:
    hlvm/trunk/hlvm/Reader/Reader.h
    hlvm/trunk/hlvm/Reader/XMLReader.cpp
    hlvm/trunk/tools/hlvm-xml2xml/hlvm-xml2xml.cpp

Modified: hlvm/trunk/hlvm/Reader/Reader.h
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/hlvm/Reader/Reader.h?rev=38314&r1=38313&r2=38314&view=diff

==============================================================================
--- hlvm/trunk/hlvm/Reader/Reader.h (original)
+++ hlvm/trunk/hlvm/Reader/Reader.h Sat Jul  7 19:02:16 2007
@@ -40,7 +40,7 @@
   virtual ~Reader() {}
 
   /// This method reads the entire content of the reader's source.
-  virtual void read() = 0;
+  virtual bool read() = 0;
 
   /// This method retrieves the construct AST that resulted from reading.
   /// @returns 0 if nothing has been read yet

Modified: hlvm/trunk/hlvm/Reader/XMLReader.cpp
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/hlvm/Reader/XMLReader.cpp?rev=38314&r1=38313&r2=38314&view=diff

==============================================================================
--- hlvm/trunk/hlvm/Reader/XMLReader.cpp (original)
+++ hlvm/trunk/hlvm/Reader/XMLReader.cpp Sat Jul  7 19:02:16 2007
@@ -87,7 +87,7 @@
     if (doc) xmlFreeDoc(doc);
   }
 
-  virtual void read();
+  virtual bool read();
   virtual AST* get();
 
   std::string lookupToken(int32_t token) const
@@ -1145,7 +1145,7 @@
 
 // Implement the read interface to parse, validate, and convert the
 // XML document into AST Nodes. 
-void
+bool
 XMLReaderImpl::read() {
 
   // create the RelaxNG Parser Context
@@ -1153,7 +1153,7 @@
     xmlRelaxNGNewMemParserCtxt(HLVMGrammar, sizeof(HLVMGrammar));
   if (!rngparser) {
     error(0,"Failed to allocate RNG Parser Context");
-    return;
+    return false;
   }
 
   // Provide the error handler for parsing the schema
@@ -1164,7 +1164,7 @@
   if (!schema) {
     error(0,"Failed to parse the RNG Schema");
     xmlRelaxNGFreeParserCtxt(rngparser);
-    return;
+    return false;
   }
 
   // create a document parser context
@@ -1173,7 +1173,7 @@
     error(0,"Failed to allocate document parser context");
     xmlRelaxNGFreeParserCtxt(rngparser);
     xmlRelaxNGFree(schema);
-    return;
+    return false;
   }
 
   // Parse the file, creating a Document tree
@@ -1183,7 +1183,7 @@
     xmlRelaxNGFreeParserCtxt(rngparser);
     xmlRelaxNGFree(schema);
     xmlFreeParserCtxt(ctxt);
-    return;
+    return false;
   }
 
   // Create a validation context
@@ -1195,7 +1195,7 @@
     xmlFreeParserCtxt(ctxt);
     xmlFreeDoc(doc);
     doc = 0;
-    return;
+    return false;
   }
 
   // Provide the error handler for parsing the schema
@@ -1210,7 +1210,7 @@
     xmlFreeDoc(doc);
     doc = 0;
     xmlRelaxNGFreeValidCtxt(validation);
-    return;
+    return false;
   }
 
   // Parse
@@ -1221,6 +1221,7 @@
   xmlRelaxNGFreeValidCtxt(validation);
   xmlFreeDoc(doc);
   doc = 0;
+  return true;
 }
 
 AST*

Modified: hlvm/trunk/tools/hlvm-xml2xml/hlvm-xml2xml.cpp
URL: http://llvm.org/viewvc/llvm-project/hlvm/trunk/tools/hlvm-xml2xml/hlvm-xml2xml.cpp?rev=38314&r1=38313&r2=38314&view=diff

==============================================================================
--- hlvm/trunk/tools/hlvm-xml2xml/hlvm-xml2xml.cpp (original)
+++ hlvm/trunk/tools/hlvm-xml2xml/hlvm-xml2xml.cpp Sat Jul  7 19:02:16 2007
@@ -79,25 +79,26 @@
 
     if (InputFilename == "-" ) {
       std::cerr << "Not supported yet: input from stdin\n";
-      exit(2);
+      return 2;
     } else {
       llvm::sys::Path path(InputFilename);
       if (!path.canRead()) {
         std::cerr << argv[0] << ": can't read input file: " << InputFilename
                   << "\n";
-        exit(2);
+        return 2;
       }
     }
 
     XMLReader* rdr = XMLReader::create(InputFilename);
     XMLWriter* wrtr = XMLWriter::create(OutputFilename.c_str());
-    rdr->read();
+    if (!rdr->read())
+      return 3;
     AST* node = rdr->get();
-    if (node) {
-      if (!validate(node))
-        return 1;
-      wrtr->write(node);
-    }
+    if (!node)
+      return 4;
+    if (!validate(node))
+      return 5;
+    wrtr->write(node);
     delete rdr;
     delete wrtr;
 





More information about the llvm-commits mailing list