Standard_Real& NewU)
{
Standard_Integer first,last;
- if (&Mults) {
+ if (!Standard_IS_NULL_REFERENCE(Mults)) {
if (Periodic) {
first = Knots.Lower();
last = Knots.Upper();
const Standard_Real * pkn = &Knots(KLower);
pkn -= KLower;
Standard_Real *knot = &LK;
- if (&Mults == NULL) {
+ if (Standard_IS_NULL_REFERENCE(Mults)) {
switch (Degree) {
case 1 : {
Standard_Integer j = Index ;
const Standard_Real Tolerance,
const Standard_Boolean Add)
{
- Standard_Boolean addflat = &AddMults == NULL;
+ Standard_Boolean addflat = Standard_IS_NULL_REFERENCE(AddMults);
Standard_Integer first,last;
if (Periodic) {
const Standard_Real Tolerance,
const Standard_Boolean Add)
{
- Standard_Boolean addflat = &AddMults == NULL;
+ Standard_Boolean addflat = Standard_IS_NULL_REFERENCE(AddMults);
Standard_Integer i,k,mult,firstmult;
Standard_Integer index,kn,curnk,curk;
num_poles = FlatKnots.Length() - Deg1;
switch (ArrayDimension) {
case 2 : {
- if (&Weights != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(Weights)) {
const Standard_Real * WG = &Weights(Weights.Lower());
min_weights = WG[0];
break;
}
case 3 : {
- if (&Weights != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(Weights)) {
const Standard_Real * WG = &Weights(Weights.Lower());
min_weights = WG[0];
break;
}
case 4 : {
- if (&Weights != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(Weights)) {
const Standard_Real * WG = &Weights(Weights.Lower());
min_weights = WG[0];
}
default : {
Standard_Integer kk;
- if (&Weights != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(Weights)) {
const Standard_Real * WG = &Weights(Weights.Lower());
min_weights = WG[0];
Standard_Integer i;
Standard_Integer ip = PLower + Index - 1;
Standard_Real w, *pole = &LP;
- if (&Weights == NULL) {
+ if (Standard_IS_NULL_REFERENCE(Weights)) {
for (i = 0; i <= Degree; i++) {
ip++;
// make the knots
BSplCLib::BuildKnots(Degree,index,Periodic,Knots,Mults,*dc.knots);
- if (&Mults == NULL)
+ if (Standard_IS_NULL_REFERENCE(Mults))
index -= Knots.Lower() + Degree;
else
index = BSplCLib::PoleIndex(Degree,index,Periodic,Mults);
// check truly rational
- rational = (&Weights != NULL);
+ rational = (!Standard_IS_NULL_REFERENCE(Weights));
if (rational) {
Standard_Integer WLower = Weights.Lower() + index;
rational = BSplCLib::IsRational(Weights, WLower, WLower + Degree);
TColStd_Array1OfInteger& NewMults,
const Standard_Real Tolerance)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim;
dim = Dimension_gen;
if (rational) dim++;
const Standard_Real Epsilon,
const Standard_Boolean Add)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim;
dim = Dimension_gen;
if (rational) dim++;
TColStd_Array1OfReal& NewKnots,
TColStd_Array1OfInteger& NewMults)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim;
dim = Dimension_gen;
if (rational) dim++;
Array1OfPoints& NewPoles,
TColStd_Array1OfReal& NewWeights)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim;
dim = Dimension_gen;
if (rational) dim++;
Array1OfPoints& NewPoles,
TColStd_Array1OfReal& NewWeights)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim;
dim = Dimension_gen;
if (rational) dim++;
Standard_Integer PUpper = Poles.Upper();
Standard_Integer i;
Standard_Integer ip = PLower + Index - 1;
- if (&Weights == NULL) {
+ if (Standard_IS_NULL_REFERENCE(Weights)) {
for (i = 0; i <= Degree; i++) {
ip++;
if (ip > PUpper) ip = PLower;
// make the knots
BSplCLib::BuildKnots(Degree,index,Periodic,Knots,Mults,*dc.knots);
- if (&Mults == NULL)
+ if (Standard_IS_NULL_REFERENCE(Mults))
index -= Knots.Lower() + Degree;
else
index = BSplCLib::PoleIndex(Degree,index,Periodic,Mults);
// check truly rational
- rational = (&Weights != NULL);
+ rational = (!Standard_IS_NULL_REFERENCE(Weights));
if (rational) {
Standard_Integer WLower = Weights.Lower() + index;
rational = BSplCLib::IsRational(Weights, WLower, WLower + Degree);
Degree * Dimension_gen,
PArray[0],
myPoint[0]) ;
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
Standard_Real *
WArray = (Standard_Real *) &WeightsArray(WeightsArray.Lower()) ;
PLib::NoDerivativeEvalPolynomial(NewParameter,
ModifyCoords (LocalPDerivatives + Dimension_gen, /= SpanLenght);
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
Standard_Real *
WArray = (Standard_Real *) &WeightsArray(WeightsArray.Lower()) ;
PLib::EvalPolynomial(NewParameter,
Index += Dimension_gen;
}
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
Standard_Real *
WArray = (Standard_Real *) &WeightsArray(WeightsArray.Lower()) ;
Index += Dimension_gen;
}
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
Standard_Real *
WArray = (Standard_Real *) &WeightsArray(WeightsArray.Lower()) ;
LocalValue *= SpanDomain / (Standard_Real) ii ;
}
- if (&Weights != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(Weights)) {
for (ii = 1 ; ii <= Degree + 1 ; ii++)
CacheWeights(ii) = 0.0e0 ;
CacheWeights(1) = 1.0e0 ;
BSplCLib::BuildKnots(UDegree,uindex,UPer,UKnots,UMults,*dc.knots1);
BSplCLib::BuildKnots(VDegree,vindex,VPer,VKnots,VMults,*dc.knots2);
- if (&UMults == NULL)
+ if (Standard_IS_NULL_REFERENCE(UMults))
uindex -= UKLower + UDegree;
else
uindex = BSplCLib::PoleIndex(UDegree,uindex,UPer,UMults);
- if (&VMults == NULL)
+ if (Standard_IS_NULL_REFERENCE(VMults))
vindex -= VKLower + VDegree;
else
vindex = BSplCLib::PoleIndex(VDegree,vindex,VPer,VMults);
BSplCLib::BuildKnots(UDegree,uindex,UPer,UKnots,UMults,*dc.knots2);
BSplCLib::BuildKnots(VDegree,vindex,VPer,VKnots,VMults,*dc.knots1);
- if (&UMults == NULL)
+ if (Standard_IS_NULL_REFERENCE(UMults))
uindex -= UKLower + UDegree;
else
uindex = BSplCLib::PoleIndex(UDegree,uindex,UPer,UMults);
- if (&VMults == NULL)
+ if (Standard_IS_NULL_REFERENCE(VMults))
vindex -= VKLower + VDegree;
else
vindex = BSplCLib::PoleIndex(VDegree,vindex,VPer,VMults);
{
Standard_Integer index = 0;
Standard_Real u = Param;
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim = rational ? 4 : 3;
// compute local knots
NCollection_LocalArray<Standard_Real> locknots1 (2*Degree);
BSplCLib::LocateParameter(Degree,Knots,Mults,u,Periodic,index,u);
BSplCLib::BuildKnots(Degree,index,Periodic,Knots,Mults,*locknots1);
- if (&Mults == NULL)
+ if (Standard_IS_NULL_REFERENCE(Mults))
index -= Knots.Lower() + Degree;
else
index = BSplCLib::PoleIndex(Degree,index,Periodic,Mults);
}
// if the input is not rational but weights are wanted
- if (!rational && (&CWeights != NULL)) {
+ if (!rational && !Standard_IS_NULL_REFERENCE(CWeights)) {
for (i = CWeights.Lower(); i <= CWeights.Upper(); i++)
CWeights(i) = 1.;
const Standard_Real Epsilon,
const Standard_Boolean Add )
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim = 3;
if (rational) dim++;
TColStd_Array1OfInteger& NewMults,
const Standard_Real Tolerance)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim = 3;
if (rational) dim++;
TColStd_Array1OfReal& NewKnots,
TColStd_Array1OfInteger& NewMults)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim = 3;
if (rational) dim++;
TColgp_Array2OfPnt& NewPoles,
TColStd_Array2OfReal& NewWeights)
{
- Standard_Boolean rational = &Weights != NULL;
+ Standard_Boolean rational = !Standard_IS_NULL_REFERENCE(Weights);
Standard_Integer dim = 3;
if (rational) dim++;
Standard_Boolean rational,rational_u,rational_v,flag_u_or_v;
Standard_Integer kk,d1,d1p1,d2,d2p1,ii,jj,iii,jjj,Index;
Standard_Real u1,min_degree_domain,max_degree_domain,f,factor[2],u2;
- if (&Weights != NULL)
+ if (!Standard_IS_NULL_REFERENCE(Weights))
rational_u = rational_v = Standard_True;
else
rational_u = rational_v = Standard_False;
}
factor[0] *= max_degree_domain / (Standard_Real) (iii) ;
}
- if (&Weights != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(Weights)) {
//
// means that PrepareEval did found out that the surface was
// locally polynomial but since the surface is constructed
(min_degree << 1) + min_degree,
locpoles[0],
myPoint[0]) ;
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
dimension = min_degree + 1 ;
Standard_Real *
WArray = (Standard_Real *)
// the coefficients
//
//
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
local_poles_array [0][0][0] = 0.0e0 ;
local_poles_array [0][0][1] = 0.0e0 ;
locpoles[dimension],
local_poles_array[1][0][0]) ;
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
dimension = min_degree + 1 ;
Standard_Real *
WArray = (Standard_Real *)
// the coefficients
//
//
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
local_poles_and_weights_array[0][0][0] = 0.0e0 ;
local_poles_and_weights_array[0][0][1] = 0.0e0 ;
locpoles[dimension + dimension],
local_poles_array[2][0][0]) ;
- if (&WeightsArray != NULL) {
+ if (!Standard_IS_NULL_REFERENCE(WeightsArray)) {
dimension = min_degree + 1 ;
Standard_Real *
WArray = (Standard_Real *)
biduflatknots,bidvflatknots,
Poles,Weights,
CPoles,CWeights);
- if (&Weights == NULL) {
+ if (Standard_IS_NULL_REFERENCE(Weights)) {
for (ii = 1; ii <= uclas; ii++) {
void LDOM_CharacterData::setData (const LDOMString& theValue)
{
LDOM_BasicText& aText = (LDOM_BasicText&) Origin ();
- if (&aText == NULL)
+ if (Standard_IS_NULL_REFERENCE(aText))
Standard_ProgramError::Raise("LDOM_CharacterData::setData: called on void");
aText.SetData (theValue, myDocument);
myLength = -1;
TColStd_Array1OfReal& Poles,
TColStd_Array1OfReal& Weights)
{
- Standard_Boolean rat = &WCoefs != NULL;
+ Standard_Boolean rat = !Standard_IS_NULL_REFERENCE(WCoefs);
Standard_Integer loc = Coefs.Lower();
Standard_Integer lop = Poles.Lower();
Standard_Integer lowc=0;
Standard_Integer indc, indw=0;
Standard_Integer upc = Coefs.Upper() - dim + 1, upw=0;
Standard_Integer len = Coefs.Length()/dim;
- Standard_Boolean rat = &WCoefs != NULL;
+ Standard_Boolean rat = !Standard_IS_NULL_REFERENCE(WCoefs);
if (rat) {
if(len != WCoefs.Length())
TColgp_Array2OfPnt& Poles,
TColStd_Array2OfReal& Weights)
{
- Standard_Boolean rat = (&WCoefs != NULL);
+ Standard_Boolean rat = !Standard_IS_NULL_REFERENCE(WCoefs);
Standard_Integer LowerRow = Poles.LowerRow();
Standard_Integer UpperRow = Poles.UpperRow();
Standard_Integer LowerCol = Poles.LowerCol();
TColgp_Array2OfPnt& Coeffs,
TColStd_Array2OfReal& WCoeffs)
{
- Standard_Boolean rat = &WCoeffs != NULL;
+ Standard_Boolean rat = !Standard_IS_NULL_REFERENCE(WCoeffs);
Standard_Integer lr = Coeffs.LowerRow();
Standard_Integer ur = Coeffs.UpperRow();
Standard_Integer lc = Coeffs.LowerCol();
TColgp_Array2OfPnt& Coeffs,
TColStd_Array2OfReal& WCoeffs)
{
- Standard_Boolean rat = &WCoeffs != NULL;
+ Standard_Boolean rat = !Standard_IS_NULL_REFERENCE(WCoeffs);
Standard_Integer lr = Coeffs.LowerRow();
Standard_Integer ur = Coeffs.UpperRow();
Standard_Integer lc = Coeffs.LowerCol();
,const Standard_Address Two)
{ return One == Two; }
+//! Workaround CLang extreme optimization, which causes failures in case when reference is passed for NULL pointer.
+#ifdef __APPLE__
+template<typename T> bool Standard_IS_NULL_REFERENCE (const T& theRef) __attribute__((optnone))
+{
+ return &theRef == NULL;
+}
+#else
+template<typename T> bool Standard_IS_NULL_REFERENCE (const T& theRef)
+{
+ return &theRef == NULL;
+}
+#endif
+
#endif