Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

634 lines
19 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: otherStructuredGrid.cxx,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME
// .SECTION Description
// this program tests vtkStructuredGrid
#include "vtkCell.h"
#include "vtkDebugLeaks.h"
#include "vtkDoubleArray.h"
#include "vtkFloatArray.h"
#include "vtkGenericCell.h"
#include "vtkIdList.h"
#include "vtkLongArray.h"
#include "vtkPointData.h"
#include "vtkShortArray.h"
#include "vtkStructuredGrid.h"
int TestOSG(ostream& strm)
{
int i, j, k;
// actual test
strm << "Testing vtkStructuredGrid" << endl;
vtkStructuredGrid *sg0D = vtkStructuredGrid::New();
vtkStructuredGrid *sg1Dx = vtkStructuredGrid::New();
vtkStructuredGrid *sg1Dy = vtkStructuredGrid::New();
vtkStructuredGrid *sg1Dz = vtkStructuredGrid::New();
vtkStructuredGrid *sg2Dxy = vtkStructuredGrid::New();
vtkStructuredGrid *sg2Dxz = vtkStructuredGrid::New();
vtkStructuredGrid *sg2Dyz = vtkStructuredGrid::New();
vtkStructuredGrid *sg3D = vtkStructuredGrid::New();
vtkPoints *xyzpoints = vtkPoints::New();
for (k = 0; k < 20; k++)
{
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
xyzpoints->InsertNextPoint((double) i, (double) j, (double) k);
}
}
}
sg3D->SetDimensions(20,20,20);
sg3D->SetPoints(xyzpoints); xyzpoints->Delete();
vtkPoints *xypoints = vtkPoints::New();
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
xypoints->InsertNextPoint((double) i, (double) j, 0.0);
}
}
sg2Dxy->SetDimensions(20,20,1);
sg2Dxy->SetPoints(xypoints); xypoints->Delete();
vtkPoints *xzpoints = vtkPoints::New();
for (k = 0; k < 20; k++)
{
for (i = 0; i < 20; i++)
{
xzpoints->InsertNextPoint((double) i, 0.0, (double) k);
}
}
sg2Dxz->SetDimensions(20,1,20);
sg2Dxz->SetPoints(xzpoints); xzpoints->Delete();
vtkPoints *yzpoints = vtkPoints::New();
for (k = 0; k < 20; k++)
{
for (j = 0; j < 20; j++)
{
yzpoints->InsertNextPoint(0.0, (double) j, (double) k);
}
}
sg2Dyz->SetDimensions(1,20,20);
sg2Dyz->SetPoints(yzpoints); yzpoints->Delete();
vtkPoints *xpoints = vtkPoints::New();
for (i = 0; i < 20; i++)
{
xpoints->InsertNextPoint((double) i, 0.0, 0.0);
}
sg1Dx->SetDimensions(20,1,1);
sg1Dx->SetPoints(xpoints); xpoints->Delete();
vtkPoints *ypoints = vtkPoints::New();
for (j = 0; j < 20; j++)
{
ypoints->InsertNextPoint(0.0, (double) j, 0.0);
}
sg1Dy->SetDimensions(1,20,1);
sg1Dy->SetPoints(ypoints); ypoints->Delete();
strm << *sg1Dy;
vtkPoints *zpoints = vtkPoints::New();
for (k = 0; k < 20; k++)
{
zpoints->InsertNextPoint(0.0, 0.0, (double) k);
}
sg1Dz->SetDimensions(1,1,20);
sg1Dz->SetPoints(zpoints); zpoints->Delete();
vtkPoints *onepoints = vtkPoints::New();
for (k = 0; k < 1; k++)
{
onepoints->InsertNextPoint(0.0, 0.0, 0.0);
}
sg0D->SetDimensions(1,1,1);
sg0D->SetPoints(onepoints); onepoints->Delete();
vtkShortArray *shortScalars3D = vtkShortArray::New();
shortScalars3D->SetNumberOfComponents(3);
shortScalars3D->SetNumberOfTuples(20*20*20);
int l = 0;
for (k = 0; k < 20; k++)
{
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
shortScalars3D->InsertComponent(l,0,i);
shortScalars3D->InsertComponent(l,0,j);
shortScalars3D->InsertComponent(l,0,k);
l++;
}
}
}
vtkShortArray *shortScalars2D = vtkShortArray::New();
shortScalars2D->SetNumberOfComponents(2);
shortScalars2D->SetNumberOfTuples(20*20);
l = 0;
for (j = 0; j < 20; j++)
{
for (i = 0; i < 20; i++)
{
shortScalars2D->InsertComponent(l,0,i);
shortScalars2D->InsertComponent(l,0,j);
l++;
}
}
vtkShortArray *shortScalars1D = vtkShortArray::New();
shortScalars1D->SetNumberOfComponents(1);
shortScalars1D->SetNumberOfTuples(20);
l = 0;
for (i = 0; i < 20; i++)
{
shortScalars1D->InsertComponent(l,0,i);
l++;
}
vtkShortArray *shortScalars0D = vtkShortArray::New();
shortScalars0D->SetNumberOfComponents(1);
shortScalars0D->SetNumberOfTuples(1);
l = 0;
shortScalars0D->InsertComponent(l,0,0);
sg3D->GetPointData()->SetScalars(shortScalars3D);
sg2Dxy->GetPointData()->SetScalars(shortScalars2D);
sg2Dxz->GetPointData()->SetScalars(shortScalars2D);
sg2Dyz->GetPointData()->SetScalars(shortScalars2D);
sg1Dx->GetPointData()->SetScalars(shortScalars1D);
sg1Dy->GetPointData()->SetScalars(shortScalars1D);
sg1Dz->GetPointData()->SetScalars(shortScalars1D);
sg0D->GetPointData()->SetScalars(shortScalars3D);
strm << "sg3D:" << *sg3D;
// Test shallow copy
vtkStructuredGrid *scsg3D = vtkStructuredGrid::New();
scsg3D->ShallowCopy(sg3D);
strm << "ShallowCopy(sg3D):" << *scsg3D;
// Test deep copy
vtkStructuredGrid *dcsg3D = vtkStructuredGrid::New();
dcsg3D->DeepCopy(sg3D);
strm << "DeepCopy(sg3D):" << *dcsg3D;
// Test GetCell
vtkIdList *ids = vtkIdList::New();
int cellId;
int ii;
i = 10; j = 15; k = 7;
cellId = k * (19 * 19) + j * 19 + i;
vtkCell *cell3D = sg3D->GetCell(cellId);
strm << "cell3D: " << *cell3D ;
sg3D->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10; j = 15;
cellId = j * 19 + i;
vtkCell *cell2D = sg2Dxy->GetCell(cellId);
strm << "cell2D: " << *cell2D ;
sg2Dxy->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10; j = 15;
cellId = j * 19 + i;
cell2D = sg2Dxz->GetCell(j * 19 + i);
strm << "cell2D: " << *cell2D ;
sg2Dxz->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10; j = 15;
cellId = j * 19 + i;
cell2D = sg2Dyz->GetCell(j * 19 + i);
strm << "cell2D: " << *cell2D ;
sg2Dyz->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10;
cellId = i;
vtkCell *cell1D = sg1Dx->GetCell(i);
strm << "cell1D: " << *cell1D;
sg1Dx->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10;
cellId = i;
cell1D = sg1Dy->GetCell(i);
strm << "cell1D: " << *cell1D;
sg1Dy->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
i = 10;
cellId = i;
cell1D = sg1Dz->GetCell(i);
strm << "cell1D: " << *cell1D;
sg1Dz->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
cellId = 0;
vtkCell *cell0D = sg0D->GetCell(0);
strm << "cell0D: " << *cell0D;
sg0D->GetCellPoints (cellId, ids);
strm << "Ids for cell " << cellId << " are ";
for (ii = 0; ii < ids->GetNumberOfIds(); ii++)
{
strm << ids->GetId(ii) << " ";
}
strm << endl << endl;
// Test Thread Safe GetCell
vtkGenericCell *gcell3D = vtkGenericCell::New();
vtkGenericCell *gcell2D = vtkGenericCell::New();
vtkGenericCell *gcell1D = vtkGenericCell::New();
vtkGenericCell *gcell0D = vtkGenericCell::New();
i = 10; j = 15; k = 7;
sg3D->GetCell(k * (19 * 19) + j * 19 + i, gcell3D);
strm << "gcell3D: " << *gcell3D ;
i = 10; j = 15;
sg2Dxy->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10; j = 15;
sg2Dxz->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10; j = 15;
sg2Dyz->GetCell(j * 19 + i,gcell2D);
strm << "gcell2D: " << *gcell2D ;
i = 10;
sg1Dx->GetCell(i,gcell1D);
strm << "gcell1D: " << *gcell1D;
i = 10;
sg1Dy->GetCell(i,gcell1D);
strm << "gcell1D: " << *gcell1D;
i = 10;
sg1Dz->GetCell(i,gcell1D);
strm << "gcell1D: " << *gcell1D;
i = 10;
sg0D->GetCell(0,gcell0D);
strm << "gcell0D: " << *gcell0D;
// Test GetCellBounds
double bounds[6];
sg3D->GetCellBounds(k * (19 * 19) + j * 19 + i, bounds);
strm << "GetCellBounds(sg3D): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg2Dxy->GetCellBounds(j * 19 + i, bounds);
strm << "GetCellBounds(sg2Dxy): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg2Dxz->GetCellBounds(j * 19 + i, bounds);
strm << "GetCellBounds(sg2Dxz): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg2Dyz->GetCellBounds(j * 19 + i, bounds);
strm << "GetCellBounds(sg2Dyz): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg1Dx->GetCellBounds(i, bounds);
strm << "GetCellBounds(sg1x): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg1Dy->GetCellBounds(i, bounds);
strm << "GetCellBounds(sg1Dy): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg1Dz->GetCellBounds(i, bounds);
strm << "GetCellBounds(sg1Dz): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
sg0D->GetCellBounds(i, bounds);
strm << "GetCellBounds(sg0D): "
<< bounds[0] << ", " << bounds[1] << ", "
<< bounds[2] << ", " << bounds[3] << ", "
<< bounds[4] << ", " << bounds[5] << endl;
// Test GetPoint
double point[6];
sg3D->GetPoint(k * (20 * 20) + j * 20 + i, point);
strm << "GetPoint(sg3D): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg2Dxy->GetPoint(j * 20 + i, point);
strm << "GetPoint(sg2Dxy): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg2Dxz->GetPoint(j * 20 + i, point);
strm << "GetPoint(sg2Dxz): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg2Dyz->GetPoint(j * 20 + i, point);
strm << "GetPoint(sg2Dyz): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg1Dx->GetPoint(i, point);
strm << "GetPoint(sg1x): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg1Dy->GetPoint(i, point);
strm << "GetPoint(sg1Dy): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg1Dz->GetPoint(i, point);
strm << "GetPoint(sg1Dz): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
sg0D->GetPoint(0, point);
strm << "GetPoint(sg0D): "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
// Test FindPoint
double point3D[3] = {10, 12, 14};
sg3D->GetPoint(sg3D->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 10; point3D[1] = 12; point3D[2] = 0;
sg2Dxy->GetPoint(sg2Dxy->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 10; point3D[1] = 0; point3D[2] = 14;
sg2Dxz->GetPoint(sg2Dxz->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 0; point3D[1] = 12; point3D[2] = 14;
sg2Dyz->GetPoint(sg2Dyz->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 10; point3D[1] = 0; point3D[2] = 0;
sg1Dx->GetPoint(sg1Dx->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 0; point3D[1] = 12; point3D[2] = 0;
sg1Dy->GetPoint(sg1Dy->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
point3D[0] = 0; point3D[1] = 0; point3D[2] = 14;
sg1Dz->GetPoint(sg1Dz->FindPoint(point3D), point);
strm << "FindPoint("
<< point3D[0] << ", " << point3D[1] << ", " << point3D[2] << ") = "
<< point[0] << ", " << point[1] << ", " << point[2] << endl;
// Test FindAndGetCell
double pcoords[3], weights[8];
int subId;
vtkCell *dummyCell = 0;
point3D[0] = 10.5;
point3D[1] = 12.1;
point3D[2] = 14.7;
strm << "FindAndGetCell(sg3D): " << *sg3D->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << ", " << pcoords[2] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", "
<< weights[2] << ", " << weights[3] << ", "
<< weights[4] << ", " << weights[5] << ", "
<< weights[6] << ", " << weights[7] << endl;
point3D[0] = 10.5; point3D[1] = 12.1; point3D[2] = 0;
pcoords[0] = pcoords[1] = pcoords[2] = 0.0;
dummyCell = 0;
vtkCell *found = sg2Dxy->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(sg2Dxy) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(sg2Dxy): " << *found;
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", " << weights[2] << ", " << weights[3] << endl;
point3D[0] = 10.5; point3D[1] = 0.0; point3D[2] = 14.7;
pcoords[0] = pcoords[1] = pcoords[2] = 0.0;
weights[0] = weights[1] = weights[2] = weights[3] = 0.0;
dummyCell = 0;
found = sg2Dxz->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(sg2Dxz) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(sg2Dxz): " << *found;
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", " << weights[2] << ", " << weights[3] << endl;
point3D[0] = 0.0; point3D[1] = 12.1; point3D[2] = 14.7;
pcoords[0] = pcoords[1] = pcoords[2] = 0.0;
weights[0] = weights[1] = weights[2] = weights[3] = 0.0;
dummyCell = 0;
found = sg2Dyz->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(sg2Dyz) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(sg2Dyz): " << *found;
strm << "pcoords: "
<< pcoords[0] << ", " << pcoords[1] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << ", " << weights[2] << ", " << weights[3] << endl;
point3D[0] = 10.5; point3D[1] = 0.0; point3D[2] = 0.0;
dummyCell = 0;
found = sg1Dx->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(sg1Dx) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(sg1Dx): " << *found;
strm << "pcoords: "
<< pcoords[0] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << endl;
point3D[0] = 0.0; point3D[1] = 12.1; point3D[2] = 0.0;
dummyCell = 0;
found = sg1Dy->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(sg1Dy) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(sg1Dy): " << *found;
strm << "pcoords: "
<< pcoords[0] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << endl;
point3D[0] = 0.0; point3D[1] = 0.0; point3D[2] = 14.7;
dummyCell = 0;
found = sg1Dz->FindAndGetCell(point3D, dummyCell, 0, 0, subId, pcoords, weights);
if (found == NULL)
{
strm << "FindAndGetCell(sg1Dz) not found!" << endl;
return 1;
}
strm << "FindAndGetCell(sg1Dz): " << *found;
strm << "pcoords: "
<< pcoords[0] << endl;
strm << "weights: "
<< weights[0] << ", " << weights[1] << endl;
// Test GetCellType
strm << "GetCellType(sg3D): " << sg3D->GetCellType(0) << endl;
strm << "GetCellType(sg2Dxy): " << sg2Dxy->GetCellType(0) << endl;
strm << "GetCellType(sg2Dxz): " << sg2Dxz->GetCellType(0) << endl;
strm << "GetCellType(sg2Dyz): " << sg2Dyz->GetCellType(0) << endl;
strm << "GetCellType(sg1Dx): " << sg1Dx->GetCellType(0) << endl;
strm << "GetCellType(sg1Dy): " << sg1Dy->GetCellType(0) << endl;
strm << "GetCellType(sg1Dz): " << sg1Dz->GetCellType(0) << endl;
strm << "GetCellType(sg0D): " << sg0D->GetCellType(0) << endl;
// Test GetActualMemorySize
strm << "GetActualMemorySize(sg3D): " << sg3D->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg2Dxy): " << sg2Dxy->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg2Dxz): " << sg2Dxz->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg2Dyz): " << sg2Dyz->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg1Dx): " << sg1Dx->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg1Dy): " << sg1Dy->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg1Dz): " << sg1Dz->GetActualMemorySize() << endl;
strm << "GetActualMemorySize(sg0D): " << sg0D->GetActualMemorySize() << endl;
sg0D->Delete();
sg1Dx->Delete();
sg1Dy->Delete();
sg1Dz->Delete();
sg2Dxy->Delete();
sg2Dxz->Delete();
sg2Dyz->Delete();
sg3D->Delete();
shortScalars3D->Delete();
shortScalars2D->Delete();
shortScalars1D->Delete();
shortScalars0D->Delete();
scsg3D->Delete();
dcsg3D->Delete();
ids->Delete();
gcell3D->Delete();
gcell2D->Delete();
gcell1D->Delete();
gcell0D->Delete();
strm << "Testing completed" << endl;
return 0;
}
int otherStructuredGrid(int,char *[])
{
ostrstream vtkmsg_with_warning_C4701;
return TestOSG(vtkmsg_with_warning_C4701);
}