Go to the source code of this file.
Typedefs | |
| typedef struct MR_std_pair_MR_VertId_MR_FaceId | MR_std_pair_MR_VertId_MR_FaceId |
| typedef struct MR_MeshBuilder_VertDuplication | MR_MeshBuilder_VertDuplication |
| typedef struct MR_MeshBuilder_VertInfo | MR_MeshBuilder_VertInfo |
| typedef struct MR_MeshBuilder_VertTri | MR_MeshBuilder_VertTri |
| typedef struct MR_MeshBuilder_VertDuplication MR_MeshBuilder_VertDuplication |
Generated from class MR::MeshBuilder::VertDuplication. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).
| typedef struct MR_MeshBuilder_VertInfo MR_MeshBuilder_VertInfo |
classification of the triangles around one vertex, packed in 32 bits; it stores 1-bit flag (hasRepeatedVerts) and either 31-bit numRepeatedVerts (if the flag is on), or 16-bit numOpenChains and 15-bit numClosedChains (if the flag is off) Generated from class MR::MeshBuilder::VertInfo. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).
| typedef struct MR_MeshBuilder_VertTri MR_MeshBuilder_VertTri |
describes a vertex and one of triangles incident to it Generated from class MR::MeshBuilder::VertTri. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee). original vertex before duplication Returns a pointer to a member variable of class MR::MeshBuilder::VertDuplication named srcVert. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| typedef struct MR_std_pair_MR_VertId_MR_FaceId MR_std_pair_MR_VertId_MR_FaceId |
Stores two objects: MR::VertId and MR::VertId. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).
| MRC_API bool MR_less_MR_MeshBuilder_VertTri | ( | const MR_MeshBuilder_VertTri * | l, |
| const MR_MeshBuilder_VertTri * | r ) |
Generated from function MR::MeshBuilder::operator<. Parameter l can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API size_t MR_MeshBuilder_duplicateNonManifoldVertices | ( | MR_Triangulation * | t, |
| MR_FaceBitSet * | region, | ||
| MR_std_vector_MR_MeshBuilder_VertDuplication * | dups, | ||
| const MR_VertId * | lastValidVert ) |
resolve non-manifold vertices by creating duplicate vertices in the triangulation (which is modified) lastValidVert is needed if region or t does not contain full mesh, then first duplicated vertex will have lastValidVert+1 index dups (if given) contents will be ignored and overridden; it receives the duplications in creation order with consecutive dupVert ids starting from lastValidVert+1 return number of duplicated vertices Generated from function MR::MeshBuilder::duplicateNonManifoldVertices. Parameter t can not be null. It is a single object. Parameter region defaults to a null pointer in C++. Parameter dups defaults to a null pointer in C++. Parameter lastValidVert has a default argument: {}, pass a null pointer to use it.
| MRC_API MR_MeshBuilder_VertInfo * MR_MeshBuilder_inspectVertNeighbourhood | ( | const MR_Triangulation * | t, |
| const MR_MeshBuilder_VertTri * | begin, | ||
| const MR_MeshBuilder_VertTri * | end ) |
computes VertInfo of one vertex given all its incident triangles in [begin, end), all referencing the same vertex; allocates temporary hash maps on every call, so prefer batch processing over calling it per vertex of a large mesh Generated from function MR::MeshBuilder::inspectVertNeighbourhood. Parameter t can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertInfo_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_AssignFromAnother | ( | MR_MeshBuilder_VertDuplication * | _this, |
| const MR_MeshBuilder_VertDuplication * | _other ) |
Generated from method MR::MeshBuilder::VertDuplication::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.
| MRC_API MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_ConstructFrom | ( | MR_VertId | srcVert, |
| MR_VertId | dupVert ) |
Constructs MR::MeshBuilder::VertDuplication elementwise. The reference to the parameter srcVert might be preserved in the constructed object. The reference to the parameter dupVert might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertDuplication_Destroy() to free it when you're done using it. When this function is called, this object will drop any object references it held previously.
| MRC_API MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_ConstructFromAnother | ( | const MR_MeshBuilder_VertDuplication * | _other | ) |
Generated from constructor MR::MeshBuilder::VertDuplication::VertDuplication. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertDuplication_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_DefaultConstruct | ( | void | ) |
Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertDuplication_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_DefaultConstructArray | ( | size_t | num_elems | ) |
Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_MeshBuilder_VertDuplication_DestroyArray(). Use MR_MeshBuilder_VertDuplication_OffsetMutablePtr() and MR_MeshBuilder_VertDuplication_OffsetPtr() to access the array elements.
| MRC_API void MR_MeshBuilder_VertDuplication_Destroy | ( | const MR_MeshBuilder_VertDuplication * | _this | ) |
Destroys a heap-allocated instance of MR_MeshBuilder_VertDuplication. Does nothing if the pointer is null.
| MRC_API void MR_MeshBuilder_VertDuplication_DestroyArray | ( | const MR_MeshBuilder_VertDuplication * | _this | ) |
Destroys a heap-allocated array of MR_MeshBuilder_VertDuplication. Does nothing if the pointer is null.
| MRC_API const MR_VertId * MR_MeshBuilder_VertDuplication_Get_dupVert | ( | const MR_MeshBuilder_VertDuplication * | _this | ) |
new vertex after duplication Modifies a member variable of class MR::MeshBuilder::VertDuplication named dupVert. Parameter _this can not be null. It is a single object. The reference to the parameter value might be preserved in this object in element dupVert. When this function is called, this object will drop object references it held previously in dupVert.
| MRC_API const MR_VertId * MR_MeshBuilder_VertDuplication_Get_srcVert | ( | const MR_MeshBuilder_VertDuplication * | _this | ) |
original vertex before duplication Modifies a member variable of class MR::MeshBuilder::VertDuplication named srcVert. Parameter _this can not be null. It is a single object. The reference to the parameter value might be preserved in this object in element srcVert. When this function is called, this object will drop object references it held previously in srcVert.
| MRC_API MR_VertId * MR_MeshBuilder_VertDuplication_GetMutable_dupVert | ( | MR_MeshBuilder_VertDuplication * | _this | ) |
| MRC_API MR_VertId * MR_MeshBuilder_VertDuplication_GetMutable_srcVert | ( | MR_MeshBuilder_VertDuplication * | _this | ) |
new vertex after duplication Returns a pointer to a member variable of class MR::MeshBuilder::VertDuplication named dupVert. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_OffsetMutablePtr | ( | MR_MeshBuilder_VertDuplication * | ptr, |
| ptrdiff_t | i ) |
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.
| MRC_API const MR_MeshBuilder_VertDuplication * MR_MeshBuilder_VertDuplication_OffsetPtr | ( | const MR_MeshBuilder_VertDuplication * | ptr, |
| ptrdiff_t | i ) |
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.
| MRC_API void MR_MeshBuilder_VertDuplication_Set_dupVert | ( | MR_MeshBuilder_VertDuplication * | _this, |
| MR_VertId | value ) |
new vertex after duplication Returns a mutable pointer to a member variable of class MR::MeshBuilder::VertDuplication named dupVert. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API void MR_MeshBuilder_VertDuplication_Set_srcVert | ( | MR_MeshBuilder_VertDuplication * | _this, |
| MR_VertId | value ) |
original vertex before duplication Returns a mutable pointer to a member variable of class MR::MeshBuilder::VertDuplication named srcVert. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API bool MR_MeshBuilder_VertInfo_areTwinChains | ( | const MR_MeshBuilder_VertInfo * | _this, |
| unsigned int | numTris ) |
tests for the case when every triangle around central vertex is present twice, if the chains are closed, the copy triangles have always same or always opposite orientation, if the chains are open, the copy triangles have always same orientation, so every neighbour vertex is repeated Generated from method MR::MeshBuilder::VertInfo::areTwinChains. Parameter _this can not be null. It is a single object.
| MRC_API MR_MeshBuilder_VertInfo * MR_MeshBuilder_VertInfo_AssignFromAnother | ( | MR_MeshBuilder_VertInfo * | _this, |
| const MR_MeshBuilder_VertInfo * | _other ) |
Generated from method MR::MeshBuilder::VertInfo::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.
| MRC_API MR_MeshBuilder_VertInfo * MR_MeshBuilder_VertInfo_ConstructFromAnother | ( | const MR_MeshBuilder_VertInfo * | _other | ) |
Generated from constructor MR::MeshBuilder::VertInfo::VertInfo. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertInfo_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertInfo * MR_MeshBuilder_VertInfo_DefaultConstruct | ( | void | ) |
Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertInfo_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertInfo * MR_MeshBuilder_VertInfo_DefaultConstructArray | ( | size_t | num_elems | ) |
Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_MeshBuilder_VertInfo_DestroyArray(). Use MR_MeshBuilder_VertInfo_OffsetMutablePtr() and MR_MeshBuilder_VertInfo_OffsetPtr() to access the array elements.
| MRC_API void MR_MeshBuilder_VertInfo_Destroy | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
Destroys a heap-allocated instance of MR_MeshBuilder_VertInfo. Does nothing if the pointer is null.
| MRC_API void MR_MeshBuilder_VertInfo_DestroyArray | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
Destroys a heap-allocated array of MR_MeshBuilder_VertInfo. Does nothing if the pointer is null.
| MRC_API bool MR_MeshBuilder_VertInfo_duplicationNeeded | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
true if the triangles around the vertex do not form a configuration MeshBuilder accepts as is (a single chain or ring, no triangles at all, or two open chains), so the vertex must be duplicated Generated from method MR::MeshBuilder::VertInfo::duplicationNeeded. Parameter _this can not be null. It is a single object.
| MRC_API const unsigned int * MR_MeshBuilder_VertInfo_Get_maxMaxVertRepetitions | ( | void | ) |
Returns a pointer to a member variable of class MR::MeshBuilder::VertInfo named maxMaxVertRepetitions. The returned pointer will never be null. It is non-owning, do NOT destroy it.
| MRC_API const unsigned int * MR_MeshBuilder_VertInfo_Get_maxNumClosedChains | ( | void | ) |
Returns a pointer to a member variable of class MR::MeshBuilder::VertInfo named maxNumClosedChains. The returned pointer will never be null. It is non-owning, do NOT destroy it.
| MRC_API const unsigned int * MR_MeshBuilder_VertInfo_Get_maxNumOpenChains | ( | void | ) |
maximal values storable in the counters Returns a pointer to a member variable of class MR::MeshBuilder::VertInfo named maxNumOpenChains. The returned pointer will never be null. It is non-owning, do NOT destroy it.
| MRC_API const unsigned int * MR_MeshBuilder_VertInfo_Get_maxNumRepeatedVerts | ( | void | ) |
Returns a pointer to a member variable of class MR::MeshBuilder::VertInfo named maxNumRepeatedVerts. The returned pointer will never be null. It is non-owning, do NOT destroy it.
| MRC_API bool MR_MeshBuilder_VertInfo_hasRepeatedVerts | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
true if some neighbor vertex is present in more than one triangle-pair around the vertex Generated from method MR::MeshBuilder::VertInfo::hasRepeatedVerts. Parameter _this can not be null. It is a single object.
| MRC_API unsigned int MR_MeshBuilder_VertInfo_maxVertRepetitions | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
the maximum number of a neighbor vertex repetitions; 0 if !hasRepeatedVerts() Generated from method MR::MeshBuilder::VertInfo::maxVertRepetitions. Parameter _this can not be null. It is a single object.
| MRC_API unsigned int MR_MeshBuilder_VertInfo_numChains | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
the total number of open and closed chains of connected triangles around the vertex; 0 if hasRepeatedVerts() Generated from method MR::MeshBuilder::VertInfo::numChains. Parameter _this can not be null. It is a single object.
| MRC_API unsigned int MR_MeshBuilder_VertInfo_numClosedChains | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
the number of closed chains (rings) of connected triangles around the vertex; 0 if hasRepeatedVerts() Generated from method MR::MeshBuilder::VertInfo::numClosedChains. Parameter _this can not be null. It is a single object.
| MRC_API unsigned int MR_MeshBuilder_VertInfo_numOpenChains | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
the number of open chains of connected triangles around the vertex; 0 if hasRepeatedVerts() Generated from method MR::MeshBuilder::VertInfo::numOpenChains. Parameter _this can not be null. It is a single object.
| MRC_API unsigned int MR_MeshBuilder_VertInfo_numRepeatedVerts | ( | const MR_MeshBuilder_VertInfo * | _this | ) |
the total number of neighbor vertex repetitions; 0 if !hasRepeatedVerts() Generated from method MR::MeshBuilder::VertInfo::numRepeatedVerts. Parameter _this can not be null. It is a single object.
| MRC_API MR_MeshBuilder_VertInfo * MR_MeshBuilder_VertInfo_OffsetMutablePtr | ( | MR_MeshBuilder_VertInfo * | ptr, |
| ptrdiff_t | i ) |
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.
| MRC_API const MR_MeshBuilder_VertInfo * MR_MeshBuilder_VertInfo_OffsetPtr | ( | const MR_MeshBuilder_VertInfo * | ptr, |
| ptrdiff_t | i ) |
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.
| MRC_API void MR_MeshBuilder_VertInfo_setNumChains | ( | MR_MeshBuilder_VertInfo * | _this, |
| unsigned int | openChains, | ||
| unsigned int | closedChains ) |
Generated from method MR::MeshBuilder::VertInfo::setNumChains. Parameter _this can not be null. It is a single object.
| MRC_API void MR_MeshBuilder_VertInfo_setNumRepeatedVerts | ( | MR_MeshBuilder_VertInfo * | _this, |
| unsigned int | repeatedVerts, | ||
| unsigned int | maxVertRepetitions ) |
Generated from method MR::MeshBuilder::VertInfo::setNumRepeatedVerts. Parameter _this can not be null. It is a single object.
| MRC_API MR_std_pair_MR_VertId_MR_FaceId * MR_MeshBuilder_VertTri_asPair | ( | const MR_MeshBuilder_VertTri * | _this | ) |
Generated from method MR::MeshBuilder::VertTri::asPair. Parameter _this can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_pair_MR_VertId_MR_FaceId_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_AssignFromAnother | ( | MR_MeshBuilder_VertTri * | _this, |
| const MR_MeshBuilder_VertTri * | _other ) |
Generated from method MR::MeshBuilder::VertTri::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.
| MRC_API MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_ConstructFrom | ( | MR_VertId | v, |
| MR_FaceId | f ) |
Constructs MR::MeshBuilder::VertTri elementwise. The reference to the parameter v might be preserved in the constructed object. The reference to the parameter f might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertTri_Destroy() to free it when you're done using it. When this function is called, this object will drop any object references it held previously.
| MRC_API MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_ConstructFromAnother | ( | const MR_MeshBuilder_VertTri * | _other | ) |
Generated from constructor MR::MeshBuilder::VertTri::VertTri. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertTri_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_DefaultConstruct | ( | void | ) |
Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_MeshBuilder_VertTri_Destroy() to free it when you're done using it.
| MRC_API MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_DefaultConstructArray | ( | size_t | num_elems | ) |
Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_MeshBuilder_VertTri_DestroyArray(). Use MR_MeshBuilder_VertTri_OffsetMutablePtr() and MR_MeshBuilder_VertTri_OffsetPtr() to access the array elements.
| MRC_API void MR_MeshBuilder_VertTri_Destroy | ( | const MR_MeshBuilder_VertTri * | _this | ) |
Destroys a heap-allocated instance of MR_MeshBuilder_VertTri. Does nothing if the pointer is null.
| MRC_API void MR_MeshBuilder_VertTri_DestroyArray | ( | const MR_MeshBuilder_VertTri * | _this | ) |
Destroys a heap-allocated array of MR_MeshBuilder_VertTri. Does nothing if the pointer is null.
| MRC_API const MR_FaceId * MR_MeshBuilder_VertTri_Get_f | ( | const MR_MeshBuilder_VertTri * | _this | ) |
Returns a pointer to a member variable of class MR::MeshBuilder::VertTri named f. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API const MR_VertId * MR_MeshBuilder_VertTri_Get_v | ( | const MR_MeshBuilder_VertTri * | _this | ) |
Returns a pointer to a member variable of class MR::MeshBuilder::VertTri named v. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API MR_FaceId * MR_MeshBuilder_VertTri_GetMutable_f | ( | MR_MeshBuilder_VertTri * | _this | ) |
Returns a mutable pointer to a member variable of class MR::MeshBuilder::VertTri named f. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API MR_VertId * MR_MeshBuilder_VertTri_GetMutable_v | ( | MR_MeshBuilder_VertTri * | _this | ) |
Returns a mutable pointer to a member variable of class MR::MeshBuilder::VertTri named v. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. The reference to this object might be preserved as the return value.
| MRC_API MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_OffsetMutablePtr | ( | MR_MeshBuilder_VertTri * | ptr, |
| ptrdiff_t | i ) |
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.
| MRC_API const MR_MeshBuilder_VertTri * MR_MeshBuilder_VertTri_OffsetPtr | ( | const MR_MeshBuilder_VertTri * | ptr, |
| ptrdiff_t | i ) |
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.
| MRC_API void MR_MeshBuilder_VertTri_Set_f | ( | MR_MeshBuilder_VertTri * | _this, |
| MR_FaceId | value ) |
Modifies a member variable of class MR::MeshBuilder::VertTri named f. Parameter _this can not be null. It is a single object. The reference to the parameter value might be preserved in this object in element f. When this function is called, this object will drop object references it held previously in f.
| MRC_API void MR_MeshBuilder_VertTri_Set_v | ( | MR_MeshBuilder_VertTri * | _this, |
| MR_VertId | value ) |
Modifies a member variable of class MR::MeshBuilder::VertTri named v. Parameter _this can not be null. It is a single object. The reference to the parameter value might be preserved in this object in element v. When this function is called, this object will drop object references it held previously in v.