1//----------------------------------------------------------------------
2//  This software is part of the Haiku distribution and is covered
3//  by the MIT License.
4//---------------------------------------------------------------------
5/*!
6	\file sniffer/Err.h
7	Mime Sniffer Error class declarations
8*/
9#ifndef _SNIFFER_ERR_H
10#define _SNIFFER_ERR_H
11
12#include <SupportDefs.h>
13#include <string>
14
15namespace BPrivate {
16namespace Storage {
17namespace Sniffer {
18
19//! Exception class used by the MIME Sniffer
20/*! Each exception contains an error message, and an byte offset into
21	the original rule that generated the error, for the sake of
22	providing spiffy error messages of the following sort:
23
24	<code>
25	"1.0 ('abc' & 0xFFAAFFAA)"
26	              ^    Sniffer pattern error: pattern and mask lengths do not match
27	</code>
28*/
29class Err {
30public:
31	Err(const char *msg, const ssize_t pos);
32	Err(const std::string &msg, const ssize_t pos);
33	Err(const Err &ref);
34	virtual ~Err();
35	Err& operator=(const Err &ref);
36
37	status_t SetTo(const char *msg, const ssize_t pos);
38	status_t SetTo(const std::string &msg, const ssize_t pos);
39	void Unset();
40
41	void SetMsg(const char *msg);
42	void SetPos(ssize_t pos);
43
44	const char* Msg() const;
45	ssize_t Pos() const;
46
47private:
48	char *fMsg;
49	ssize_t fPos;
50};
51
52};	// namespace Sniffer
53};	// namespace Storage
54};	// namespace BPrivate
55
56#endif	// _SNIFFER_ERR_H
57
58
59