00001 /*---------------------------------------------------------------------------*\ 00002 * OpenSG * 00003 * * 00004 * * 00005 * Copyright (C) 2000-2002 by the OpenSG Forum * 00006 * * 00007 * www.opensg.org * 00008 * * 00009 * contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de * 00010 * * 00011 \*---------------------------------------------------------------------------*/ 00012 /*---------------------------------------------------------------------------*\ 00013 * License * 00014 * * 00015 * This library is free software; you can redistribute it and/or modify it * 00016 * under the terms of the GNU Library General Public License as published * 00017 * by the Free Software Foundation, version 2. * 00018 * * 00019 * This library is distributed in the hope that it will be useful, but * 00020 * WITHOUT ANY WARRANTY; without even the implied warranty of * 00021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00022 * Library General Public License for more details. * 00023 * * 00024 * You should have received a copy of the GNU Library General Public * 00025 * License along with this library; if not, write to the Free Software * 00026 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 00027 * * 00028 \*---------------------------------------------------------------------------*/ 00029 /*---------------------------------------------------------------------------*\ 00030 * Changes * 00031 * * 00032 * * 00033 * * 00034 * * 00035 * * 00036 * * 00037 \*---------------------------------------------------------------------------*/ 00038 00039 #ifndef _OSGATTACHMENTPTRIMPL_H_ 00040 #define _OSGATTACHMENTPTRIMPL_H_ 00041 #ifdef __sgi 00042 #pragma once 00043 #endif 00044 00045 #ifdef OSG_DOC_FILES_IN_MODULE 00046 00049 #endif 00050 00051 #include <OSGBaseTypes.h> 00052 #include <OSGSystemDef.h> 00053 #include <OSGFieldContainerPtr.h> 00054 #include <OSGRefPtr.h> 00055 00056 OSG_BEGIN_NAMESPACE 00057 00058 class Attachment; 00059 00060 #ifdef __sgi 00061 #pragma set woff 1375,1424 00062 #endif 00063 00064 #ifdef OSG_LINUX_ICC 00065 #pragma warning( disable : 444 ) 00066 #endif 00067 00071 class OSG_SYSTEMLIB_DLLMAPPING AttachmentPtr : public FieldContainerPtr 00072 { 00073 /*========================== PUBLIC =================================*/ 00074 00075 public: 00076 00077 typedef Attachment StoredObjectType; 00078 typedef AttachmentPtr ObjectType; 00079 00080 typedef FieldContainerPtr Inherited; 00081 00082 /*---------------------------------------------------------------------*/ 00086 template <class InTypeT> 00087 static AttachmentPtr dcast(const InTypeT oIn); 00088 00090 /*---------------------------------------------------------------------*/ 00094 AttachmentPtr(void); 00095 AttachmentPtr(const AttachmentPtr &source); 00096 AttachmentPtr(const NullFieldContainerPtr &source); 00097 00099 /*---------------------------------------------------------------------*/ 00103 ~AttachmentPtr(void); 00104 00106 /*---------------------------------------------------------------------*/ 00110 Attachment *operator->(void); 00111 Attachment *operator->(void) const; 00112 00113 Attachment &operator *(void); 00114 Attachment &operator *(void) const; 00115 00116 Attachment *getCPtr (void); 00117 Attachment *getCPtr (void) const; 00118 00120 /*---------------------------------------------------------------------*/ 00124 void operator =(const AttachmentPtr &source); 00125 void operator =(const NullFieldContainerPtr &source); 00126 00128 /*---------------------------------------------------------------------*/ 00134 explicit AttachmentPtr(const Attachment &source); 00135 explicit AttachmentPtr(const Attachment *source); 00136 00138 /*========================= PROTECTED ===============================*/ 00139 00140 protected: 00141 00142 /*---------------------------------------------------------------------*/ 00146 AttachmentPtr(const Attachment *source, 00147 const UInt16 uiSize, 00148 const UInt16 uiParentPos); 00149 00151 /*========================== PRIVATE ================================*/ 00152 00153 private: 00154 00155 friend class FieldContainer; 00156 }; 00157 00158 typedef RefPtr<AttachmentPtr> AttachmentRefPtr; 00159 00160 #ifdef OSG_LINUX_ICC 00161 #pragma warning( default : 444 ) 00162 #endif 00163 00164 #ifdef __sgi 00165 #pragma reset woff 1375,1424 00166 #endif 00167 00171 OSG_SYSTEMLIB_DLLMAPPING 00172 std::ostream &operator <<( std::ostream &os, 00173 const AttachmentPtr &fc); 00174 OSG_END_NAMESPACE 00175 00176 #define OSGATTACHMENTPTR_HEADER_CVSID "@(#)$Id: $" 00177 00178 #endif /* _OSGATTACHMENTPTRIMPL_H_ */
1.4.3