Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.3KB

  1. /*
  2. * Cross-platform C++ library for Carla, based on Juce v4
  3. * Copyright (C) 2015 ROLI Ltd.
  4. * Copyright (C) 2017 Filipe Coelho <falktx@falktx.com>
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU General Public License as
  8. * published by the Free Software Foundation; either version 2 of
  9. * the License, or any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  17. */
  18. #include "misc/Result.h"
  19. //==============================================================================
  20. namespace water
  21. {
  22. #ifdef CARLA_OS_WIN
  23. static Result getResultForLastError()
  24. {
  25. TCHAR messageBuffer [256] = { 0 };
  26. FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
  27. nullptr, GetLastError(), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
  28. messageBuffer, (DWORD) numElementsInArray (messageBuffer) - 1, nullptr);
  29. return Result::fail (String (messageBuffer));
  30. }
  31. static int64 water_fileSetPosition (void* handle, int64 pos)
  32. {
  33. LARGE_INTEGER li;
  34. li.QuadPart = pos;
  35. li.LowPart = SetFilePointer ((HANDLE) handle, (LONG) li.LowPart, &li.HighPart, FILE_BEGIN); // (returns -1 if it fails)
  36. return li.QuadPart;
  37. }
  38. static void* currentModuleHandle = nullptr;
  39. void* Process::getCurrentModuleInstanceHandle() noexcept
  40. {
  41. if (currentModuleHandle == nullptr)
  42. currentModuleHandle = GetModuleHandleA (nullptr);
  43. return currentModuleHandle;
  44. }
  45. #else
  46. static Result getResultForErrno()
  47. {
  48. return Result::fail (String (strerror (errno)));
  49. }
  50. static int getFD (void* handle) noexcept { return (int) (pointer_sized_int) handle; }
  51. static void* fdToVoidPointer (int fd) noexcept { return (void*) (pointer_sized_int) fd; }
  52. static int64 water_fileSetPosition (void* handle, int64 pos)
  53. {
  54. if (handle != nullptr && lseek (getFD (handle), pos, SEEK_SET) == pos)
  55. return pos;
  56. return -1;
  57. }
  58. #endif
  59. }
  60. #include "containers/NamedValueSet.cpp"
  61. #include "containers/Variant.cpp"
  62. #include "files/DirectoryIterator.cpp"
  63. #include "files/File.cpp"
  64. #include "files/FileInputStream.cpp"
  65. #include "files/FileOutputStream.cpp"
  66. #include "files/TemporaryFile.cpp"
  67. #include "maths/Random.cpp"
  68. #include "memory/MemoryBlock.cpp"
  69. #include "midi/MidiBuffer.cpp"
  70. #include "midi/MidiFile.cpp"
  71. #include "midi/MidiMessage.cpp"
  72. #include "midi/MidiMessageSequence.cpp"
  73. #include "misc/Result.cpp"
  74. #include "misc/Time.cpp"
  75. #include "processors/AudioProcessor.cpp"
  76. #include "processors/AudioProcessorGraph.cpp"
  77. #include "streams/FileInputSource.cpp"
  78. #include "streams/InputStream.cpp"
  79. #include "streams/MemoryOutputStream.cpp"
  80. #include "streams/OutputStream.cpp"
  81. #include "text/CharacterFunctions.cpp"
  82. #include "text/Identifier.cpp"
  83. #include "text/StringArray.cpp"
  84. #include "text/StringPool.cpp"
  85. #include "text/String.cpp"
  86. #include "threads/ChildProcess.cpp"
  87. #include "xml/XmlDocument.cpp"
  88. #include "xml/XmlElement.cpp"