/*
 * tkresolver
 *
 * Copyright (C) 2004-2007 Robert Ham <rah@bash.sh>
 *
 * GPL
 *
 */

#ifndef __TK_MBS_H__
#define __TK_MBS_H__

#include <wchar.h>
#include <stdlib.h>
#include <cstring>
#include <string.h>

#include <glibmm.h>

#include "exceptions.h"

namespace TkResolver {

  wchar_t * mbstowcs_alloc(const char *string);
  char * wcstombs_alloc(const wchar_t * string);
  
  inline Glib::ustring wstring_to_ustring(const std::wstring & wstr)
    {
      char * str = wcstombs_alloc(wstr.c_str());
      Glib::ustring ustr(str);
      free(str);
      return ustr;
    }

  inline std::wstring ustring_to_wstring(const Glib::ustring & ustr)
    {
      wchar_t * str = mbstowcs_alloc(ustr.c_str());
      std::wstring wstr(str);
      free(str);
      return wstr;
    }

  inline std::string wstring_to_string(const std::wstring & wstr)
    {
      char * str = wcstombs_alloc(wstr.c_str());
      std::string sstr(str);
      free(str);
      return sstr;
    }

  inline std::wstring mbs_to_wstring(const char * cstr)
    {
      wchar_t * str = mbstowcs_alloc(cstr);
      std::wstring wstr(str);
      free(str);
      return wstr;
    }
  inline std::wstring string_to_wstring(const std::string & sstr)
    {
      return mbs_to_wstring(sstr.c_str());
    }
  
  
}; /* namespace TkResolver */


#endif /* __TK_MBS_H__ */

