[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