The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
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.

83 lines
2.6KB

  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE library - "Jules' Utility Class Extensions"
  4. Copyright 2004-11 by Raw Material Software Ltd.
  5. ------------------------------------------------------------------------------
  6. JUCE can be redistributed and/or modified under the terms of the GNU General
  7. Public License (Version 2), as published by the Free Software Foundation.
  8. A copy of the license is included in the JUCE distribution, or can be found
  9. online at www.gnu.org/licenses.
  10. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
  11. WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  12. A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  13. ------------------------------------------------------------------------------
  14. To release a closed-source product which uses JUCE, commercial licenses are
  15. available: visit www.rawmaterialsoftware.com/juce for more information.
  16. ==============================================================================
  17. */
  18. #include "../core/juce_StandardHeader.h"
  19. BEGIN_JUCE_NAMESPACE
  20. #include "juce_Identifier.h"
  21. //==============================================================================
  22. StringPool& Identifier::getPool()
  23. {
  24. static StringPool pool;
  25. return pool;
  26. }
  27. Identifier::Identifier() noexcept
  28. : name (nullptr)
  29. {
  30. }
  31. Identifier::Identifier (const Identifier& other) noexcept
  32. : name (other.name)
  33. {
  34. }
  35. Identifier& Identifier::operator= (const Identifier& other) noexcept
  36. {
  37. name = other.name;
  38. return *this;
  39. }
  40. Identifier::Identifier (const String& name_)
  41. : name (Identifier::getPool().getPooledString (name_))
  42. {
  43. /* An Identifier string must be suitable for use as a script variable or XML
  44. attribute, so it can only contain this limited set of characters.. */
  45. jassert (isValidIdentifier (name_));
  46. }
  47. Identifier::Identifier (const char* const name_)
  48. : name (Identifier::getPool().getPooledString (name_))
  49. {
  50. /* An Identifier string must be suitable for use as a script variable or XML
  51. attribute, so it can only contain this limited set of characters.. */
  52. jassert (isValidIdentifier (toString()));
  53. }
  54. Identifier::~Identifier()
  55. {
  56. }
  57. bool Identifier::isValidIdentifier (const String& possibleIdentifier) noexcept
  58. {
  59. return possibleIdentifier.isNotEmpty()
  60. && possibleIdentifier.containsOnly ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_");
  61. }
  62. END_JUCE_NAMESPACE