00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include <string>
00026 #include <vector>
00027 #include "cinder/Cinder.h"
00028 #include <boost/lexical_cast.hpp>
00029
00030 namespace cinder {
00031
00033 std::string expandPath( const std::string &path );
00035 std::string getHomeDirectory();
00037 std::string getDocumentsDirectory();
00039 std::string getPathDirectory( const std::string &path );
00041 std::string getPathFileName( const std::string &path );
00043 std::string getPathExtension( const std::string &path );
00045 bool createDirectories( const std::string &path, bool createParents = true );
00046
00048 std::wstring toUtf16( const std::string &utf8 );
00050 std::string toUtf8( const std::wstring &utf16 );
00051
00053 void sleep( float milliseconds );
00054
00056 #if defined( CINDER_MSW )
00057 inline char getPathSeparator() { return '\\'; }
00058 #else
00059 inline char getPathSeparator() { return '/'; }
00060 #endif
00061
00062 template<typename T>
00063 inline std::string toString( const T &t ) { return boost::lexical_cast<std::string>( t ); }
00064 template<typename T>
00065 inline T fromString( const std::string &s ) { return boost::lexical_cast<T>( s ); }
00066
00068 std::vector<std::string> stackTrace();
00069
00070
00071 inline int8_t swapEndian( int8_t val ) { return val; }
00072 inline uint8_t swapEndian( uint8_t val ) { return val; }
00073 extern int16_t swapEndian( int16_t val );
00074 extern uint16_t swapEndian( uint16_t val );
00075 extern int32_t swapEndian( int32_t val );
00076 extern uint32_t swapEndian( uint32_t val );
00077 extern float swapEndian( float val );
00078 extern double swapEndian( double val );
00079
00080 extern void swapEndianBlock( uint16_t *blockPtr, size_t blockSizeInBytes );
00081 extern void swapEndianBlock( float *blockPtr, size_t blockSizeInBytes );
00082
00083 }