1
2//
3// This source file is part of appleseed.
4// Visit http://appleseedhq.net/ for additional information and resources.
5//
6// This software is released under the MIT license.
7//
8// Copyright (c) 2012-2013 Esteban Tovagliari, Jupiter Jazz Limited
9// Copyright (c) 2014-2017 Esteban Tovagliari, The appleseedhq Organization
10//
11// Permission is hereby granted, free of charge, to any person obtaining a copy
12// of this software and associated documentation files (the "Software"), to deal
13// in the Software without restriction, including without limitation the rights
14// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15// copies of the Software, and to permit persons to whom the Software is
16// furnished to do so, subject to the following conditions:
17//
18// The above copyright notice and this permission notice shall be included in
19// all copies or substantial portions of the Software.
20//
21// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27// THE SOFTWARE.
28//
29
30#ifndef APPLESEED_PYTHON_PYSEED_H
31#define APPLESEED_PYTHON_PYSEED_H
32
33#if defined _MSC_VER
34 // C4244: conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
35 __pragma(warning(push)) \
36 __pragma(warning(disable: 4244))
37#endif
38
39// Boost headers.
40#include "boost/python/detail/wrap_python.hpp" // has to be first, to avoid redefinition warnings
41#include "boost/python.hpp"
42
43// appleseed.foundation headers.
44#include "foundation/utility/autoreleaseptr.h"
45
46namespace boost {
47namespace python {
48
49template <typename T>
50struct pointee<foundation::auto_release_ptr<T> >
51{
52 typedef T type;
53};
54
55} // namespace python
56} // namespace boost
57
58namespace foundation
59{
60
61template <typename T>
62T* get_pointer(const auto_release_ptr<T>& p)
63{
64 return p.get();
65}
66
67} // namespace foundation
68
69#if defined _MSC_VER
70 __pragma(warning(pop))
71#endif
72
73#endif // !APPLESEED_PYTHON_PYSEED_H
74