You.i Engine
YiUtilities.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_UTILITIES_H_
3 #define _YI_UTILITIES_H_
4 
5 #include "framework/YiPredef.h"
7 #include "utility/YiString.h"
9 
14 
15 bool YiGetFileName(char &pFileName, char *pFilter);
16 
18 
19 bool YiMakeDirectory(const CYIString &sPath);
20 
21 bool YiDeleteFile(const char *pPath);
22 
23 bool YiCopyFile(const char *pSourcePath, const char *pDestinationPath);
24 
29 bool YiFilesAreIdentical(const char *pReferencePath, const char *pTestPath);
30 
31 /* YI_SWAP
32  * Swaps a and b using temp storage t *
33  */
34 template <typename YI_SWAP_TYPE>
35 inline void YI_SWAP(YI_SWAP_TYPE &a, YI_SWAP_TYPE &b)
36 {
37  YI_SWAP_TYPE t = a; a = b; b = t;
38 }
39 
40 YI_EXTERNINLINE uint16_t RandomWORD(void);
41 YI_EXTERNINLINE int32_t YI_MIN4(int32_t a, int32_t b, int32_t c, int32_t d);
42 YI_EXTERNINLINE int32_t YI_MAX4(int32_t a, int32_t b, int32_t c, int32_t d);
43 
44 bool CompareNames(wchar_t *Name, wchar_t *Compare);
45 
46 YI_FILE *YI_FOPEN(const char *pPath, const char *pMode);
47 YI_FILE *YI_WFOPEN(const wchar_t *pPath, const wchar_t *pMode);
48 void YI_FCLOSE(YI_FILE *pFile);
49 void YI_FSEEK(YI_FILE *pFile, int32_t nPos, int32_t nMode);
50 int32_t YI_FTELL(YI_FILE *pFile);
51 int32_t YI_TRUNCATE(YI_FILE *pFile, int32_t length);
52 
53 uint64_t YiGetTimeuS(void);
54 
55 void YILockFrameRate(int32_t nFPS);
56 
57 #if defined (YI_WIN32)
58 int32_t GetLine(char *buff, int32_t n, YI_FILE *in);
59 #endif
60 
61 /* YiReadFile
62  * Returns the contents of a file into an allocated buffer
63  * Returned buffer must be freed (YI_FREE)
64  */
65 uint8_t *YiReadFile(YI_FILE *pFile, uint32_t *pBufferSize, uint32_t uAdditionalPadding);
66 
70 std::vector<char> YiBase64Encode(const char *pData, uint32_t unInputLength);
71 
75 inline std::vector<char> YiBase64Encode(const std::vector<char> &byteArray)
76 {
77  return YiBase64Encode(&byteArray.front(), (uint32_t)byteArray.size());
78 }
79 
85 inline std::vector<char> YiBase64Encode(const std::string &str)
86 {
87  return YiBase64Encode(str.c_str(), (uint32_t)str.size());
88 }
89 
95 inline std::vector<char> YiBase64Encode(const CYIString &str)
96 {
97  return YiBase64Encode(str.GetData(), str.GetSizeInBytes());
98 }
99 
103 std::vector<char> YiBase64Decode(const char *pData, uint32_t unInputLength);
104 
108 inline std::vector<char> YiBase64Decode(const std::vector<char> &byteArray)
109 {
110  return YiBase64Decode(&byteArray.front(), (uint32_t)byteArray.size());
111 }
112 
118 inline std::vector<char> YiBase64Decode(const std::string &str)
119 {
120  return YiBase64Decode(str.c_str(), (uint32_t)str.size());
121 }
122 
128 inline std::vector<char> YiBase64Decode(const CYIString &str)
129 {
130  return YiBase64Decode(str.GetData(), str.GetSizeInBytes());
131 }
132 
133 
137 bool YiIsLittleEndian();
138 
139 
143 bool YiIsBigEndian();
144 
173 template<typename T, size_t N>
174 inline size_t YI_SIZE_OF_ARRAY(const T (&a)[N])
175 {
176  YI_UNUSED(a);
177  YI_UNUSED(sizeof (0[a])); // This line should cause an error if you pass an object with a user-defined subscript operator
178  return N;
179 }
180 
183 #endif // _YI_UTILITIES_H_
int32_t YI_FTELL(YI_FILE *pFile)
void YILockFrameRate(int32_t nFPS)
bool YiIsLittleEndian()
void YI_FSEEK(YI_FILE *pFile, int32_t nPos, int32_t nMode)
#define YI_EXTERNINLINE
Definition: YiPredef.h:74
CYIString YiGetLocalDirectory()
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
YI_EXTERNINLINE int32_t YI_MAX4(int32_t a, int32_t b, int32_t c, int32_t d)
bool CompareNames(wchar_t *Name, wchar_t *Compare)
void YI_FCLOSE(YI_FILE *pFile)
std::vector< char > YiBase64Encode(const char *pData, uint32_t unInputLength)
bool YiFilesAreIdentical(const char *pReferencePath, const char *pTestPath)
bool YiMakeDirectory(const CYIString &sPath)
YI_EXTERNINLINE uint16_t RandomWORD(void)
YI_FILE * YI_WFOPEN(const wchar_t *pPath, const wchar_t *pMode)
uint64_t YiGetTimeuS(void)
void YI_SWAP(YI_SWAP_TYPE &a, YI_SWAP_TYPE &b)
Definition: YiUtilities.h:35
size_t YI_SIZE_OF_ARRAY(const T(&a)[N])
Definition: YiUtilities.h:174
uint32_t GetSizeInBytes() const
YI_FILE * YI_FOPEN(const char *pPath, const char *pMode)
uint8_t * YiReadFile(YI_FILE *pFile, uint32_t *pBufferSize, uint32_t uAdditionalPadding)
#define YI_UNUSED(param)
Definition: YiPredef.h:85
bool YiDeleteFile(const char *pPath)
YI_EXTERNINLINE int32_t YI_MIN4(int32_t a, int32_t b, int32_t c, int32_t d)
std::vector< char > YiBase64Decode(const char *pData, uint32_t unInputLength)
int32_t YI_TRUNCATE(YI_FILE *pFile, int32_t length)
bool YiGetFileName(char &pFileName, char *pFilter)
bool YiCopyFile(const char *pSourcePath, const char *pDestinationPath)
bool YiIsBigEndian()
#define YI_FILE
Definition: YiPredefAndroid.h:102
const char * GetData() const