// -*- mode: C++ -*-
#ifndef MiX_XMLSTRING_H_
#define MiX_XMLSTRING_H_

// Adlib/XMLString.h
// (C) Copyright KUBO,Yotaro.
// [バージョン履歴]
// 0.4.7
//   - 前バージョンのテンプレートパラメータの改悪を元に戻す
//   - IncludeGuardマクロ名の変更

#include <string>
#include <iostream>

#include "config.h"

namespace MiX{

  template <class charT,class char_traits,class xml_traits> 
  class XMLString
    : public std::basic_string<charT,char_traits>{
    typedef std::basic_string<charT,char_traits> super_type;
    typedef XMLString<charT,char_traits,xml_traits> this_type;
  public:
    ///コンストラクタ
    explicit XMLString() : super_type() { };
    ///コピーコンストラクタ
    XMLString(const this_type& str) : super_type(str){ };
    ///コンストラクタ
    XMLString(const charT* s,size_t n) : super_type(s,n){ };
    ///コンストラクタ
    XMLString(const charT* s) : super_type(s){ };
    ///コンストラクタ
    XMLString(size_t n, char c) : super_type(n,c){ };
    ///コンストラクタ
    XMLString(const super_type& src) : super_type(src){ };
  };
  /// インサータ
  template <class charT,class char_traits,class xml_traits>
  std::ostream& operator<<(std::ostream& os,const XMLString<charT,char_traits,xml_traits>& src) {
    os << src.c_str() ;  return os;
  }
}


#endif
