00001 /* 00002 WRAPPERPTR.hpp - variant record able to hold a pointer to some smart-ptr/wrapper types, providing conversions 00003 00004 Copyright (C) Lumiera.org 00005 2008, Hermann Vosseler <Ichthyostega@web.de> 00006 00007 This program is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU General Public License as 00009 published by the Free Software Foundation; either version 2 of the 00010 License, or (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00020 00021 */ 00022 00023 00024 00025 #ifndef LUMIERA_WRAPPERPTR_H 00026 #define LUMIERA_WRAPPERPTR_H 00027 00028 00029 #include "common/variant.hpp" 00030 #include "common/accesscasted.hpp" 00031 00032 #include "common/meta/typelist.hpp" 00033 #include "proc/mobject/placement.hpp" 00034 #include "common/p.hpp" 00035 00036 00037 namespace asset { class Asset; } 00038 namespace mobject { class MObject; } 00039 00040 namespace lumiera { 00041 00042 00043 typedef typelist::Types < mobject::Placement<mobject::MObject>* 00044 , P<asset::Asset>* 00045 > ::List 00046 WrapperTypes; 00047 00058 typedef lumiera::Variant<WrapperTypes, util::AccessCasted> WrapperPtr; 00059 00060 00061 00062 } // namespace lumiera 00063 #endif
1.5.6