X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FSlowOperationInformer.cpp;h=b4e9430e5fdfeea8555e1165a15e4b847280c636;hb=4459145c2ccb5d063841a5d8c76b8b8ac9adaf2f;hp=4dafa2c5a1b96be39561c092fb6fd65a10608ed3;hpb=a6d50d4292ac1fe279808312734256298b76040d;p=oota-llvm.git diff --git a/lib/Support/SlowOperationInformer.cpp b/lib/Support/SlowOperationInformer.cpp index 4dafa2c5a1b..b4e9430e5fd 100644 --- a/lib/Support/SlowOperationInformer.cpp +++ b/lib/Support/SlowOperationInformer.cpp @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -12,8 +12,8 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/SlowOperationInformer.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Alarm.h" -#include #include #include using namespace llvm; @@ -28,8 +28,8 @@ SlowOperationInformer::~SlowOperationInformer() { if (LastPrintAmount) { // If we have printed something, make _sure_ we print the 100% amount, and // also print a newline. - std::cout << std::string(LastPrintAmount, '\b') << "Progress " - << OperationName << ": 100% \n"; + outs() << std::string(LastPrintAmount, '\b') << "Progress " + << OperationName << ": 100% \n"; } } @@ -37,18 +37,18 @@ SlowOperationInformer::~SlowOperationInformer() { /// an exception-safe state. The Amount variable should indicate how far /// along the operation is, given in 1/10ths of a percent (in other words, /// Amount should range from 0 to 1000). -void SlowOperationInformer::progress(unsigned Amount) { +bool SlowOperationInformer::progress(unsigned Amount) { int status = sys::AlarmStatus(); if (status == -1) { - std::cout << "\n"; + outs() << "\n"; LastPrintAmount = 0; - throw "While " + OperationName + ", operation cancelled."; + return true; } // If we haven't spent enough time in this operation to warrant displaying the // progress bar, don't do so yet. if (status == 0) - return; + return false; // Delete whatever we printed last time. std::string ToPrint = std::string(LastPrintAmount, '\b'); @@ -61,5 +61,7 @@ void SlowOperationInformer::progress(unsigned Amount) { OS << "% "; LastPrintAmount = OS.str().size(); - std::cout << ToPrint+OS.str() << std::flush; + outs() << ToPrint+OS.str(); + outs().flush(); + return false; }