24#ifndef _ODRXMULTICAST_H_
25#define _ODRXMULTICAST_H_
58 if (!pObject || !pPointers || !pClasses || !nClasses)
63 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
65 if (pPointers[nClass].isNull())
67 if (pClass == pClasses[nClass])
69 pPointers[nClass] = pObject;
71 if (nCasts == nClasses)
76 pPointers[nClass] = pClass->
getX(pClasses[nClass]);
77 if (!pPointers[nClass].isNull())
80 if (nCasts == nClasses)
95 if (!pObject || !pClasses || !nClasses)
100 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
102 if ((pCasts) ? !pCasts[nClass] : ((nBits & (1 << nClass)) == 0))
104 if (pClass == pClasses[nClass])
107 pCasts[nClass] =
true;
109 nBits |= 1 << nClass;
111 if (nCasts == nClasses)
118 return (pCasts) ? nCasts : nBits;
125 if (!pObject || !pPointers || !pClasses || !nClasses)
130 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
132 if (pPointers[nClass].isNull())
134 pPointers[nClass] = pClass->
getX(pClasses[nClass]);
135 if (!pPointers[nClass].isNull())
138 if (nCasts == nClasses)
155 if (nIndex < nClasses)
158 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
160 if (pClass == pClasses[nClass])
167 pPointer = pClass->
getX(pClasses[nClass]);
177 if (!pObject || !pClasses || !nClasses)
190 if (nIndex < nClasses)
193 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
195 pPointer = pClass->
getX(pClasses[nClass]);
198 if (pClass == pClasses[nClass])
209 if (!pObject || !pClasses || !nClasses)
222 if (nIndex < nClasses)
225 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
227 if (pClass == pClasses[nClass])
235 if (!pObject || !pClasses || !nClasses)
248 if (nIndex < nClasses)
251 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
253 pPointer = pClass->
getX(pClasses[nClass]);
262 if (!pObject || !pClasses || !nClasses)
271 if (!pObject || !pClasses || !nClasses)
276 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
278 if (pClass == pClasses[nClass])
285 pPointer = pClass->
getX(pClasses[nClass]);
298 if (!pObject || !pClasses || !nClasses)
303 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
305 pPointer = pClass->
getX(pClasses[nClass]);
308 if (pClass == pClasses[nClass])
322 if (!pObject || !pClasses || !nClasses)
327 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
329 if (pClass == pClasses[nClass])
340 if (!pObject || !pClasses || !nClasses)
345 for (
OdUInt32 nClass = 0; nClass < nClasses; nClass++)
347 pPointer = pClass->
getX(pClasses[nClass]);
OdUInt32 odrxMultiCastFwdObject(const OdRxObject *pObject, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwd_(OdRxClass *pClass, const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwdXPrior_(OdRxClass *pClass, const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastBk(const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastX(const OdRxObject *pObject, OdRxObjectPtr *pPointers, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastBkXPrior(const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastBkObject(const OdRxObject *pObject, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCast(const OdRxObject *pObject, OdRxObjectPtr *pPointers, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwdX_(OdRxClass *pClass, const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastBkX(const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwd(const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwdObject_(OdRxClass *pClass, const OdRxObject *pObject, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastObject(const OdRxObject *pObject, bool *pCasts, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwdXPrior(const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdUInt32 odrxMultiCastFwdX(const OdRxObject *pObject, OdRxObjectPtr &pPointer, const OdRxClass **pClasses, OdUInt32 nClasses)
OdRxObjectPtr getX(const OdRxClass *pProtocolClass)
OdRxClass * myParent() const
virtual OdRxClass * isA() const