/**
 * \file BGDNetPath.h
 * \brief Объявление класса Path
 */

#ifndef __BGDNetPath_h__
#define __BGDNetPath_h__

#include "BGDNetConfig.h"

#include <nwapidef.h>
#include "BGDNetException.h"
#include "BGDNetString.h"

namespace BGDNet
{

/**
 * \class Path
 * \brief Класс "Путь"
 *
 * Полный путь может содержать имя сервера, имя тома, имена каталогов
 * и имя файла. Класс Path облегчает работу с компонентами полного пути.
 */
class BGDNET_API Path : public String
{
public:

  Path( void );
  /**<
   * \brief Конструктор по умолчанию.
   */

  Path( const String& fullPath, nuint8 nameSpc );
  /**<
   * \brief Конструктор
   * @param fullPath Ссылка на строку, содержащую полный путь.
   * @param nameSpc Идентификатор пространства имен, в котором задан путь.
   */

  Path( const Path& p );
  /**<
   * \brief Инициализатор копии.
   */

  Path& operator =( const Path& p );
  /**<
   * \brief Оператор присваивания.
   */

  nuint8 ns( void ) const;
  /**<
   * \brief Возвращает идентификатор пространства имет, к которому
   * относится путь.
   */

  String srv( void ) const;
  /**<
   * \brief Доступ к имени сервера
   * @return Строка, содержащая имя сервера.
   */

  String vol( void ) const;
  /**<
   * \brief Доступ к имени тома
   * @return Строка, содержащая имя тома.
   */

  String path( void ) const;
  /**<
   * \brief Доступ к полному пути к файлу или каталогу
   * @return Строка, содержащая полный путь к файлу или каталогу.
   */

  String name( void ) const
    throw(Exception);
  /**<
   * \brief Доступ к имени файла или каталога
   * @return Строка, содержащая имя файла или каталога.
   */

  String dir( void ) const
    throw(Exception);
  /**<
   * \brief Доступ к имени каталога, содержащего элемент, на который
   * указывает полный путь.
   * @return Строка, содержащая имя каталога, содержащего элемент, на который
   * указывает полный путь.
   */

private:

  nuint8 m_nameSpc;
  /**<
   * \brief Идентификатор пространства имен, к которому относится путь.
   */
};

} // namespace BGDNet

#endif //__BGDNetPath_h__
