| 
							- /*
 -  * DISTHRO Plugin Toolkit (DPT)
 -  * Copyright (C) 2012 Filipe Coelho <falktx@gmail.com>
 -  *
 -  * This program is free software; you can redistribute it and/or
 -  * modify it under the terms of the GNU General Public License as
 -  * published by the Free Software Foundation; either version 2 of
 -  * the License, or any later version.
 -  *
 -  * This program is distributed in the hope that it will be useful,
 -  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 -  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 -  * GNU General Public License for more details.
 -  *
 -  * For a full copy of the license see the GPL.txt file
 -  */
 - 
 - #ifndef __DISTRHO_UTILS_H__
 - #define __DISTRHO_UTILS_H__
 - 
 - #include "src/DistrhoDefines.h"
 - 
 - #if DISTRHO_OS_WINDOWS
 - # include <windows.h>
 - #else
 - # include <unistd.h>
 - #endif
 - 
 - #include <cstdio>
 - #include <cstdint>
 - #include <cstdlib>
 - #include <cstring>
 - 
 - // -------------------------------------------------
 - 
 - inline
 - float d_absf(const float& value)
 - {
 -     return (value < 0.0f) ? -value : value;
 - }
 - 
 - inline
 - float d_minf(const float& x, const float& y)
 - {
 -     return (x < y ? x : y);
 - }
 - 
 - inline
 - float d_maxf(const float& x, const float& y)
 - {
 -     return (x > y ? x : y);
 - }
 - 
 - inline
 - long d_cconst(int a, int b, int c, int d)
 - {
 -     return (a << 24) | (b << 16) | (c << 8) | (d << 0);
 - }
 - 
 - inline
 - void d_sleep(unsigned int seconds)
 - {
 - #if DISTRHO_OS_WINDOWS
 -     Sleep(seconds * 1000);
 - #else
 -     sleep(seconds);
 - #endif
 - }
 - 
 - inline
 - void d_msleep(unsigned int mseconds)
 - {
 - #if DISTRHO_OS_WINDOWS
 -     Sleep(mseconds);
 - #else
 -     usleep(mseconds * 1000);
 - #endif
 - }
 - 
 - inline
 - void d_usleep(unsigned int useconds)
 - {
 - #if DISTRHO_OS_WINDOWS
 -     Sleep(useconds / 1000);
 - #else
 -     usleep(useconds);
 - #endif
 - }
 - 
 - inline
 - void d_setenv(const char* key, const char* value)
 - {
 - #if DISTRHO_OS_WINDOWS
 -     SetEnvironmentVariableA(key, value);
 - #else
 -     setenv(key, value, 1);
 - #endif
 - }
 - 
 - // -------------------------------------------------
 - 
 - class d_string
 - {
 - public:
 -     d_string()
 -     {
 -         buffer = strdup("");
 -     }
 - 
 -     d_string(const char* strBuf)
 -     {
 -         buffer = strdup(strBuf ? strBuf : "");
 -     }
 - 
 -     d_string(const d_string& str)
 -     {
 -         buffer = strdup(str.buffer);
 -     }
 - 
 -     d_string(int value)
 -     {
 -         size_t strBufSize = abs(value/10) + 3;
 -         char   strBuf[strBufSize];
 -         snprintf(strBuf, strBufSize, "%d", value);
 - 
 -         buffer = strdup(strBuf);
 -     }
 - 
 -     d_string(unsigned int value)
 -     {
 -         size_t strBufSize = value/10 + 2;
 -         char   strBuf[strBufSize];
 -         snprintf(strBuf, strBufSize, "%u", value);
 - 
 -         buffer = strdup(strBuf);
 -     }
 - 
 -     d_string(float value)
 -     {
 -         char strBuf[255];
 -         snprintf(strBuf, 255, "%f", value);
 - 
 -         buffer = strdup(strBuf);
 -     }
 - 
 -     ~d_string()
 -     {
 -         free(buffer);
 -     }
 - 
 -     size_t length() const
 -     {
 -         return strlen(buffer);
 -     }
 - 
 -     bool isEmpty() const
 -     {
 -         return (*buffer == 0);
 -     }
 - 
 -     // ---------------------------------------------
 - 
 -     operator const char*() const
 -     {
 -         return buffer;
 -     }
 - 
 -     bool operator==(const char* strBuf) const
 -     {
 -         return (strcmp(buffer, strBuf) == 0);
 -     }
 - 
 -     bool operator==(const d_string& str) const
 -     {
 -         return operator==(str.buffer);
 -     }
 - 
 -     bool operator!=(const char* strBuf) const
 -     {
 -         return !operator==(strBuf);
 -     }
 - 
 -     bool operator!=(const d_string& str) const
 -     {
 -         return !operator==(str.buffer);
 -     }
 - 
 -     d_string& operator=(const char* strBuf)
 -     {
 -         free(buffer);
 - 
 -         buffer = strdup(strBuf);
 - 
 -         return *this;
 -     }
 - 
 -     d_string& operator=(const d_string& str)
 -     {
 -         return operator=(str.buffer);
 -     }
 - 
 -     d_string& operator+=(const char* strBuf)
 -     {
 -         size_t newBufSize = strlen(buffer) + strlen(strBuf) + 1;
 -         char   newBuf[newBufSize];
 - 
 -         strcpy(newBuf, buffer);
 -         strcat(newBuf, strBuf);
 -         free(buffer);
 - 
 -         buffer = strdup(newBuf);
 - 
 -         return *this;
 -     }
 - 
 -     d_string& operator+=(const d_string& str)
 -     {
 -         return operator+=(str.buffer);
 -     }
 - 
 -     d_string operator+(const char* strBuf)
 -     {
 -         size_t newBufSize = strlen(buffer) + strlen(strBuf) + 1;
 -         char   newBuf[newBufSize];
 - 
 -         strcpy(newBuf, buffer);
 -         strcat(newBuf, strBuf);
 - 
 -         return d_string(newBuf);
 -     }
 - 
 -     d_string operator+(const d_string& str)
 -     {
 -         return operator+(str.buffer);
 -     }
 - 
 - private:
 -     char* buffer;
 - };
 - 
 - static inline
 - d_string operator+(const char* strBufBefore, const d_string& strAfter)
 - {
 -     const char* strBufAfter = (const char*)strAfter;
 -     size_t newBufSize = strlen(strBufBefore) + strlen(strBufAfter) + 1;
 -     char   newBuf[newBufSize];
 - 
 -     strcpy(newBuf, strBufBefore);
 -     strcat(newBuf, strBufAfter);
 - 
 -     return d_string(newBuf);
 - }
 - 
 - // -------------------------------------------------
 - 
 - #endif // __DISTRHO_UTILS_H__
 
 
  |