/*
  string.icc -- implement String inlines

  source file of the Flower Library

  (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/

#ifndef STRING_ICC
#define STRING_ICC

namespace std {

  bool operator == (String const&, String const&);
  bool operator != (String const&, String const&);
  
INLINE
char const *
String::c_str () const
{
  return strh_.c_str ();
}

// because char const* also has an operator ==, this is for safety:
INLINE
bool
operator == (String s1, char const *s2)
{
  return s1 == String (s2);
}

INLINE
bool
operator == (char const *s1, String s2)
{
  return String (s1) == s2;
}

INLINE
bool
operator != (String s1, char const *s2)
{
  return s1 != String (s2);
}

INLINE
bool
operator != (char const *s1, String s2)
{
  return String (s2) != s1;
}

INLINE
char &
String::operator [] (int n)
{
  return (char &) strh_[n];
}

INLINE
char
String::operator [] (int n) const
{
  return strh_[n];
}

INLINE
String::String ()
{
}

INLINE
String::String (char const *source)
{
  assert (source);
  strh_ = source;
}

}

#endif /* STRING_ICC */
