r2844 - in trunk/libmutil: include/libmutil source

erik at minisip.org erik at minisip.org
Tue Oct 17 21:52:25 CEST 2006


Author: erik
Date: 2006-10-17 21:52:24 +0200 (Tue, 17 Oct 2006)
New Revision: 2844

Modified:
   trunk/libmutil/include/libmutil/CircularBuffer.h
   trunk/libmutil/include/libmutil/IString.h
   trunk/libmutil/source/CircularBuffer.cxx
   trunk/libmutil/source/IString.cxx
   trunk/libmutil/source/MessageRouter.cxx
   trunk/libmutil/source/Timestamp.cxx
Log:

 * Bug fix: Fixed the copy constructors for CircularBuffer, IString and MessageRouter



Modified: trunk/libmutil/include/libmutil/CircularBuffer.h
===================================================================
--- trunk/libmutil/include/libmutil/CircularBuffer.h	2006-10-17 19:50:20 UTC (rev 2843)
+++ trunk/libmutil/include/libmutil/CircularBuffer.h	2006-10-17 19:52:24 UTC (rev 2844)
@@ -40,6 +40,7 @@
 class LIBMUTIL_API CircularBuffer {
 	public:
 		CircularBuffer(int size);
+		CircularBuffer(const CircularBuffer &);
 		virtual ~CircularBuffer();
 	
 		/**

Modified: trunk/libmutil/include/libmutil/IString.h
===================================================================
--- trunk/libmutil/include/libmutil/IString.h	2006-10-17 19:50:20 UTC (rev 2843)
+++ trunk/libmutil/include/libmutil/IString.h	2006-10-17 19:52:24 UTC (rev 2844)
@@ -60,6 +60,8 @@
 	 */
 	StringAtom(char *buf, int n);
 
+	StringAtom(const StringAtom &);
+
 	/**
 	 * Avoid using this constructor if possible
 	 */

Modified: trunk/libmutil/source/CircularBuffer.cxx
===================================================================
--- trunk/libmutil/source/CircularBuffer.cxx	2006-10-17 19:50:20 UTC (rev 2843)
+++ trunk/libmutil/source/CircularBuffer.cxx	2006-10-17 19:52:24 UTC (rev 2844)
@@ -38,6 +38,18 @@
 	buf = new short[size];
 }
 
+CircularBuffer::CircularBuffer(const CircularBuffer &b):
+		maxSize(b->maxSize),
+		size(b->size),
+		readIdx(b->readIdx),
+		writeIdx(b->writeIdx),
+		byteCounter(b->byteCounter) {
+		
+	buf = new short[size];
+	memcpy(buf,d->buf,size*sizeof(short));
+}
+
+
 CircularBuffer::~CircularBuffer()
 {
 	if( buf != NULL ) {

Modified: trunk/libmutil/source/IString.cxx
===================================================================
--- trunk/libmutil/source/IString.cxx	2006-10-17 19:50:20 UTC (rev 2843)
+++ trunk/libmutil/source/IString.cxx	2006-10-17 19:52:24 UTC (rev 2844)
@@ -37,6 +37,11 @@
 	n = (int)s.length();
 }
 
+StringAtom::StringAtom(const StringAtom &a):n(a.n){
+	buf = new char[n];
+	memcpy(buf,a.buf,n);
+}
+
 StringAtom::~StringAtom(){
 	massert(buf);
 	delete []buf;

Modified: trunk/libmutil/source/MessageRouter.cxx
===================================================================
--- trunk/libmutil/source/MessageRouter.cxx	2006-10-17 19:50:20 UTC (rev 2843)
+++ trunk/libmutil/source/MessageRouter.cxx	2006-10-17 19:52:24 UTC (rev 2844)
@@ -41,6 +41,10 @@
 	internal = new MessageRouterInternal;
 }
 
+MessageRouter::MessageRouter(const MessageRouter &mr){
+	internal = new MessageRouterInternal(*mr.internal);
+}
+
 MessageRouter::~MessageRouter(){
 	delete internal;
 }

Modified: trunk/libmutil/source/Timestamp.cxx
===================================================================
--- trunk/libmutil/source/Timestamp.cxx	2006-10-17 19:50:20 UTC (rev 2843)
+++ trunk/libmutil/source/Timestamp.cxx	2006-10-17 19:52:24 UTC (rev 2844)
@@ -35,6 +35,7 @@
 
 #ifdef WIN32
 	Timestamp::Timestamp(){}
+	Timestamp::Timestamp(const Timestamp &){}
 #else
 	Timestamp::Timestamp(){
 		tz = new struct timezone;
@@ -44,6 +45,26 @@
 		index = 0;
 		auto_id=-1;
 	}
+	Timestamp::Timestamp(const Timestamp &t):
+			index(t.index),
+			auto_id(t.auto_id),
+			startTime(t.startTime),
+			stopTime(t.stopTime),
+			filename(t.filename)
+	{
+		tz = new struct timezone;
+		memcpy(tz, t.tz, sizeof(struct timezone) );
+
+		values = new struct timeval[ MAX_TIMESTAMPS ];
+		memcpy(values, t.values, MAX_TIMESTAMPS* sizeof(struct timeval) );
+
+		strings = new string[ MAX_TIMESTAMPS + 1];
+		for (int i=0; i<MAX_TIMESTAMPS; i++)
+			strings[i]=t.strings[i];
+
+		ids = new int32_t[MAX_TIMESTAMPS];
+		memcpy(ids, t.ids, MAX_TIMESTAMPS*sizeof(int32_t) );
+	}
 #endif
 
 #ifdef WIN32



More information about the Minisip-devel mailing list