X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBasics%2FBasics_Utils.hxx;h=1f3e451253aecf2796f8eaf8b3550cb4b13e3dcf;hb=7b6895b48ccd982f69db4fe3ecd30d75be0514dc;hp=ed99361c7036da6fc63ce6488364b290fd46c620;hpb=7d2fe213bdf5bf962ce11e253020c9d3e0bc1cce;p=modules%2Fkernel.git diff --git a/src/Basics/Basics_Utils.hxx b/src/Basics/Basics_Utils.hxx index ed99361c7..1f3e45125 100644 --- a/src/Basics/Basics_Utils.hxx +++ b/src/Basics/Basics_Utils.hxx @@ -1,39 +1,162 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library 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 +// Lesser General Public License for more details. // -// This library 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 -// Lesser General Public License for more details. +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // SALOME Utils : general SALOME's definitions and tools // File : Basics_DirUtils.hxx -// Autor : Alexander A. BORODIN +// Author : Alexander A. BORODIN // Module : SALOME // #ifndef _Basics_UTILS_HXX_ #define _Basics_UTILS_HXX_ #include "SALOME_Basics.hxx" - #include +#include + +#ifndef WIN32 +#include +#else +#include +#pragma comment(lib,"winmm.lib") +#pragma warning (disable : 4251) +#endif + +#ifndef SALOME_UNUSED +#define SALOME_UNUSED(var) (void)var +#endif namespace Kernel_Utils { BASICS_EXPORT std::string GetHostname(); + + class BASICS_EXPORT Localizer + { + public: + Localizer(); + Localizer(int, const char*); + ~Localizer(); + private: + void init(int, const char*); + private: + int myCategory; + std::string myOriginalLocale; + }; + + //! GUID type + enum GUIDtype { + DefUserID = 1, //!< Default user attribute ID + ObjectdID //!< Global usage object identifier ID + }; + + BASICS_EXPORT const wchar_t* decode(const char* encoded); + BASICS_EXPORT const wchar_t* decode_s(std::string encoded); + BASICS_EXPORT const char* encode(const wchar_t* decoded); + BASICS_EXPORT std::string encode_s(const wchar_t* decoded); + +#ifdef WIN32 + BASICS_EXPORT char* utf8_encode(const wchar_t* encoded); + BASICS_EXPORT wchar_t* utf8_decode(const char* decoded); + BASICS_EXPORT std::string utf8_encode_s(const std::wstring& encoded); + BASICS_EXPORT std::wstring utf8_decode_s(const std::string& decoded); +#endif + + //! Get predefined GUID + BASICS_EXPORT std::string GetGUID( GUIDtype ); +#ifndef WIN32 + BASICS_EXPORT void print_traceback(); +#else +#if (_MSC_VER >= 1400) // Visual Studio 2005 + BASICS_EXPORT int setenv(const char*, const char*, int); +#endif +#endif +} + + +// +// ============================================================= +// Helper macro for time analysis +// ============================================================= +// +#ifndef WIN32 +#define START_TIMING(name) static long name##tcount=0;static long name##cumul;long name##tt0; timeval name##tv; gettimeofday(&name##tv,0); \ + name##tt0=name##tv.tv_usec+name##tv.tv_sec*1000000; \ + if(name##tcount==0)std::cerr<<__FILE__<<":"<<__LINE__<<":"<<#name< +#include +#include + +template < class T > +std::string ToString(const T &arg) +{ + std::stringstream out; + out << arg; + return(out.str()); +} + +template < class T > +double ToDouble(const T &arg) { + std::stringstream out; + out << arg; + double value = atof(out.str().c_str()); + return value; } +// +// ============================================================= +// Simple Logger macros (no dependency with SALOME) +// ============================================================= +// +#if defined(_DEBUG_) || defined(_DEBUG) +#define STDLOG(msg) {std::cerr<