xref: /haiku/src/kits/storage/sniffer/Err.cpp (revision 51978af14a173e7fae0563b562be5603bc652aeb)
1 //----------------------------------------------------------------------
2 //  This software is part of the OpenBeOS distribution and is covered
3 //  by the OpenBeOS license.
4 //---------------------------------------------------------------------
5 /*!
6 	\file Err.cpp
7 	MIME sniffer Error class implementation
8 */
9 
10 #include <sniffer/Err.h>
11 #include <new>
12 
13 using namespace BPrivate::Storage::Sniffer;
14 
15 //------------------------------------------------------------------------------
16 // Err
17 //------------------------------------------------------------------------------
18 
19 Err::Err(const char *msg, const ssize_t pos)
20 	: fMsg(NULL)
21 	, fPos(-1)
22 {
23 	SetTo(msg, pos);
24 }
25 
26 Err::Err(const std::string &msg, const ssize_t pos)
27 	: fMsg(NULL)
28 	, fPos(-1)
29 {
30 	SetTo(msg, pos);
31 }
32 
33 Err::Err(const Err &ref)
34 	: fMsg(NULL)
35 	, fPos(-1)
36 {
37 	*this = ref;
38 }
39 
40 Err::~Err() {
41 	Unset();
42 }
43 
44 Err&
45 Err::operator=(const Err &ref) {
46 	SetTo(ref.Msg(), ref.Pos());
47 	return *this;
48 }
49 
50 status_t
51 Err::SetTo(const char *msg, const ssize_t pos) {
52 	SetMsg(msg);
53 	SetPos(pos);
54 }
55 
56 status_t
57 Err::SetTo(const std::string &msg, const ssize_t pos) {
58 	SetTo(msg.c_str(), pos);
59 }
60 
61 void
62 Err::Unset() {
63 	delete fMsg;
64 	fMsg = NULL;
65 	fPos = -1;
66 }
67 
68 const char*
69 Err::Msg() const {
70 	return fMsg;
71 }
72 
73 ssize_t
74 Err::Pos() const {
75 	return fPos;
76 }
77 
78 void
79 Err::SetMsg(const char *msg) {
80 	if (fMsg) {
81 		delete fMsg;
82 		fMsg = NULL;
83 	}
84 	if (msg) {
85 		fMsg = new(std::nothrow) char[strlen(msg)+1];
86 		if (fMsg)
87 			strcpy(fMsg, msg);
88 	}
89 }
90 
91 void
92 Err::SetPos(ssize_t pos) {
93 	fPos = pos;
94 }
95 
96 
97 
98