Example:
PREDICATE(test, 1)
{ PlAtom a1(A1);
  if ( a1 == "read" )
    ...;
}
This approach extracts the atom once and for each test extracts the 
represented string from the atom and compares it. It avoids the need for 
global atom constructors.
- PlAtom :: PlAtom(atom_t handle)
- Create from C-interface atom handle (atom_t). Used 
internally and for integration with the C-interface.
- PlAtom :: PlAtom(const char_t *text)
- PlAtom :: PlAtom(const wchar *text)
- PlAtom :: PlAtom(const std::string& text)
- PlAtom :: PlAtom(const std::wstring& text)
- Create an atom from a string. The text is copied if a new 
atom is created. See PL_new_atom(), PL_new_atom_wchars(),
PL_new_atom_nchars(), PL_new_atom_wchars().
- PlAtom :: PlAtom(const PlTerm &)
- If t represents an atom, the new instance represents this 
atom. Otherwise a type_erroris thrown.
- int PlAtom::operator 
==(const wchar_t *text)
- int PlAtom::operator 
==(const char *text)
- int PlAtom::operator 
==(const std::string& text)
- int PlAtom::operator 
==(const std::wstring& text)
- Yields trueif the atom represents text,falseotherwise. Performs a strcmp() or similar for this.
- int PlAtom::operator 
==(const PlAtom &)
- Compares the two atom-handles, returning trueorfalse. Because atoms are unique, there is no need to use strcmp() 
for this.
- int PlAtom::operator 
!=(const wchar_t *text)
- int PlAtom::operator 
!=(const char *text)
- int PlAtom::operator 
!=(const std::string& text)
- int PlAtom::operator 
!=(const std::wstring& text)
- int PlAtom::operator 
!=(const PlAtom &)
- The inverse of the ==
- bool is_valid()
- Verifies that the handle is valid. This can be used after calling a 
function that returns an atom handle, to check that a new atom was 
created.
- void reset()
- Sets the handle to an invalid valid - a subsequent call to is_null() 
will return true.
- const std::string as_string(PlEncoding 
enc=EncLocale)
- Returns the string representation of the atom.28If 
you wish to return a char*from a function, you should not 
doreturn t.as_string().c_str()because that will return a pointer into the stack (Gnu C++ or Clang 
options-Wreturn-stack-addressor-Wreturn-local-addr) 
can sometimes catch this, as can the runtime address sanitizer 
when run withdetect_stack_use_after_return=1. 
This does not quote or escape any characters that would need to be 
escaped if the atom were to be input to the Prolog parser. The possible 
values forencare:
- EncLatin1- throws an exception if cannot be 
represented in ASCII.
- EncUTF8
- EncLocale- uses the locale to determine the 
representation.
 
- const std:wstring as_wstring()
- Returns the string representation of the atom. This does not quote or 
escape any characters that would need to be escaped if the atom were to 
be input to the Prolog parser.
- void register_atom()
- See PL_register_atom().
- void unregister_atom()
- See PL_unregister_atom().
- void* blob_data(size_t 
*len, struct PL_blob_t **type)
- See PL_blob_data().