#pragma once

namespace nlite{

	//グローバル変数
	extern const CApplicationInfo * appInfo;
	extern CListenerList listenerList;
	extern speaker::ISpeaker &g_speaker;
	extern TCHAR localAppDataPath[];
	extern TCHAR appFolderPath[];
	extern CString ncvAppSettingPath;

	//グローバル関数
	extern VOID UnexpectedErrorMessageShow(LPCTSTR headMessage,LPCTSTR summary,UINT line,LPCTSTR fileName,LPCTSTR function);
	
	extern HINSTANCE OpenURL(HWND hwnd,const GeneralProperty &gp,LPCTSTR url ,INT nShowCommand);

	///
	///指定されたディレクトリにファイルまたはディレクトリを作成
	///途中のディレクトリが存在しない場合、ディレクトリを自動的に作成する
	///
	extern BOOL SurelyCreate(LPCTSTR dir,BOOL bFile);


	///
	///ncvのリスナー情報ファイルパスを取得
	///
	extern CString GetNCVListenerInfoFilePath();



	//正規表現名前空間
	namespace nliteregex{
		typedef std::tr1::basic_regex<TCHAR> tregex;
		namespace text{
			extern const  CString URL_TEXT;					//URL正規表現文字列
			extern const  CString TAG_TEXT;					//タグ正規表現文字列
			extern const  CString VIDEOID_TEXT;				//動画番号正規表現文字列
			extern const  CString LIVEID_TEXT;				//生放送番号正規表現文字列
			extern const  CString LINK_TEXT;				//リンク表示対象の正規表現文字列
			extern const  CString SEARTCH_AT_MARK;			//コテハン登録用の@を検索する正規表現文字列
			extern const  tstring NUTHINGSTRING;			//空の文字列
		}
		extern const  tregex URL;							//URL正規表現
		extern const  tregex TAGSTRING;						//タグ正規表現
		extern const  tregex VIDEOID;						//動画番号正規表現
		extern const  tregex LIVEID;						//生放送番号正規表現
		extern const  tregex LILNKREGEX;					//リンク表示対象検索用正規表現
		extern const  tregex NAMESERTCHREGEX;				//コテハン登録文字列検索用正規表現
	}

}