root/OpenSceneGraph/trunk/src/osgPlugins/ply/typedefs.h @ 10040

Revision 10040, 2.6 kB (checked in by robert, 5 years ago)

From Santosh Gaikwad, "I have added the exception handling in ply loader. All exceptions I am catching in VertexData::readPlyFile() and made sure that application will not crash or exit if any exception occurred. I am returning NULL from VertexData::readPlyFile() if any exception occurred.
"

RevLine 
[10012]1/* 
2    typedefs.h
3    Copyright (c) 2007, Tobias Wolf <twolf@access.unizh.ch>
4    All rights reserved. 
5   
6    Type definitions for the mesh classes.
7*/
8
9/** note, derived from Equalizer LGPL source.*/
10
11
12#ifndef MESH_TYPEDEFS_H
13#define MESH_TYPEDEFS_H
14
15#   ifdef WIN32
16#      include <Winsock2.h>
17#      include <Windows.h>
18#   endif
19
20#   include <osg/Notify>
21#    include <cassert>
[10040]22
23#ifdef NDEBUG
24#   define MESHASSERT( x )
25#else
26#    define MESHASSERT(x) { if( !(x) )                                      \
27              osg::notify(osg::WARN) << "Ply Loader ##### Assert: " << #x << " #####" << std::endl; }
28#endif
29
[10012]30#   define MESHERROR   osg::notify(osg::WARN)
31#   define MESHWARN    osg::notify(osg::WARN)
32#   define MESHINFO    osg::notify(osg::INFO)
33
34#ifdef WIN32
35typedef int        socklen_t;
36
37typedef UINT64     uint64_t;
38typedef INT64      int64_t;
39typedef UINT32     uint32_t;
40typedef INT32      int32_t;
41typedef UINT16     uint16_t;
42typedef UINT8      uint8_t;
43#    ifndef HAVE_SSIZE_T
44typedef SSIZE_T    ssize_t;
45#    endif
46
47#endif // Win32
48
49#include <exception>
50#include <iostream>
51#include <string>
52
53namespace ply
54{
55   
56   
57
58    typedef size_t                      Index;
59//    typedef unsigned short            ShortIndex;
60   
61   
62    // mesh exception
63    struct MeshException : public std::exception
64    {
65        explicit MeshException( const std::string& msg ) : _message( msg ) {}
66        virtual ~MeshException() throw() {}
67        virtual const char* what() const throw() { return _message.c_str(); }
68    private:
69        std::string _message;
70    };
71   
72    // null output stream that discards everything written to it
73    struct NullOStream : std::ostream
74    {
75        struct NullStreamBuf : std::streambuf
76        {
77            int overflow( int c ) { return traits_type::not_eof( c ); }
78        } _nullBuf;
79       
80        NullOStream() : std::ios( &_nullBuf ), std::ostream( &_nullBuf ) {}
81    };
82   
83    // wrapper to enable array use where arrays would not be allowed otherwise
84    template< class T, size_t d >
85    struct ArrayWrapper
86    {
87        T& operator[]( const size_t i )
88        {
89            MESHASSERT( i < d );
90            return data[i];
91        }
92       
93        const T& operator[]( const size_t i ) const
94        {
95            MESHASSERT( i < d );
96            return data[i];
97        }
98       
99    private:
100        T data[d];
101    };
102   
103   
104    // binary mesh file version, increment if changing the file format
105    const unsigned short    FILE_VERSION ( 0x0114 );
106   
107   
108    // enumeration for the sort axis
109    enum Axis
110    {
111        AXIS_X,
112        AXIS_Y,
113        AXIS_Z
114    };
115
116}
117
118
119#endif // MESH_TYPEDEFS_H
Note: See TracBrowser for help on using the browser.