ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/utils/ProgressBar.cpp
(Generate patch)

Comparing trunk/src/utils/ProgressBar.cpp (file contents):
Revision 1782 by gezelter, Wed Aug 22 02:28:28 2012 UTC vs.
Revision 1939 by gezelter, Thu Oct 31 18:18:57 2013 UTC

# Line 35 | Line 35
35   *                                                                      
36   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 < * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
38 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
39   * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40   * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
42  
43 + #ifdef IS_MPI
44 + #include <mpi.h>
45 + #endif
46 +
47   #include <iostream>
48   #include <cstdlib>
49  
# Line 52 | Line 56
56   #else
57   #include <cstdio>
58   #include <sys/ioctl.h>
59 + #include <unistd.h>
60   #endif
61  
57 #ifdef IS_MPI
58 #include <mpi.h>
59 #endif
60
62   #include "utils/ProgressBar.hpp"
63  
64   using namespace std;
# Line 86 | Line 87 | namespace OpenMD {
87    
88    void ProgressBar::update() {
89  
89    int width;
90
90   #ifdef IS_MPI
91      if (MPI::COMM_WORLD.Get_rank() == 0) {
92   #endif
# Line 96 | Line 95 | namespace OpenMD {
95        if (isatty(fileno(stdout))  && (getenv("SGE_TASK_ID")==NULL)) {    
96          // get the window width:
97  
98 +        int width = 0;
99   #ifdef _MSC_VER
100          CONSOLE_SCREEN_BUFFER_INFO csbi;
101 <        int ret = GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ),
102 <                                             &csbi);
101 >        HANDLE hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
102 >        int ret = GetConsoleScreenBufferInfo(hConsole, &csbi);
103          if(ret) {
104 <          width = csbi.dwSize.X;
105 <        }
104 >          width = csbi.dwSize.X - 1;
105 >        }
106   #else
107          struct winsize w;
108          ioctl(fileno(stdout), TIOCGWINSZ, &w);
# Line 130 | Line 130 | namespace OpenMD {
130            
131            // compute the best estimate of the ending time:
132            time_t current_ = time(NULL);
133 <          time_t end_ = start_ + (current_ - start_) * (100.0/percent);
133 >          time_t end_ = static_cast<time_t>(start_ + (current_ - start_) *
134 >                                            (100.0/percent) );
135            struct tm * ender = localtime(&end_);
136            char buffer[22];
137            strftime(buffer, 22, "%a %b %d @ %I:%M %p", ender);
138 <          
138 >
139 > #ifdef _MSC_VER
140 >          csbi.dwCursorPosition.X = 0;
141 >          SetConsoleCursorPosition(hConsole, csbi.dwCursorPosition);
142 > #else          
143            cout << '\r';
144 + #endif
145            cout.width(3);
146            cout << right << int(percent);
147            cout.width(3);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines