00001 /* 00002 The lestes compiler suite 00003 Copyright (C) 2002, 2003, 2004, 2005 Miroslav Tichy 00004 Copyright (C) 2002, 2003, 2004, 2005 Petr Zika 00005 Copyright (C) 2002, 2003, 2004, 2005 Vojtech Hala 00006 Copyright (C) 2002, 2003, 2004, 2005 Jiri Kosina 00007 Copyright (C) 2002, 2003, 2004, 2005 Pavel Sanda 00008 Copyright (C) 2002, 2003, 2004, 2005 Jan Zouhar 00009 Copyright (C) 2002, 2003, 2004, 2005 Rudolf Thomas 00010 00011 This program is free software; you can redistribute it and/or modify 00012 it under the terms of the GNU General Public License as published by 00013 the Free Software Foundation; version 2 of the License. 00014 00015 This program is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU General Public License for more details. 00019 00020 See the full text of the GNU General Public License version 2, and 00021 the limitations in the file doc/LICENSE. 00022 00023 By accepting the license the licensee waives any and all claims 00024 against the copyright holder(s) related in whole or in part to the 00025 work, its use, and/or the inability to use it. 00026 00027 */ 00028 #ifndef lestes__std___weak_hh___included 00029 #define lestes__std___weak_hh___included 00030 00031 #include <lestes/common.hh> 00032 00033 /*! \file 00034 * \brief Definition for weak pointers. 00035 * 00036 * The idea behind weak pointers is simple. The weak pointers will be linked 00037 * together in a double circular list. Their gc_mark() method will do nothing, 00038 * so as to support for the use of pointer.gc_mark(), in order to retain coherence 00039 * of pointer interface. After the gc_mark phase the list of live weak pointers 00040 * will be updated by mapping a function (gc_base's friend) that will clear the 00041 * internal pointer of each weak pointer that points to an unmarked object. 00042 * The objects themselves will be reclaimed only after this weak pointer update 00043 * phase was completed. 00044 * 00045 * The generator could be extended to handle weak pointers by means of specifying 00046 * the pointer class for each field: 00047 * 00048 * - <field name="..." type="..." pointer-kind="weak" /> 00049 * - <collection name="..." type="..." pointer-kind="weak" /> 00050 * 00051 * As the template weak would have the same interface as ordinary srp or ptr, it 00052 * will not be necessary to modify other parts of the generator, namely neither 00053 * factory method, nor marking routine generation needs to be modified. 00054 */ 00055 package(lestes); 00056 package(std); 00057 00058 template < typename T > class weak { 00059 }; 00060 00061 end_package(std); 00062 end_package(lestes); 00063 00064 #endif 00065 /* vim: set ft=lestes : */
1.5.1-20070107