[cig-commits] r4361 - in long/3D/Gale/trunk/src/StGermain: .
Base/Container/src
walter at geodynamics.org
walter at geodynamics.org
Thu Aug 17 17:18:24 PDT 2006
Author: walter
Date: 2006-08-17 17:18:24 -0700 (Thu, 17 Aug 2006)
New Revision: 4361
Modified:
long/3D/Gale/trunk/src/StGermain/
long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c
long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h
Log:
r2726 at earth: boo | 2006-08-17 17:14:30 -0700
r2680 at earth (orig r3761): LukeHodkinson | 2006-08-09 23:02:31 -0700
Fixed a bug that was causing too many ranges to be
constructed from a set of indices.
Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
- 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2725
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3760
+ 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2726
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3761
Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c 2006-08-18 00:18:19 UTC (rev 4360)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c 2006-08-18 00:18:24 UTC (rev 4361)
@@ -86,8 +86,8 @@
** Virtual functions
*/
-void _RangeSet_Delete( void* generator ) {
- RangeSet* self = (RangeSet*)generator;
+void _RangeSet_Delete( void* rangeSet ) {
+ RangeSet* self = (RangeSet*)rangeSet;
assert( self );
@@ -97,50 +97,31 @@
_Stg_Class_Delete( self );
}
-void _RangeSet_Print( void* generator, Stream* stream ) {
- RangeSet* self = (RangeSet*)generator;
+void _RangeSet_Print( void* rangeSet, Stream* stream ) {
+ RangeSet* self = (RangeSet*)rangeSet;
/* Set the Journal for printing informations */
- Stream* generatorStream;
- generatorStream = Journal_Register( InfoStream_Type, "RangeSetStream" );
+ Stream* rangeSetStream;
+ rangeSetStream = Journal_Register( InfoStream_Type, "RangeSetStream" );
/* Print parent */
Journal_Printf( stream, "RangeSet (ptr): (%p)\n", self );
_Stg_Class_Print( self, stream );
}
-void* _RangeSet_Copy( void* generator, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
- RangeSet* self = (RangeSet*)generator;
+void* _RangeSet_Copy( void* rangeSet, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
+ RangeSet* self = (RangeSet*)rangeSet;
RangeSet* newRangeSet;
- PtrMap* map = ptrMap;
- Bool ownMap = False;
- /* Damn me for making copying so difficult... what was I thinking? */
-
- /* We need to create a map if it doesn't already exist. */
- if( !map ) {
- map = PtrMap_New( 10 );
- ownMap = True;
+ newRangeSet = RangeSet_New();
+ newRangeSet->nInds = self->nInds;
+ newRangeSet->nRanges = self->nRanges;
+ if( self->nRanges ) {
+ newRangeSet->ranges = Memory_Alloc_Array( RangeSet_Range, self->nRanges, "RangeSet::ranges" );
+ memcpy( newRangeSet->ranges, self->ranges, self->nRanges * sizeof(RangeSet_Range) );
}
-
- newRangeSet = (RangeSet*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-
- /* Copy the virtual methods here. */
- /* Deep or shallow? */
- if( deep ) {
- }
- else {
- }
-
- /* If we own the map, get rid of it here. */
- if( ownMap ) Stg_Class_Delete( map );
-
return (void*)newRangeSet;
-#endif
-
- return NULL;
}
@@ -176,23 +157,23 @@
range = self->ranges + self->nRanges - 1;
- range->begin = inds[curInd++];
- while( inds[curInd] == inds[curInd - 1] ) {
+ range->begin = tmpInds[curInd++];
+ while( tmpInds[curInd] == tmpInds[curInd - 1] ) {
curInd++;
self->nInds--;
}
- range->end = inds[curInd++];
- while( inds[curInd] == range->end ) {
+ range->end = tmpInds[curInd++];
+ while( tmpInds[curInd] == range->end ) {
curInd++;
self->nInds--;
}
range->step = range->end - range->begin;
- while( inds[curInd] - range->end == range->step ) {
- range->end = inds[curInd++];
- while( inds[curInd] == range->end ) {
+ while( tmpInds[curInd] - range->end == range->step ) {
+ range->end = tmpInds[curInd++];
+ while( tmpInds[curInd] == range->end ) {
curInd++;
self->nInds--;
}
@@ -245,16 +226,19 @@
RangeSet* self = (RangeSet*)rangeSet;
assert( self );
- assert( nBytes >= sizeof(unsigned) );
assert( (nBytes - sizeof(unsigned)) % sizeof(RangeSet_Range) == 0 );
- assert( bytes );
+ assert( !nBytes || bytes );
RangeSet_Destruct( self );
- self->nInds = ((unsigned*)bytes)[0];
- self->nRanges = (nBytes - sizeof(unsigned)) / sizeof(RangeSet_Range);
- self->ranges = Memory_Alloc_Array( RangeSet_Range, self->nRanges, "RangeSet::ranges" );
- memcpy( self->ranges, bytes + sizeof(unsigned), nBytes - sizeof(unsigned) );
+ if( nBytes ) {
+ self->nInds = ((unsigned*)bytes)[0];
+ if( self->nInds ) {
+ self->nRanges = (nBytes - sizeof(unsigned)) / sizeof(RangeSet_Range);
+ self->ranges = Memory_Alloc_Array( RangeSet_Range, self->nRanges, "RangeSet::ranges" );
+ memcpy( self->ranges, bytes + sizeof(unsigned), nBytes - sizeof(unsigned) );
+ }
+ }
}
@@ -315,11 +299,17 @@
assert( nBytes );
assert( bytes );
- *nBytes = sizeof(unsigned) + self->nRanges * sizeof(RangeSet_Range);
- *bytes = Memory_Alloc_Array_Unnamed( Byte, *nBytes );
- ((unsigned*)*bytes)[0] = self->nInds;
- if( self->nRanges )
- memcpy( *bytes + sizeof(unsigned), self->ranges, *nBytes - sizeof(unsigned) );
+ if( self->nInds ) {
+ *nBytes = sizeof(unsigned) + self->nRanges * sizeof(RangeSet_Range);
+ *bytes = Memory_Alloc_Array_Unnamed( Byte, *nBytes );
+ ((unsigned*)*bytes)[0] = self->nInds;
+ if( self->nRanges )
+ memcpy( *bytes + sizeof(unsigned), self->ranges, *nBytes - sizeof(unsigned) );
+ }
+ else {
+ *nBytes = 0;
+ *bytes = NULL;
+ }
}
Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h 2006-08-18 00:18:19 UTC (rev 4360)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h 2006-08-18 00:18:24 UTC (rev 4361)
@@ -89,10 +89,10 @@
void _RangeSet_Delete( void* rangeSet );
void _RangeSet_Print( void* rangeSet, Stream* stream );
- #define RangeSet_Copy( self ) \
- (Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
- #define RangeSet_DeepCopy( self ) \
- (Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
+ #define RangeSet_Copy( self ) \
+ (RangeSet*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
+ #define RangeSet_DeepCopy( self ) \
+ (RangeSet*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
void* _RangeSet_Copy( void* rangeSet, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
/*--------------------------------------------------------------------------------------------------------------------------
More information about the cig-commits
mailing list