sheet.hpp
Go to the documentation of this file.
00001 /* 00002 Copyright 2005-2007 Adobe Systems Incorporated 00003 Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt 00004 or a copy at http://stlab.adobe.com/licenses.html) 00005 */ 00006 00007 /*************************************************************************************************/ 00008 00009 #ifndef ADOBE_SHEET_HPP 00010 #define ADOBE_SHEET_HPP 00011 00012 /*************************************************************************************************/ 00013 00014 #include <adobe/config.hpp> 00015 00016 /*************************************************************************************************/ 00017 00018 namespace adobe { 00019 00020 /*************************************************************************************************/ 00021 00022 #ifdef ADOBE_CONCEPTS 00023 00024 /*************************************************************************************************/ 00025 00026 auto concept BasicSheetConcept<typename T> {}; 00027 00028 /*************************************************************************************************/ 00029 00030 auto concept SheetConcept<typename T> : BasicSheetConcept<T> 00031 { 00032 void touch(T& t, const name_t*, const name_t*); 00033 }; 00034 00035 /*************************************************************************************************/ 00036 00037 auto concept SheetMFConcept<typename T> : BasicSheetConcept<T> 00038 { 00039 void T::touch(const name_t*, const name_t*); 00040 }; 00041 00042 /*************************************************************************************************/ 00043 00044 template <SheetMFConcept T> 00045 concept_map SheetConcept<T> 00046 { 00047 inline void touch(T& t, const name_t* x, const name_t* y) 00048 { 00049 t.touch(x, y); 00050 } 00051 }; 00052 00053 /*************************************************************************************************/ 00054 00055 template <BasicSheetConcept T> 00056 concept_map BasicSheetConcept<boost::reference_wrapper<T> > {}; 00057 00058 /*************************************************************************************************/ 00059 00060 template <SheetConcept T> 00061 concept_map SheetConcept<boost::reference_wrapper<T> > 00062 { 00063 inline void touch(boost::reference_wrapper<T>& r, const name_t* x, const name_t* y) 00064 { 00065 SheetConcept<T>::touch(static_cast<T&>(r), x, y); 00066 } 00067 }; 00068 00069 /*************************************************************************************************/ 00070 00071 #endif 00072 00073 /*************************************************************************************************/ 00074 00075 } 00076 00077 /*************************************************************************************************/ 00078 00079 #endif |