1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef skpdiff_util_DEFINED
9 #define skpdiff_util_DEFINED
10 
11 #include "SkString.h"
12 #include "SkTArray.h"
13 
14 #if SK_SUPPORT_OPENCL
15 #if defined(SK_BUILD_FOR_MAC)
16 #   include <OpenCL/cl.h>
17 #else
18 #   include <CL/cl.h>
19 #endif
20 
21 /**
22  * Converts an OpenCL error number into the string of its enumeration name.
23  * @param  err The OpenCL error number
24  * @return The string of the name of the error; "UNKOWN" if the error number is invalid
25  */
26 const char* cl_error_to_string(cl_int err);
27 #endif
28 
29 /**
30  * Get a positive monotonic real-time measure of the amount of seconds since some undefined epoch.
31  * Maximum precision is the goal of this routine.
32  * @return Amount of time in seconds since some epoch
33  */
34 double get_seconds();
35 
36 /**
37  * Get file entries of the given directory.
38  * @param  path    A path to a directory to enumerate
39  * @param  entries A vector to return the results into
40  * @return         True on success, false otherwise
41  */
42 bool get_directory(const char path[], SkTArray<SkString>* entries);
43 
44 /**
45  * Gets the files that match the specified pattern in sorted order.
46  * @param  globPattern The pattern to use. Patterns must be valid paths, optionally with wildcards (*)
47  * @param  entries     An array to return the results into
48  * @return             True on success, false otherwise
49  */
50 bool glob_files(const char globPattern[], SkTArray<SkString>* entries);
51 
52 /**
53  * Gets the absolute version of the given path.
54  * @param  path The absolute or relative path to expand
55  * @return      The absolute path of the given path on success, or an empty string on failure.
56  */
57 SkString get_absolute_path(const SkString& path);
58 
59 
60 #endif
61