Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
Classes | Namespaces | Macros | Functions
api.h File Reference
#include "context.h"
#include "core/extension.h"
#include "device.h"
#include <type_traits>
#include <iostream>

Go to the source code of this file.

Classes

struct  rs2_raw_data_buffer
 
struct  rs2_error
 
struct  rs2_notification
 
struct  rs2_device
 
struct  librealsense::arg_streamer< T, S >
 
class  librealsense::is_streamable< T >
 
struct  librealsense::arg_streamer< T *, true >
 
struct  librealsense::arg_streamer< T *, false >
 

Namespaces

 librealsense
 

Macros

#define BEGIN_API_CALL   try
 
#define NOEXCEPT_RETURN(R, ...)   catch(...) { std::ostringstream ss; librealsense::stream_args(ss, #__VA_ARGS__, __VA_ARGS__); rs2_error* e; librealsense::translate_exception(__FUNCTION__, ss.str(), &e); LOG_WARNING(rs2_get_error_message(e)); rs2_free_error(e); return R; }
 
#define HANDLE_EXCEPTIONS_AND_RETURN(R, ...)   catch(...) { std::ostringstream ss; librealsense::stream_args(ss, #__VA_ARGS__, __VA_ARGS__); librealsense::translate_exception(__FUNCTION__, ss.str(), error); return R; }
 
#define NOARGS_HANDLE_EXCEPTIONS_AND_RETURN(R)   catch(...) { librealsense::translate_exception(__FUNCTION__, "", error); return R; }
 
#define VALIDATE_NOT_NULL(ARG)   if(!(ARG)) throw std::runtime_error("null pointer passed for argument \"" #ARG "\"");
 
#define VALIDATE_ENUM(ARG)   if(!librealsense::is_valid(ARG)) { std::ostringstream ss; ss << "invalid enum value for argument \"" #ARG "\""; throw librealsense::invalid_value_exception(ss.str()); }
 
#define VALIDATE_RANGE(ARG, MIN, MAX)   if((ARG) < (MIN) || (ARG) > (MAX)) { std::ostringstream ss; ss << "out of range value for argument \"" #ARG "\""; throw librealsense::invalid_value_exception(ss.str()); }
 
#define VALIDATE_LE(ARG, MAX)   if((ARG) > (MAX)) { std::ostringstream ss; ss << "out of range value for argument \"" #ARG "\""; throw std::runtime_error(ss.str()); }
 
#define VALIDATE_INTERFACE_NO_THROW(X, T)
 
#define VALIDATE_INTERFACE(X, T)
 

Functions

template<class T >
void librealsense::stream_args (std::ostream &out, const char *names, const T &last)
 
template<class T , class... U>
void librealsense::stream_args (std::ostream &out, const char *names, const T &first, const U &... rest)
 

Macro Definition Documentation

§ BEGIN_API_CALL

#define BEGIN_API_CALL   try

§ HANDLE_EXCEPTIONS_AND_RETURN

#define HANDLE_EXCEPTIONS_AND_RETURN (   R,
  ... 
)    catch(...) { std::ostringstream ss; librealsense::stream_args(ss, #__VA_ARGS__, __VA_ARGS__); librealsense::translate_exception(__FUNCTION__, ss.str(), error); return R; }

§ NOARGS_HANDLE_EXCEPTIONS_AND_RETURN

#define NOARGS_HANDLE_EXCEPTIONS_AND_RETURN (   R)    catch(...) { librealsense::translate_exception(__FUNCTION__, "", error); return R; }

§ NOEXCEPT_RETURN

#define NOEXCEPT_RETURN (   R,
  ... 
)    catch(...) { std::ostringstream ss; librealsense::stream_args(ss, #__VA_ARGS__, __VA_ARGS__); rs2_error* e; librealsense::translate_exception(__FUNCTION__, ss.str(), &e); LOG_WARNING(rs2_get_error_message(e)); rs2_free_error(e); return R; }

§ VALIDATE_ENUM

#define VALIDATE_ENUM (   ARG)    if(!librealsense::is_valid(ARG)) { std::ostringstream ss; ss << "invalid enum value for argument \"" #ARG "\""; throw librealsense::invalid_value_exception(ss.str()); }

§ VALIDATE_INTERFACE

#define VALIDATE_INTERFACE (   X,
 
)
Value:
([&]() -> T* { \
if(p == nullptr) \
throw std::runtime_error("Object does not support \"" #T "\" interface! " ); \
return p; \
})()
#define VALIDATE_INTERFACE_NO_THROW(X, T)
Definition: api.h:411

§ VALIDATE_INTERFACE_NO_THROW

#define VALIDATE_INTERFACE_NO_THROW (   X,
 
)
Value:
([&]() -> T* { \
T* p = dynamic_cast<T*>(&(*X)); \
if (p == nullptr) \
{ \
auto ext = dynamic_cast<librealsense::extendable_interface*>(&(*X)); \
if (ext == nullptr) return nullptr; \
else \
{ \
if(!ext->extend_to(TypeToExtension<T>::value, (void**)&p)) \
return nullptr; \
return p; \
} \
} \
return p; \
})()
Definition: extension.h:112
Definition: extension.h:22

§ VALIDATE_LE

#define VALIDATE_LE (   ARG,
  MAX 
)    if((ARG) > (MAX)) { std::ostringstream ss; ss << "out of range value for argument \"" #ARG "\""; throw std::runtime_error(ss.str()); }

§ VALIDATE_NOT_NULL

#define VALIDATE_NOT_NULL (   ARG)    if(!(ARG)) throw std::runtime_error("null pointer passed for argument \"" #ARG "\"");

§ VALIDATE_RANGE

#define VALIDATE_RANGE (   ARG,
  MIN,
  MAX 
)    if((ARG) < (MIN) || (ARG) > (MAX)) { std::ostringstream ss; ss << "out of range value for argument \"" #ARG "\""; throw librealsense::invalid_value_exception(ss.str()); }