home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / include / k3d / k3dsdk / system.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-11-07  |  3.4 KB  |  83 lines

  1. #ifndef K3DSDK_SYSTEM_H
  2. #define K3DSDK_SYSTEM_H
  3.  
  4. // K-3D
  5. // Copyright (c) 1995-2006, Timothy M. Shead
  6. //
  7. // Contact: tshead@k-3d.com
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. //
  14. // This program is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. // General Public License for more details.
  18. //
  19. // You should have received a copy of the GNU General Public
  20. // License along with this program; if not, write to the Free Software
  21. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  22.  
  23. /** \file
  24.     \author Romain Behar (romainbehar@yahoo.com)
  25.     \author Timothy M. Shead (tshead@k-3d.com)
  26. */
  27.  
  28. #include "path.h"
  29. #include "types.h"
  30.  
  31. #include <vector>
  32.  
  33. namespace k3d
  34. {
  35.  
  36. namespace system
  37. {
  38.  
  39. /// Safely returns an environment variable (returns empty string if the variable doesn't exist)
  40. const string_t getenv(const string_t& Variable);
  41. /// Safely sets an environment variable using separate name and value strings
  42. void setenv(const string_t& Name, const string_t& Value);
  43. /// Safely sets an environment variable using "NAME=VALUE" syntax
  44. void setenv(const string_t& Variable);
  45.  
  46. /// Safely returns the user's home directory
  47. const filesystem::path get_home_directory();
  48. /// Safely returns the user's temp directory
  49. const filesystem::path get_temp_directory();
  50. /// Returns a unique temporary file path
  51. const filesystem::path generate_temp_file();
  52. /// Returns the installation path.  On Posix systems this is the equivalent of CMAKE_INSTALL_PREFIX.  On Win32 and OSX it is the parent of the directory that contains the K-3D binary
  53. const filesystem::path install_path();
  54.  
  55. /// Returns the path to a binary executable by searching the contents of the PATH environment variable, or an empty path
  56. const k3d::filesystem::path find_executable(const string_t& Executable);
  57.  
  58. /// Returns the most recent modification time of a file
  59. bool file_modification_time(const filesystem::path& File, time_t& ModificationTime);
  60.  
  61. /// Runs an external process asynchronously.  Note: execs the process directly, do not use shell features!  The child process will have the same environment as its parent, and the PATH environment variable will be used to lookup the binary to be executed.
  62. bool spawn_async(const string_t& CommandLine);
  63. /// Runs an external process synchronously, blocking until it returns.  Note: execs the process directly, do not use shell features!  The child process will have the same environment as its parent, and the PATH environment variable will be used to lookup the binary to be executed.
  64. bool spawn_sync(const string_t& CommandLine);
  65.  
  66. /// Defines a collection of paths
  67. typedef std::vector<filesystem::path> paths_t;
  68. /// Split a string containing zero-or-more paths separated by delimiters into a collection of paths ...
  69. const paths_t decompose_path_list(const string_t Input);
  70.  
  71. /// Returns the correct name for an executable on the local platform
  72. const string_t executable_name(const string_t& Executable);
  73.  
  74. /// Blocks the calling thread for the given number of seconds
  75. void sleep(const double Seconds);
  76.  
  77. } // namespace system
  78.  
  79. } // namespace k3d
  80.  
  81. #endif // !K3DSDK_SYSTEM_H
  82.  
  83.