Point Cloud Library (PCL)
1.7.2
Main Page
Modules
Namespaces
Classes
io
include
pcl
io
io_exception.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2011 Willow Garage, Inc.
5
*
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
*
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* * Redistributions in binary form must reproduce the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer in the documentation and/or other materials provided
17
* with the distribution.
18
* * Neither the name of the copyright holder(s) nor the names of its
19
* contributors may be used to endorse or promote products derived
20
* from this software without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
* POSSIBILITY OF SUCH DAMAGE.
34
*/
35
36
#include <pcl/pcl_config.h>
37
38
#ifndef PCL_IO_EXCEPTION_H_
39
#define PCL_IO_EXCEPTION_H_
40
41
#include <cstdarg>
42
#include <cstdio>
43
#include <exception>
44
#include <string>
45
46
47
//fom <pcl/pcl_macros.h>
48
#if defined _WIN32 && defined _MSC_VER && !defined __PRETTY_FUNCTION__
49
#define __PRETTY_FUNCTION__ __FUNCTION__
50
#endif
51
52
53
#define THROW_IO_EXCEPTION(format,...) throwIOException( __PRETTY_FUNCTION__, __FILE__, __LINE__, format , ##__VA_ARGS__ )
54
55
56
namespace
pcl
57
{
58
namespace
io
59
{
60
/**
61
* @brief General IO exception class
62
*/
63
class
IOException
:
public
std::exception
64
{
65
public
:
66
IOException
(
const
std::string& function_name,
67
const
std::string& file_name,
68
unsigned
line_number,
69
const
std::string& message);
70
71
virtual
~IOException
()
throw
();
72
73
IOException
&
74
operator=
(
const
IOException
& exception);
75
76
virtual
const
char
*
77
what
()
const
throw
();
78
79
const
std::string&
80
getFunctionName
()
const
;
81
82
const
std::string&
83
getFileName
()
const
;
84
85
unsigned
86
getLineNumber
()
const
;
87
88
protected
:
89
std::string
function_name_
;
90
std::string
file_name_
;
91
unsigned
line_number_
;
92
std::string
message_
;
93
std::string
message_long_
;
94
};
95
96
inline
void
97
throwIOException
(
const
char
*
function
,
const
char
* file,
unsigned
line,
const
char
* format, ...)
98
{
99
static
char
msg[1024];
100
va_list args;
101
va_start (args, format);
102
vsnprintf (msg, 1024, format, args);
103
throw
IOException
(
function
, file, line, msg);
104
}
105
}
// namespace
106
}
107
#endif // PCL_IO_EXCEPTION_H_