00001 /* 00002 // $Id: //open/dev/fennel/common/SharedTypes.h#31 $ 00003 // Fennel is a library of data storage and processing components. 00004 // Copyright (C) 2005-2009 The Eigenbase Project 00005 // Copyright (C) 2003-2009 SQLstream, Inc. 00006 // Copyright (C) 2005-2009 LucidEra, Inc. 00007 // Portions Copyright (C) 1999-2009 John V. Sichi 00008 // 00009 // This program is free software; you can redistribute it and/or modify it 00010 // under the terms of the GNU General Public License as published by the Free 00011 // Software Foundation; either version 2 of the License, or (at your option) 00012 // any later version approved by The Eigenbase Project. 00013 // 00014 // This program is distributed in the hope that it will be useful, 00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 // GNU General Public License for more details. 00018 // 00019 // You should have received a copy of the GNU General Public License 00020 // along with this program; if not, write to the Free Software 00021 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00022 */ 00023 00024 #ifndef Fennel_SharedTypes_Included 00025 #define Fennel_SharedTypes_Included 00026 00027 #include <boost/shared_ptr.hpp> 00028 #include <boost/weak_ptr.hpp> 00029 00030 FENNEL_BEGIN_NAMESPACE 00031 00032 // shared_ptr declarations to ease usage of handle/body pattern 00033 00034 class RandomAccessDevice; 00035 typedef boost::shared_ptr<RandomAccessDevice> SharedRandomAccessDevice; 00036 00037 class Cache; 00038 typedef boost::shared_ptr<Cache> SharedCache; 00039 00040 class CacheAccessor; 00041 typedef boost::shared_ptr<CacheAccessor> SharedCacheAccessor; 00042 00043 class Segment; 00044 typedef boost::shared_ptr<Segment> SharedSegment; 00045 typedef boost::weak_ptr<Segment> WeakSegment; 00046 00047 class SegmentAccessor; 00048 typedef boost::shared_ptr<SegmentAccessor> SharedSegmentAccessor; 00049 00050 class SegmentFactory; 00051 typedef boost::shared_ptr<SegmentFactory> SharedSegmentFactory; 00052 00053 class SegmentMap; 00054 typedef boost::shared_ptr<SegmentMap> SharedSegmentMap; 00055 00056 class ByteOutputStream; 00057 typedef boost::shared_ptr<ByteOutputStream> SharedByteOutputStream; 00058 00059 class ByteInputStream; 00060 typedef boost::shared_ptr<ByteInputStream> SharedByteInputStream; 00061 00062 class ByteStreamMarker; 00063 typedef boost::shared_ptr<ByteStreamMarker> SharedByteStreamMarker; 00064 00065 class ByteArrayOutputStream; 00066 typedef boost::shared_ptr<ByteArrayOutputStream> SharedByteArrayOutputStream; 00067 00068 class ByteArrayInputStream; 00069 typedef boost::shared_ptr<ByteArrayInputStream> SharedByteArrayInputStream; 00070 00071 class SegPageBackupRestoreDevice; 00072 typedef boost::shared_ptr<SegPageBackupRestoreDevice> 00073 SharedSegPageBackupRestoreDevice; 00074 typedef boost::weak_ptr<SegPageBackupRestoreDevice> 00075 WeakSegPageBackupRestoreDevice; 00076 00077 class StatsSource; 00078 typedef boost::shared_ptr<StatsSource> SharedStatsSource; 00079 00080 class StatsTarget; 00081 typedef boost::shared_ptr<StatsTarget> SharedStatsTarget; 00082 00083 class SegOutputStream; 00084 typedef boost::shared_ptr<SegOutputStream> SharedSegOutputStream; 00085 00086 class SegInputStream; 00087 typedef boost::shared_ptr<SegInputStream> SharedSegInputStream; 00088 00089 class SegStreamAllocation; 00090 typedef boost::shared_ptr<SegStreamAllocation> SharedSegStreamAllocation; 00091 00092 class SpillOutputStream; 00093 typedef boost::shared_ptr<SpillOutputStream> SharedSpillOutputStream; 00094 00095 class CheckpointProvider; 00096 typedef boost::shared_ptr<CheckpointProvider> SharedCheckpointProvider; 00097 00098 class LogicalTxn; 00099 typedef boost::shared_ptr<LogicalTxn> SharedLogicalTxn; 00100 00101 class LogicalTxnLog; 00102 typedef boost::shared_ptr<LogicalTxnLog> SharedLogicalTxnLog; 00103 00104 class LogicalRecoveryLog; 00105 typedef boost::shared_ptr<LogicalRecoveryLog> SharedLogicalRecoveryLog; 00106 00107 class LogicalTxnParticipant; 00108 typedef boost::shared_ptr<LogicalTxnParticipant> SharedLogicalTxnParticipant; 00109 00110 class BTreeAccessBase; 00111 typedef boost::shared_ptr<BTreeAccessBase> SharedBTreeAccessBase; 00112 00113 class BTreeReader; 00114 typedef boost::shared_ptr<BTreeReader> SharedBTreeReader; 00115 00116 class BTreeNonLeafReader; 00117 typedef boost::shared_ptr<BTreeNonLeafReader> SharedBTreeNonLeafReader; 00118 00119 class BTreeLeafReader; 00120 typedef boost::shared_ptr<BTreeLeafReader> SharedBTreeLeafReader; 00121 00122 class BTreeWriter; 00123 typedef boost::shared_ptr<BTreeWriter> SharedBTreeWriter; 00124 00125 class BTreeVerifier; 00126 typedef boost::shared_ptr<BTreeVerifier> SharedBTreeVerifier; 00127 00128 class BTreeBuilder; 00129 typedef boost::shared_ptr<BTreeBuilder> SharedBTreeBuilder; 00130 00131 class BTreeRecoveryFactory; 00132 typedef boost::shared_ptr<BTreeRecoveryFactory> SharedBTreeRecoveryFactory; 00133 00134 class Database; 00135 typedef boost::shared_ptr<Database> SharedDatabase; 00136 00137 class PseudoUuidGenerator; 00138 typedef boost::shared_ptr<PseudoUuidGenerator> SharedPseudoUuidGenerator; 00139 00140 class TraceTarget; 00141 typedef boost::shared_ptr<TraceTarget> SharedTraceTarget; 00142 00143 class ErrorTarget; 00144 typedef boost::shared_ptr<ErrorTarget> SharedErrorTarget; 00145 00146 class CheckpointThread; 00147 typedef boost::shared_ptr<CheckpointThread> SharedCheckpointThread; 00148 00149 class ExecStream; 00150 typedef boost::shared_ptr<ExecStream> SharedExecStream; 00151 00152 class ExecStreamEmbryo; 00153 typedef boost::shared_ptr<ExecStreamEmbryo> SharedExecStreamEmbryo; 00154 00155 class ExecStreamBufAccessor; 00156 typedef boost::shared_ptr<ExecStreamBufAccessor> SharedExecStreamBufAccessor; 00157 00158 class ExecStreamScheduler; 00159 typedef boost::shared_ptr<ExecStreamScheduler> SharedExecStreamScheduler; 00160 00161 class ExecStreamParams; 00162 typedef boost::shared_ptr<ExecStreamParams> SharedExecStreamParams; 00163 00164 class ExecStreamGraph; 00165 typedef boost::shared_ptr<ExecStreamGraph> SharedExecStreamGraph; 00166 00167 class ExecStreamGraphEmbryo; 00168 typedef boost::shared_ptr<ExecStreamGraphEmbryo> SharedExecStreamGraphEmbryo; 00169 00170 class ExecStreamFactory; 00171 typedef boost::shared_ptr<ExecStreamFactory> SharedExecStreamFactory; 00172 00173 class ExecStreamSubFactory; 00174 typedef boost::shared_ptr<ExecStreamSubFactory> SharedExecStreamSubFactory; 00175 00176 class ExecStreamResourceQuantity; 00177 typedef boost::shared_ptr<ExecStreamResourceQuantity> 00178 SharedExecStreamResourceQuantity; 00179 00180 class ExecStreamGovernor; 00181 typedef boost::shared_ptr<ExecStreamGovernor> SharedExecStreamGovernor; 00182 00183 class FtrsTableWriter; 00184 typedef boost::shared_ptr<FtrsTableWriter> SharedFtrsTableWriter; 00185 00186 class FtrsTableWriterFactory; 00187 typedef boost::shared_ptr<FtrsTableWriterFactory> SharedFtrsTableWriterFactory; 00188 00189 class Calculator; 00190 typedef boost::shared_ptr<Calculator> SharedCalculator; 00191 00192 class DynamicParam; 00193 typedef boost::shared_ptr<DynamicParam> SharedDynamicParam; 00194 00195 class DynamicParamManager; 00196 typedef boost::shared_ptr<DynamicParamManager> SharedDynamicParamManager; 00197 00198 class SegBufferReader; 00199 typedef boost::shared_ptr<SegBufferReader> SharedSegBufferReader; 00200 00201 class SegBufferWriter; 00202 typedef boost::shared_ptr<SegBufferWriter> SharedSegBufferWriter; 00203 00204 class SizeBuffer; 00205 typedef boost::shared_ptr<SizeBuffer> SharedSizeBuffer; 00206 00207 class LcsClusterDump; 00208 typedef boost::shared_ptr<LcsClusterDump> SharedLcsClusterDump; 00209 00210 class LcsClusterNodeWriter; 00211 typedef boost::shared_ptr<LcsClusterNodeWriter> SharedLcsClusterNodeWriter; 00212 00213 class LcsCompareColKeyUsingOffsetIndex; 00214 typedef boost::shared_ptr<LcsCompareColKeyUsingOffsetIndex> 00215 SharedLcsCompareColKeyUsingOffsetIndex; 00216 00217 class LcsClusterReader; 00218 typedef boost::shared_ptr<LcsClusterReader> SharedLcsClusterReader; 00219 00220 class LbmEntry; 00221 typedef boost::shared_ptr<LbmEntry> SharedLbmEntry; 00222 00223 class LbmTupleReader; 00224 typedef boost::shared_ptr<LbmTupleReader> SharedLbmTupleReader; 00225 00226 class ByteBuffer; 00227 typedef boost::shared_ptr<ByteBuffer> SharedByteBuffer; 00228 00229 class LhxPartition; 00230 typedef boost::shared_ptr<LhxPartition> SharedLhxPartition; 00231 00232 class LhxPartitionWriter; 00233 typedef boost::shared_ptr<LhxPartitionWriter> SharedLhxPartitionWriter; 00234 00235 class LhxPlan; 00236 typedef boost::shared_ptr<LhxPlan> SharedLhxPlan; 00237 00238 class LhxPlan; 00239 typedef boost::weak_ptr<LhxPlan> WeakLhxPlan; 00240 00241 struct LcsResidualFilter; 00242 typedef boost::shared_ptr<LcsResidualFilter> SharedLcsResidualFilter; 00243 00244 FENNEL_END_NAMESPACE 00245 00246 #endif 00247 00248 // End SharedTypes.h