00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef _OSGFIELDCONTAINERFUNCSIMPL_H_
00040 #define _OSGFIELDCONTAINERFUNCSIMPL_H_
00041 #ifdef __sgi
00042 #pragma once
00043 #endif
00044
00045 #ifdef OSG_DOC_FILES_IN_MODULE
00046
00050 #endif
00051
00052 #include <OSGSystemDef.h>
00053 #include <OSGFieldContainerBase.h>
00054
00055 OSG_BEGIN_NAMESPACE
00056
00060 #ifndef OSG_INVALID_PTR_CHECK
00061
00062 OSG_SYSTEMLIB_DLLMAPPING
00063 inline
00064 void addRefCP (const FieldContainerPtrBase &objectP);
00065
00066 #else
00067
00068 #define addRefCP(objectP) \
00069 do \
00070 { \
00071 if(!safeAddRefCP(objectP)) \
00072 { \
00073 FFATAL(("addRefCP: invalid pointer in file '%s' line %d!\n", __FILE__, __LINE__)); \
00074 } \
00075 } \
00076 while (0)
00077
00078 OSG_SYSTEMLIB_DLLMAPPING
00079 inline
00080 bool safeAddRefCP (const FieldContainerPtrBase &objectP);
00081
00082 #endif
00083
00087 #ifndef OSG_INVALID_PTR_CHECK
00088
00089 OSG_SYSTEMLIB_DLLMAPPING
00090 inline
00091 void subRefCP (const FieldContainerPtrBase &objectP);
00092
00093 #else
00094
00095 #define subRefCP(objectP) \
00096 do \
00097 { \
00098 if(!safeSubRefCP(objectP)) \
00099 { \
00100 FFATAL(("subRefCP: invalid pointer in file '%s' line %d!\n", __FILE__, __LINE__)); \
00101 } \
00102 } \
00103 while (0)
00104
00105 OSG_SYSTEMLIB_DLLMAPPING
00106 inline
00107 bool safeSubRefCP (const FieldContainerPtrBase &objectP);
00108
00109 #endif
00110
00114 #ifndef OSG_INVALID_PTR_CHECK
00115
00116 OSG_SYSTEMLIB_DLLMAPPING
00117 inline
00118 void setRefdCP ( FieldContainerPtrBase &objectP,
00119 const FieldContainerPtrBase &newObjectP);
00120
00121 #else
00122
00123 #define setRefdCP(objectP, newObjectP) \
00124 do \
00125 { \
00126 if(!safeSetRefdCP(objectP, newObjectP)) \
00127 { \
00128 FFATAL(("setRefdCP: invalid pointer in file '%s' line %d!\n", __FILE__, __LINE__)); \
00129 } \
00130 } \
00131 while (0)
00132
00133 OSG_SYSTEMLIB_DLLMAPPING
00134 inline
00135 bool safeSetRefdCP ( FieldContainerPtrBase &objectP,
00136 const FieldContainerPtrBase &newObjectP);
00137
00138 #endif
00139
00143 #ifndef OSG_INVALID_PTR_CHECK
00144
00145 OSG_SYSTEMLIB_DLLMAPPING
00146 inline
00147 void clearRefCP(FieldContainerPtrBase &objectP);
00148
00149 #else
00150
00151 #define clearRefCP(objectP) \
00152 do \
00153 { \
00154 if(!safeClearRefCP(objectP)) \
00155 { \
00156 FFATAL(("clearRefCP: invalid pointer in file '%s' line %d!\n", __FILE__, __LINE__)); \
00157 } \
00158 } \
00159 while (0)
00160
00161 OSG_SYSTEMLIB_DLLMAPPING
00162 inline
00163 bool safeClearRefCP(FieldContainerPtrBase &objectP);
00164
00165 #endif
00166
00170 OSG_SYSTEMLIB_DLLMAPPING
00171 inline
00172 void beginEditCP(const FieldContainerPtr &objectP,
00173 BitVector whichField = FieldBits ::AllFields,
00174 UInt32 origin = ChangedOrigin::External);
00175
00179 OSG_SYSTEMLIB_DLLMAPPING
00180 inline
00181 void endEditCP (const FieldContainerPtr &objectP,
00182 BitVector whichField = FieldBits ::AllFields,
00183 UInt32 origin = ChangedOrigin::External);
00184
00188 OSG_SYSTEMLIB_DLLMAPPING
00189 inline
00190 void changedCP (const FieldContainerPtr &objectP,
00191 BitVector whichField = FieldBits ::AllFields,
00192 UInt32 origin = ChangedOrigin::External);
00193
00197 OSG_SYSTEMLIB_DLLMAPPING
00198 inline
00199 void endEditNotChangedCP(
00200 const FieldContainerPtr &objectP,
00201 BitVector whichField = FieldBits ::AllFields,
00202 UInt32 origin = ChangedOrigin::External);
00203
00204 OSG_END_NAMESPACE
00205
00206 #define OSGFIELDCONTAINERFUNDS_HEADER_CVSID "@(#)$Id: $"
00207
00208 #endif