FileInfo.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "StdInc.h"
  2. #include "FileInfo.h"
  3. namespace FileInfo
  4. {
  5. boost::string_ref GetFilename(boost::string_ref path)
  6. {
  7. const auto pos = path.find_last_of("/\\");
  8. if (pos != boost::string_ref::npos)
  9. return path.substr(pos + 1);
  10. return path;
  11. }
  12. boost::string_ref GetExtension(boost::string_ref path)
  13. {
  14. const auto dotPos = path.find_last_of('.');
  15. if(dotPos != boost::string_ref::npos)
  16. return path.substr(dotPos);
  17. return boost::string_ref{};
  18. }
  19. boost::string_ref GetStem(boost::string_ref path)
  20. {
  21. auto begin = path.find_last_of("/\\");
  22. auto end = path.find_last_of('.');
  23. if (begin == boost::string_ref::npos)
  24. begin = 0;
  25. else
  26. begin += 1;
  27. if (end < begin)
  28. end = boost::string_ref::npos;
  29. return path.substr(begin, end);
  30. }
  31. boost::string_ref GetParentPath(boost::string_ref path)
  32. {
  33. const auto pos = path.find_last_of("/\\");
  34. return path.substr(0, pos);
  35. }
  36. boost::string_ref GetPathStem(boost::string_ref path)
  37. {
  38. const auto dotPos = path.find_last_of('.');
  39. return path.substr(0, dotPos);
  40. }
  41. } // namespace FileInfo