directory_management.hpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * Copyright 2010 Vicente J. Botet Escriba
  3. * Copyright 2015 Andrey Semashev
  4. *
  5. * Distributed under the Boost Software License, Version 1.0.
  6. * See http://www.boost.org/LICENSE_1_0.txt
  7. */
  8. #ifndef BOOST_WINAPI_DIRECTORY_MANAGEMENT_HPP_INCLUDED_
  9. #define BOOST_WINAPI_DIRECTORY_MANAGEMENT_HPP_INCLUDED_
  10. #include <boost/winapi/basic_types.hpp>
  11. #include <boost/winapi/get_system_directory.hpp>
  12. #ifdef BOOST_HAS_PRAGMA_ONCE
  13. #pragma once
  14. #endif
  15. #if !defined( BOOST_USE_WINDOWS_H )
  16. extern "C" {
  17. #if !defined( BOOST_NO_ANSI_APIS )
  18. BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
  19. CreateDirectoryA(boost::winapi::LPCSTR_, ::_SECURITY_ATTRIBUTES*);
  20. #if BOOST_WINAPI_PARTITION_APP_SYSTEM
  21. BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
  22. GetTempPathA(boost::winapi::DWORD_ length, boost::winapi::LPSTR_ buffer);
  23. #endif
  24. BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
  25. RemoveDirectoryA(boost::winapi::LPCSTR_);
  26. #endif
  27. BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
  28. CreateDirectoryW(boost::winapi::LPCWSTR_, ::_SECURITY_ATTRIBUTES*);
  29. #if BOOST_WINAPI_PARTITION_APP_SYSTEM
  30. BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
  31. GetTempPathW(boost::winapi::DWORD_ length, boost::winapi::LPWSTR_ buffer);
  32. #endif
  33. BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
  34. RemoveDirectoryW(boost::winapi::LPCWSTR_);
  35. } // extern "C"
  36. #endif
  37. namespace boost {
  38. namespace winapi {
  39. #if !defined( BOOST_NO_ANSI_APIS )
  40. #if BOOST_WINAPI_PARTITION_APP_SYSTEM
  41. using ::GetTempPathA;
  42. #endif
  43. using ::RemoveDirectoryA;
  44. #endif
  45. #if BOOST_WINAPI_PARTITION_APP_SYSTEM
  46. using ::GetTempPathW;
  47. #endif
  48. using ::RemoveDirectoryW;
  49. #if !defined( BOOST_NO_ANSI_APIS )
  50. BOOST_FORCEINLINE BOOL_ CreateDirectoryA(LPCSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
  51. {
  52. return ::CreateDirectoryA(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
  53. }
  54. #endif
  55. BOOST_FORCEINLINE BOOL_ CreateDirectoryW(LPCWSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
  56. {
  57. return ::CreateDirectoryW(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
  58. }
  59. #if !defined( BOOST_NO_ANSI_APIS )
  60. BOOST_FORCEINLINE BOOL_ create_directory(LPCSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
  61. {
  62. return ::CreateDirectoryA(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
  63. }
  64. #if BOOST_WINAPI_PARTITION_APP_SYSTEM
  65. BOOST_FORCEINLINE DWORD_ get_temp_path(DWORD_ length, LPSTR_ buffer)
  66. {
  67. return ::GetTempPathA(length, buffer);
  68. }
  69. #endif
  70. BOOST_FORCEINLINE BOOL_ remove_directory(LPCSTR_ pPathName)
  71. {
  72. return ::RemoveDirectoryA(pPathName);
  73. }
  74. #endif
  75. BOOST_FORCEINLINE BOOL_ create_directory(LPCWSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes)
  76. {
  77. return ::CreateDirectoryW(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes));
  78. }
  79. #if BOOST_WINAPI_PARTITION_APP_SYSTEM
  80. BOOST_FORCEINLINE DWORD_ get_temp_path(DWORD_ length, LPWSTR_ buffer)
  81. {
  82. return ::GetTempPathW(length, buffer);
  83. }
  84. #endif
  85. BOOST_FORCEINLINE BOOL_ remove_directory(LPCWSTR_ pPathName)
  86. {
  87. return ::RemoveDirectoryW(pPathName);
  88. }
  89. } // namespace winapi
  90. } // namespace boost
  91. #endif // BOOST_WINAPI_DIRECTORY_MANAGEMENT_HPP_INCLUDED_