Point Cloud Library (PCL) 1.12.0
ply.h
Go to the documentation of this file.
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Point Cloud Library (PCL) - www.pointclouds.org
5 * Copyright (c) 2007-2012, Ares Lagae
6 * Copyright (c) 2010-2011, Willow Garage, Inc.
7 *
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 *
14 * * Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * * Redistributions in binary form must reproduce the above
17 * copyright notice, this list of conditions and the following
18 * disclaimer in the documentation and/or other materials provided
19 * with the distribution.
20 * * Neither the name of the copyright holder(s) nor the names of its
21 * contributors may be used to endorse or promote products derived
22 * from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 *
37 * $Id$
38 *
39 */
40
41#pragma once
42
44#include <cstdint> // for int8_t, int16_t, ...
45
46/** \file ply.h contains standard typedefs and generic type traits
47 * \author Ares Lagae as part of libply, Nizar Sallem
48 * Ported with agreement from the author under the terms of the BSD
49 * license.
50 * \ingroup io
51 */
52namespace pcl
53{
54 namespace io
55 {
56 namespace ply
57 {
58 using int8 = std::int8_t;
59 using int16 = std::int16_t;
60 using int32 = std::int32_t;
61 using uint8 = std::uint8_t;
62 using uint16 = std::uint16_t;
63 using uint32 = std::uint32_t;
64
65 using float32 = float;
66 using float64 = double;
67
68 template <typename ScalarType>
70
71#ifdef PLY_TYPE_TRAITS
72# error
73#endif
74
75#define PLY_TYPE_TRAITS(TYPE, PARSE_TYPE, NAME, OLD_NAME) \
76 template <> \
77 struct type_traits<TYPE> \
78 { \
79 using type = TYPE; \
80 using parse_type = PARSE_TYPE; \
81 static const char* name () { return NAME; } \
82 static const char* old_name () { return OLD_NAME; } \
83 };
84
85 PLY_TYPE_TRAITS(int8, int16, "int8", "char")
86 PLY_TYPE_TRAITS(int16, int16, "int16", "short")
88 PLY_TYPE_TRAITS(uint8, uint16, "uint8", "uchar")
89 PLY_TYPE_TRAITS(uint16, uint16, "uint16", "ushort")
93
94
95#undef PLY_TYPE_TRAITS
96
97 using format_type = int;
99 } // namespace ply
100 } // namespace io
101} // namespace pcl
defines byte shift operations and endianness.
double float64
Definition: ply.h:66
std::int16_t int16
Definition: ply.h:59
std::int32_t int32
Definition: ply.h:60
int format_type
Definition: ply.h:97
std::uint16_t uint16
Definition: ply.h:62
std::uint8_t uint8
Definition: ply.h:61
@ binary_little_endian_format
Definition: ply.h:98
@ unknown
Definition: ply.h:98
@ ascii_format
Definition: ply.h:98
@ binary_big_endian_format
Definition: ply.h:98
std::int8_t int8
Definition: ply.h:58
float float32
Definition: ply.h:65
std::uint32_t uint32
Definition: ply.h:63
#define PLY_TYPE_TRAITS(TYPE, PARSE_TYPE, NAME, OLD_NAME)
Definition: ply.h:75