Commit 4f007f771d804c2fc4006cb291e3e22d1b26cc29
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 |