Alembic: Util/OperatorBool.h Source File

Alembic 1.8.11

Loading...
Searching...
No Matches
OperatorBool.h
1//-*****************************************************************************
2//
3// Copyright (c) 2009-2011,
4// Sony Pictures Imageworks Inc. and
5// Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
6//
7// All rights reserved.
8//
9// Redistribution and use in source and binary forms, with or without
10// modification, are permitted provided that the following conditions are
11// met:
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 disclaimer
16// in the documentation and/or other materials provided with the
17// distribution.
18// * Neither the name of Industrial Light & Magic nor the names of
19// its 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 FOR
25// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33//
34//-*****************************************************************************
35
36#ifndef Alembic_Util_OperatorBool_h
37#define Alembic_Util_OperatorBool_h
38
39#include <Alembic/Util/Foundation.h>
40
41//-*****************************************************************************
42#define ALEMBIC_OPERATOR_BOOL( PASS_COND ) \
43void __unspecified_bool_type_fcn() const {} \
44typedef void (this_type::*unspecified_bool_type)() const; \
45operator unspecified_bool_type() const \
46{ \
47 return ( PASS_COND ) ? &this_type::__unspecified_bool_type_fcn : 0; \
48} \
49bool operator! () const \
50{ \
51 return !( PASS_COND ); \
52}
53
54
55//-*****************************************************************************
56#define ALEMBIC_OVERRIDE_OPERATOR_BOOL( PASS_COND ) \
57operator unspecified_bool_type() const \
58{ \
59 return ( PASS_COND ) ? \
60 &operator_bool_base_type::__unspecified_bool_type_fcn : 0; \
61} \
62bool operator! () const \
63{ \
64 return !( PASS_COND ); \
65}
66
67
68#endif
69