Commit 4f007f771d804c2fc4006cb291e3e22d1b26cc29

Authored by David Mayerich
1 parent dc913a73

added better comments for stim::filename

Showing 1 changed file with 40 additions and 36 deletions   Show diff stats
stim/parser/filename.h
@@ -110,7 +110,7 @@ public: @@ -110,7 +110,7 @@ public:
110 } 110 }
111 111
112 112
113 - 113 + /// Outputs the file name (including prefix and extension)
114 std::string get_name(){ 114 std::string get_name(){
115 if(prefix == "" && ext == "") 115 if(prefix == "" && ext == "")
116 return ""; 116 return "";
@@ -118,14 +118,18 @@ public: @@ -118,14 +118,18 @@ public:
118 return prefix + "." + ext; 118 return prefix + "." + ext;
119 } 119 }
120 120
  121 + /// Output the file extension only (usually three characters after a '.')
121 std::string get_extension(){ 122 std::string get_extension(){
122 return ext; 123 return ext;
123 } 124 }
124 125
  126 + /// Output the file prefix only (name before the extension)
125 std::string get_prefix(){ 127 std::string get_prefix(){
126 return prefix; 128 return prefix;
127 } 129 }
128 130
  131 + /// Output the entire path (not including the filename)
  132 + /// ex. "c:\this\is\the\directory\"
129 std::string dir(){ 133 std::string dir(){
130 std::stringstream ss; 134 std::stringstream ss;
131 135
@@ -146,17 +150,17 @@ public: @@ -146,17 +150,17 @@ public:
146 150
147 } 151 }
148 152
  153 + /// Output the entire string, including the path and filename
  154 + /// ex. "c:\this\is\a\directory\file.txt"
149 std::string str(){ 155 std::string str(){
150 -  
151 - std::stringstream ss;  
152 -  
153 - ss<<dir()<<get_name();  
154 -  
155 - return ss.str(); 156 + std::stringstream ss; //create a string stream
  157 + ss<<dir()<<get_name(); //push the directory and filename to that stream
  158 + return ss.str(); //convert the stream to a string and return it
156 } 159 }
157 160
158 //***************************************************************************************************************** 161 //*****************************************************************************************************************
159 // output is the directory and the prefix and the extension of the files, which are looking for in that directory. 162 // output is the directory and the prefix and the extension of the files, which are looking for in that directory.
  163 + /// David: I have no idea what this is doing. It looks identical to dir()
160 std::string dir_fname(){ 164 std::string dir_fname(){
161 std::stringstream ss; 165 std::stringstream ss;
162 166
@@ -182,20 +186,17 @@ public: @@ -182,20 +186,17 @@ public:
182 std::string f_name(std::string file_name){ 186 std::string f_name(std::string file_name){
183 std::stringstream ss; 187 std::stringstream ss;
184 188
185 - //if the path is absolute  
186 - if(absolute){  
187 - //output the drive letter if in Windows 189 + if(absolute){ //if the path is absolute
188 #ifdef _WIN32 190 #ifdef _WIN32
189 - ss<<drive<<":"; 191 + ss<<drive<<":"; //output the drive letter if in Windows
190 #endif 192 #endif
191 - ss<<STIM_FILENAME_DIV; 193 + ss<<STIM_FILENAME_DIV; //output a path divider
192 } 194 }
193 195
194 - //output the directory  
195 - for(unsigned int d = 0; d < path.size(); d++)  
196 - ss<<path[d]<<STIM_FILENAME_DIV; 196 + for(unsigned int d = 0; d < path.size(); d++) //for each directory in the current path
  197 + ss<<path[d]<<STIM_FILENAME_DIV; //add that directory, interspersing path dividers
197 198
198 - stim::filename fn = file_name; 199 + stim::filename fn = file_name;
199 std::string fn_prefix = fn.prefix; 200 std::string fn_prefix = fn.prefix;
200 std::string fn_ext = fn.ext; 201 std::string fn_ext = fn.ext;
201 ss<<fn_prefix + '.' + fn_ext; 202 ss<<fn_prefix + '.' + fn_ext;
@@ -204,38 +205,41 @@ public: @@ -204,38 +205,41 @@ public:
204 205
205 } 206 }
206 207
  208 + /// Returns a list of files using the current filename as a template.
  209 + /// For example:
  210 + /// C:\this\is\a\path\file*.txt
  211 + /// can be used as a template to find a series of files file001.txt, file002.txt, file003.txt, etc.
207 std::vector<stim::filename> get_list(){ 212 std::vector<stim::filename> get_list(){
208 -#ifdef _WIN32  
209 - //get a list of files matching the current template  
210 - 213 + //this is OS dependent, so we're starting with Windows
  214 + //the Unix version requires Boost
211 215
212 - //stim::filename file_path;  
213 - stim::filename filepath(dir_fname()); 216 +#elif _WIN32
  217 + stim::filename filepath(dir_fname()); //initialize filepath with the mask
214 218
215 - HANDLE hFind = INVALID_HANDLE_VALUE; 219 + HANDLE hFind = INVALID_HANDLE_VALUE; //allocate data structures for looping through files
216 WIN32_FIND_DATAA FindFileData; 220 WIN32_FIND_DATAA FindFileData;
217 - std::vector<stim::filename> file_list; 221 + std::vector<stim::filename> file_list; //initialize a list to hold all matching filenames
218 222
219 - hFind = FindFirstFileA((filepath.str().c_str()), &FindFileData); 223 + hFind = FindFirstFileA((filepath.str().c_str()), &FindFileData); //find the first file that matches the specified file path
220 224
221 - if (hFind == INVALID_HANDLE_VALUE) {  
222 - printf ("Invalid file handle. Error is %u.\n", GetLastError()); 225 + if (hFind == INVALID_HANDLE_VALUE) { //if there are no matching files
  226 + printf ("Invalid file handle. Error is %u.\n", GetLastError()); //print an error
223 } 227 }
224 else { 228 else {
225 - std::string file_name = FindFileData.cFileName; //get the file name  
226 - std::string file_path = dir();  
227 - stim::filename current_file(file_path + file_name);  
228 - file_list.push_back(current_file); 229 + std::string file_name = FindFileData.cFileName; //save the file name
  230 + std::string file_path = dir(); //the file is in the specified directory, so save it
  231 + stim::filename current_file(file_path + file_name); //create a stim::filename structure representing this file
  232 + file_list.push_back(current_file); //push the new stim::filename to the file list
229 233
230 // List all the other files in the directory. 234 // List all the other files in the directory.
231 - while (FindNextFileA(hFind, &FindFileData) != 0){  
232 - file_name = FindFileData.cFileName;  
233 - current_file = (f_name(file_name));  
234 - file_list.push_back(current_file); 235 + while (FindNextFileA(hFind, &FindFileData) != 0){ //iterate until there are no more matching files
  236 + file_name = FindFileData.cFileName; //save the next file
  237 + current_file = (f_name(file_name)); //append the directory
  238 + file_list.push_back(current_file); //push it to the list
235 } 239 }
236 - FindClose(hFind); 240 + FindClose(hFind); //close the file data structure
237 } 241 }
238 - return file_list; 242 + return file_list; //return the list of files
239 243
240 #elif BOOST_PRECOMPILED 244 #elif BOOST_PRECOMPILED
241 245