const char *NAMESPACE::File::adaptPath (const char *path) { const int N = 2048; static char buffer[N]; sl_assert(path != NULL); int c = 0; #ifdef WIN32 while (path[c] != '\0') { buffer[c] = path[c]; if (buffer[c] == '/') { buffer[c] = '\\'; } c++; sl_assert(c < N); }; buffer[c] = '\0'; #else while (path[c] != '\0') { buffer[c] = path[c]; if (buffer[c] == '\\') { buffer[c] = '/'; } c++; sl_assert(c < N); }; buffer[c] = '\0'; #endif return buffer; }
t_time NAMESPACE::Time::milliseconds() { #ifdef WIN32 static bool init = false; static t_time freq; if (!init) { // TODO / FIXME move into a global timer init ? init = true; LARGE_INTEGER lfreq; sl_assert(QueryPerformanceFrequency(&lfreq) != 0); freq = t_time(lfreq.QuadPart); } LARGE_INTEGER tps; QueryPerformanceCounter(&tps); return t_time(t_time(tps.QuadPart)*1000/freq); #else struct timeval now; uint ticks; static struct timeval start; static bool init=false; if (!init) { // TODO / FIXME move into a global timer init ? gettimeofday(&start, NULL); init=true; } gettimeofday(&now, NULL); uint ms=uint((now.tv_sec-start.tv_sec)*1000+(now.tv_usec-start.tv_usec)/1000); return (ms); #endif }
void NAMESPACE::File::createDirectory(const char *path) { sl_assert(path != NULL); #ifdef WIN32 CreateDirectoryA(path,NULL); #else mkdir(path,S_IRUSR|S_IWUSR|S_IXUSR); #endif }
long NAMESPACE::File::size(const char *path) { FILE *f = NULL; fopen_s(&f,path,"rb"); sl_assert(f != NULL); fseek(f,0,SEEK_END); long fsize = ftell(f); fclose(f); return fsize; }
long long NAMESPACE::Time::ticks() { #ifdef WIN32 return rdtsc(); #else sl_assert(false); return 0; #endif }
static float select(NAMESPACE::Trackball::e_Direction dir, v3f v) { switch (dir) { case NAMESPACE::Trackball::X_pos: return v[0]; break; case NAMESPACE::Trackball::X_neg: return v[0]; break; case NAMESPACE::Trackball::Y_pos: return v[1]; break; case NAMESPACE::Trackball::Y_neg: return v[1]; break; case NAMESPACE::Trackball::Z_pos: return v[2]; break; case NAMESPACE::Trackball::Z_neg: return v[2]; break; }; sl_assert(false); return 0; }
static v3f dir2v3f(NAMESPACE::Trackball::e_Direction dir) { switch (dir) { case NAMESPACE::Trackball::X_pos: return V3F(1, 0, 0); break; case NAMESPACE::Trackball::X_neg: return V3F(-1, 0, 0); break; case NAMESPACE::Trackball::Y_pos: return V3F(0, 1, 0); break; case NAMESPACE::Trackball::Y_neg: return V3F(0, -1, 0); break; case NAMESPACE::Trackball::Z_pos: return V3F(0, 0, 1); break; case NAMESPACE::Trackball::Z_neg: return V3F(0, 0, -1); break; }; sl_assert(false); return v3f(0); }
double NAMESPACE::Time::microseconds() { #ifdef WIN32 static bool init = false; static LARGE_INTEGER freq; if (!init) { // TODO / FIXME move into a global timer init ? init = true; BOOL b = QueryPerformanceFrequency(&freq); sl_assert(b != 0); } LARGE_INTEGER tps; QueryPerformanceCounter(&tps); return tps.QuadPart * (1000000.0 / freq.QuadPart); #else sl_assert(false); return 0; /* struct timeval now; uint ticks; static struct timeval start; static bool init=false; if (!init) { // TODO / FIXME move into a global timer init ? gettimeofday(&start, NULL); init=true; } gettimeofday(&now, NULL); uint ms=uint((now.tv_sec-start.tv_sec)*1000+(now.tv_usec-start.tv_usec)/1000); return (ms); */ #endif }
static void del_node(void *p) { node_s *prev, *next; prev = head; next = head->next; while (next != 0) { if (next->p == p) { prev->next = next->next; slc_free(next); return; } prev = next; next = next->next; } /* fail to find the pointer. please verify where the pointer from. */ sl_assert(1); }