From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/a02709.html | 356 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 356 insertions(+) create mode 100644 docs/doxygen/nel/a02709.html (limited to 'docs/doxygen/nel/a02709.html') diff --git a/docs/doxygen/nel/a02709.html b/docs/doxygen/nel/a02709.html new file mode 100644 index 00000000..44c893bb --- /dev/null +++ b/docs/doxygen/nel/a02709.html @@ -0,0 +1,356 @@ + + +NeL: NL3D::CLandscapeFaceVectorManager class Reference + + + +
+

NL3D::CLandscapeFaceVectorManager Class Reference

#include <landscape_face_vector_manager.h> +

+


Detailed Description

+Fast Allocate blocks of faces, according to the size of the block.
Author:
Lionel Berenguier

+Nevrax France

+
Date:
2001
+ +

+ +

+Definition at line 44 of file landscape_face_vector_manager.h. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CLandscapeFaceVectorManager ()
 Constructor.

uint32createFaceVector (uint numTri)
void deleteFaceVector (uint32 *fv)
 delete a faceVector. NB: no check.

void purge ()
 ~CLandscapeFaceVectorManager ()

Private Member Functions

uint getBlockIdFromNumTri (uint numTris)

Private Attributes

std::vector< uint32 * > _Blocks
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
NL3D::CLandscapeFaceVectorManager::CLandscapeFaceVectorManager  ) 
+
+ + + + + +
+   + + +

+Constructor. +

+ +

+Definition at line 45 of file landscape_face_vector_manager.cpp. +

+References _Blocks, and NL3D_FACE_VECTOR_NUMBLOCK. +

+

00046 {
+00047         // Allow 2^32 triangles at max. each list i has at max 2^i triangles.
+00048         _Blocks.resize(NL3D_FACE_VECTOR_NUMBLOCK, NULL);
+00049 }
+
+

+ + + + +
+ + + + + + + + + +
NL3D::CLandscapeFaceVectorManager::~CLandscapeFaceVectorManager  ) 
+
+ + + + + +
+   + + +

+ +

+Definition at line 52 of file landscape_face_vector_manager.cpp. +

+References purge(). +

+

00053 {
+00054         purge();
+00055 }
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + +
uint32 * NL3D::CLandscapeFaceVectorManager::createFaceVector uint  numTri  ) 
+
+ + + + + +
+   + + +

+return an Array of Tris with this Format: NumTris, index0, index1, index2.... NB: NumTris really means number of triangles, not number of indexes (which is 3*)! +

+Definition at line 83 of file landscape_face_vector_manager.cpp. +

+References _Blocks, getBlockIdFromNumTri(), uint, and uint32. +

+Referenced by NL3D::CTessBlock::createFaceVectorFar0(), NL3D::CTessBlock::createFaceVectorFar1(), and NL3D::CTessBlock::createFaceVectorTile(). +

+

00084 {
+00085         // get the BlockId from the number of tri in this fv
+00086         uint    blockId= getBlockIdFromNumTri(numTri);
+00087 
+00088         // If no more free FaceVector, allocate.
+00089         if(_Blocks[blockId]==NULL)
+00090         {
+00091                 // Allocate a block of max tris. +1 is for the NumTris entry at index 0.
+00092                 uint    numTriMax= 1<<blockId;
+00093                 // allocate max of (sizeof(uint32*), (numTriMax*3+1)*sizeof(uint32));
+00094                 uint    sizeInByteToAllocate= max(sizeof(uint32*), (numTriMax*3+1)*sizeof(uint32));
+00095                 _Blocks[blockId]= new uint32[sizeInByteToAllocate/4];
+00096                 // Init it as a free faceVector, with no Next.
+00097                 *(uint32**)_Blocks[blockId]= NULL;
+00098         }
+00099 
+00100         // Pop a FaceVector from the free list.
+00101         uint32          *ret= _Blocks[blockId];
+00102         // Make the head list point to next
+00103         _Blocks[blockId]= *(uint32**)ret;
+00104 
+00105         // There is numTri triangles.
+00106         *ret= numTri;
+00107 
+00108         return ret;
+00109 }
+
+

+ + + + +
+ + + + + + + + + + +
void NL3D::CLandscapeFaceVectorManager::deleteFaceVector uint32 fv  ) 
+
+ + + + + +
+   + + +

+delete a faceVector. NB: no check. +

+ +

+Definition at line 112 of file landscape_face_vector_manager.cpp. +

+References _Blocks, getBlockIdFromNumTri(), uint, and uint32. +

+Referenced by NL3D::CTessBlock::deleteFaceVectorFar0(), NL3D::CTessBlock::deleteFaceVectorFar1(), and NL3D::CTessBlock::deleteFaceVectorTile(). +

+

00113 {
+00114         // get the BlockId from the number of tri in this fv (ie *fv)
+00115         uint    blockId= getBlockIdFromNumTri(*fv);
+00116 
+00117         // Append this block to the free list. Write the ptr directly on fv.
+00118         *(uint32**)fv= _Blocks[blockId];
+00119         _Blocks[blockId]= fv;
+00120 }
+
+

+ + + + +
+ + + + + + + + + + +
uint NL3D::CLandscapeFaceVectorManager::getBlockIdFromNumTri uint  numTris  )  [private]
+
+ + + + + +
+   + + +

+ +

+Definition at line 77 of file landscape_face_vector_manager.cpp. +

+References NLMISC::getPowerOf2(), and uint. +

+Referenced by createFaceVector(), and deleteFaceVector(). +

+

00078 {
+00079         return getPowerOf2(numTris);
+00080 }
+
+

+ + + + +
+ + + + + + + + + +
void NL3D::CLandscapeFaceVectorManager::purge  ) 
+
+ + + + + +
+   + + +

+ +

+Definition at line 58 of file landscape_face_vector_manager.cpp. +

+References _Blocks, NL3D_FACE_VECTOR_NUMBLOCK, uint, and uint32. +

+Referenced by ~CLandscapeFaceVectorManager(). +

+

00059 {
+00060         for(uint i=0; i<NL3D_FACE_VECTOR_NUMBLOCK; i++)
+00061         {
+00062                 uint32  *ptr= _Blocks[i];
+00063                 // For each node in list, delete.
+00064                 while(ptr)
+00065                 {
+00066                         // Get the ptr on next free list.
+00067                         uint32  *next= *(uint32**)ptr;
+00068                         delete []  ptr;
+00069                         ptr= next;
+00070                 }
+00071                 // list is empty.
+00072                 _Blocks[i]= NULL;
+00073         }
+00074 }
+
+


Field Documentation

+

+ + + + +
+ + +
std::vector<uint32*> NL3D::CLandscapeFaceVectorManager::_Blocks [private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 65 of file landscape_face_vector_manager.h. +

+Referenced by CLandscapeFaceVectorManager(), createFaceVector(), deleteFaceVector(), and purge().

+


The documentation for this class was generated from the following files: +
Generated on Tue Mar 16 06:48:38 2004 for NeL by + +doxygen +1.3.6
+ + -- cgit v1.2.1