ObjTools.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /** @file ObjTools.h
  2. * @brief Some helpful templates for text parsing
  3. */
  4. #ifndef OBJ_TOOLS_H_INC
  5. #define OBJ_TOOLS_H_INC
  6. namespace Assimp
  7. {
  8. /** @brief Returns true, if token is a space on any supported platform
  9. * @param token Token to search in
  10. * @return true, if token is a space
  11. */
  12. inline bool isSpace(char token)
  13. {
  14. return (token == ' ' || token == '\n' || token == '\f' || token == '\r' ||
  15. token == '\t');
  16. }
  17. /** @brief Returns next word separated by a space
  18. * @param pBuffer Pointer to data buffer
  19. * @param pEnd Pointer to end of buffer
  20. * @return Pointer to next space
  21. */
  22. template<class Char_T>
  23. inline Char_T getNextWord(Char_T pBuffer, Char_T pEnd)
  24. {
  25. while (pBuffer != pEnd)
  26. {
  27. if (!isSpace(*pBuffer))
  28. break;
  29. pBuffer++;
  30. }
  31. return pBuffer;
  32. }
  33. /** @brief Returns ponter a next token
  34. * @param pBuffer Pointer to data buffer
  35. * @param pEnd Pointer to end of buffer
  36. * @return Pointer to next token
  37. */
  38. template<class Char_T>
  39. inline Char_T getNextToken(Char_T pBuffer, Char_T pEnd)
  40. {
  41. while (pBuffer != pEnd)
  42. {
  43. if (isSpace(*pBuffer))
  44. break;
  45. pBuffer++;
  46. }
  47. return getNextWord(pBuffer, pEnd);
  48. }
  49. } // Namespace Assimp
  50. #endif