11#ifndef __AUDACITY_IDENTIFIER__ 
   12#define __AUDACITY_IDENTIFIER__ 
   42      { value.swap( 
str ); }
 
   48         value.clear(), 
swap( 
id );
 
   59   Identifier(std::initializer_list<Identifier> components, wxChar separator);
 
   61   bool empty()
 const { 
return value.empty(); }
 
   62   size_t size()
 const { 
return value.size(); }
 
   63   size_t length()
 const { 
return value.length(); }
 
   66   const wxString &
GET()
 const { 
return value; }
 
   68   std::vector< Identifier > split( wxChar separator ) 
const;
 
   76{ 
return x.
GET() == y.
GET(); }
 
   82{ 
return x.
GET() < y.
GET(); }
 
   97       { 
return hash<wxString>{}( 
id.GET() ); }
 
  103   { 
if (
id) { *
id = 
str; 
return true; } 
else return false; }
 
  111template<
typename Tag, 
bool CaseSensitive = true >
 
  131   template< 
typename Tag2, 
bool b >
 
  134   template< 
typename Tag2, 
bool b >
 
  137   template< 
typename Tag2, 
bool b >
 
  140   template< 
typename Tag2, 
bool b >
 
  148   template<
typename String, 
typename = 
typename String::TagType>
 
  150         { 
return String{ this->
GET() }; }
 
  156template< 
typename Tag1, 
typename Tag2, 
bool b1, 
bool b2 >
 
  160   static_assert( std::is_same_v< Tag1, Tag2 > && b1 == b2,
 
  161      "TaggedIdentifiers with different tags or sensitivity are not comparable" );
 
  164      return x.
GET(). Cmp ( y.
GET() ) == 0;
 
  166      return x.
GET(). CmpNoCase ( y.
GET() ) == 0;
 
  169template< 
typename Tag1, 
typename Tag2, 
bool b1, 
bool b2 >
 
  174template< 
typename Tag1, 
typename Tag2, 
bool b1, 
bool b2 >
 
  178   static_assert( std::is_same_v< Tag1, Tag2 > && b1 == b2,
 
  179      "TaggedIdentifiers with different tags or sensitivity are not comparable" );
 
  182      return x.
GET(). Cmp ( y.
GET() ) < 0;
 
  184      return x.
GET(). CmpNoCase ( y.
GET() ) < 0;
 
  187template< 
typename Tag1, 
typename Tag2, 
bool b1, 
bool b2 >
 
  192template< 
typename Tag1, 
typename Tag2, 
bool b1, 
bool b2 >
 
  197template< 
typename Tag1, 
typename Tag2, 
bool b1, 
bool b2 >
 
  205      : hash< Identifier > {};
 
  235struct ManualPageIDTag;
 
std::vector< PluginPath > PluginPaths
bool operator<(const Identifier &x, const Identifier &y)
wxString FileExtension
File extension, not including any leading dot.
bool operator>=(const Identifier &x, const Identifier &y)
wxString wxToString(const Identifier &str)
This lets you pass Identifier into wxFileConfig::Write.
std::vector< CommandID > CommandIDs
bool operator==(const Identifier &x, const Identifier &y)
Comparisons of Identifiers are case-sensitive.
bool operator!=(const Identifier &x, const Identifier &y)
wxString PluginPath
type alias for identifying a Plugin supplied by a module, each module defining its own interpretation...
std::vector< RegistryPath > RegistryPaths
bool operator<=(const Identifier &x, const Identifier &y)
bool wxFromString(const wxString &str, Identifier *id)
This lets you pass Identifier into wxFileConfig::Read.
bool operator>(const Identifier &x, const Identifier &y)
An explicitly nonlocalized string, not meant for the user to see.
Identifier(const Identifier &)=default
void swap(Identifier &id)
Identifier(Identifier &&id)
const wxString & GET() const
Explicit conversion to wxString, meant to be ugly-looking and demanding of a comment why it's correct...
Identifier(const char *str)
Allow implicit conversion to this class, but not from.
Identifier(const wxString &str)
Allow implicit conversion to this class, but not from.
Identifier(const wxChar *str)
Allow implicit conversion to this class, but not from.
Identifier(wxString &&str)
Template generates different TaggedIdentifier classes that don't interconvert implicitly.
TaggedIdentifier(TaggedIdentifier< Tag2, b > &&)=delete
Move prohibited for other Tag classes or case sensitivity.
TaggedIdentifier(const TaggedIdentifier< Tag2, b > &)=delete
Copy prohibited for other Tag classes or case sensitivity.
TaggedIdentifier(const Identifier &str)
String CONVERT() const
Explicit conversion to another kind of TaggedIdentifier.
TaggedIdentifier & operator=(const TaggedIdentifier &)=default
Copy allowed only for the same Tag class and case sensitivity.
TaggedIdentifier()=default
TaggedIdentifier(const TaggedIdentifier &)=default
Copy allowed only for the same Tag class and case sensitivity.
TaggedIdentifier(TaggedIdentifier &&)=default
Move allowed only for the same Tag class and case sensitivity.
Extend wxArrayString with move operations and construction and insertion fromstd::initializer_list.
wxArrayStringEx()=default
void swap(std::unique_ptr< Alg_seq > &a, std::unique_ptr< Alg_seq > &b)