ViSP  2.9.0
vpException.cpp
1 /****************************************************************************
2  *
3  * $Id: vpException.cpp 4649 2014-02-07 14:57:11Z fspindle $
4  *
5  * This file is part of the ViSP software.
6  * Copyright (C) 2005 - 2014 by INRIA. All rights reserved.
7  *
8  * This software is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * ("GPL") version 2 as published by the Free Software Foundation.
11  * See the file LICENSE.txt at the root directory of this source
12  * distribution for additional information about the GNU GPL.
13  *
14  * For using ViSP with software that can not be combined with the GNU
15  * GPL, please contact INRIA about acquiring a ViSP Professional
16  * Edition License.
17  *
18  * See http://www.irisa.fr/lagadic/visp/visp.html for more information.
19  *
20  * This software was developed at:
21  * INRIA Rennes - Bretagne Atlantique
22  * Campus Universitaire de Beaulieu
23  * 35042 Rennes Cedex
24  * France
25  * http://www.irisa.fr/lagadic
26  *
27  * If you have questions regarding the use of this file, please contact
28  * INRIA at visp@inria.fr
29  *
30  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
31  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
32  *
33  *
34  * Description:
35  * Exception handling.
36  *
37  * Authors:
38  * Nicolas Mansard
39  *
40  *****************************************************************************/
41 
42 
43 /* \file vpException.cpp
44  \brief error that can be emited by the vp class and its derivates
45  */
46 
47 #include <stdio.h>
48 #include "visp/vpException.h"
49 
50 
51 /* ------------------------------------------------------------------------- */
52 /* --- CONSTRUCTORS -------------------------------------------------------- */
53 /* ------------------------------------------------------------------------- */
55  : code (id), message ()
56 {
57 }
58 
59 vpException::vpException (int id, const std::string & msg)
60  : code (id), message (msg)
61 {
62 }
63 
64 vpException::vpException (int id, const char* format, ...)
65  : code (id), message ()
66 {
67  va_list args;
68  va_start(args, format);
69  setMessage(format, args);
70  va_end (args);
71 }
72 
73 vpException::vpException (const int id, const char* format, va_list args)
74  : code (id), message ()
75 {
76  setMessage(format, args);
77 }
78 /* ------------------------------------------------------------------------ */
79 /* --- DESTRUCTORS -------------------------------------------------------- */
80 /* ------------------------------------------------------------------------ */
81 
82 /* Destructeur par default suffisant. */
83 // vpException::
84 // ~vpException (void)
85 // {
86 // }
87 
88 
89 void vpException::setMessage(const char* format, va_list args)
90 {
91  char buffer[1024];
92  vsnprintf (buffer, 1024, format, args);
93  std::string msg(buffer);
94  message = msg;
95 }
96 
97 /* ------------------------------------------------------------------------ */
98 /* --- ACCESSORS ---------------------------------------------------------- */
99 /* ------------------------------------------------------------------------ */
100 
101 const char *vpException::getMessage (void)
102 {
103  return (this->message) .c_str();
104 }
105 
106 const std::string &vpException::getStringMessage (void)
107 {
108  return this->message;
109 }
110 
111 int
113 {
114  return this->code;
115 }
116 
123 const char* vpException::what () const throw()
124 {
125  return (this->message) .c_str();
126 }
127 
128 
129 /* ------------------------------------------------------------------------- */
130 /* --- MODIFIORS ----------------------------------------------------------- */
131 /* ------------------------------------------------------------------------- */
132 
133 /* ------------------------------------------------------------------------- */
134 /* --- OP << --------------------------------------------------------------- */
135 /* ------------------------------------------------------------------------- */
136 
137 VISP_EXPORT std::ostream &
138 operator << (std::ostream & os, const vpException & error)
139 {
140  os << "Error [" << error.code << "]:\t" << error.message << std::endl;
141 
142  return os;
143 }
144 
145 
146 /*
147  * Local variables:
148  * c-basic-offset: 2
149  * End:
150  */
const char * getMessage(void)
int getCode(void)
send the object code
error that can be emited by ViSP classes.
Definition: vpException.h:76
const char * what() const
const std::string & getStringMessage(void)
send a reference (constant) related the error message (can be empty)
void setMessage(const char *format, va_list args)
Set the message container.
Definition: vpException.cpp:89
std::string message
Contains an error message (can be empty)
Definition: vpException.h:84
int code
Contains the error code, see the errorCodeEnum table for details.
Definition: vpException.h:81
vpException()
forbid the empty constructor (protected)
Definition: vpException.h:90