[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/missing _stdlib.cpp,1.6,1.7 stdlib.h,1.5,1.6

Chris Apers chrilith at users.sourceforge.net
Tue May 25 06:37:00 CEST 2004


Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src/missing
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2046

Modified Files:
	_stdlib.cpp stdlib.h 
Log Message:
New strtol function, bsearch now use system call, cleanup

Index: _stdlib.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/missing/_stdlib.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- _stdlib.cpp	6 Jan 2004 12:45:25 -0000	1.6
+++ _stdlib.cpp	25 May 2004 13:36:02 -0000	1.7
@@ -21,17 +21,31 @@
  */
 
 #include "stdlib.h"
-///////////////////////////////////////////////////////////////////////////////
-void *bsearch(const void *key, const void *base, UInt32 nmemb, 
-				UInt32 size, int (*compar)(const void *, const void *)) {
-	UInt32 i;
 
-	for (i=0; i<nmemb; i++) 
-		if (compar(key, (void*)((UInt32)base + size * i)) == 0)
-			return (void*)((UInt32)base + size * i);
+void *bsearch(const void *key, const void *base, UInt32 nmemb, UInt32 size, int (*compar)(const void *, const void *)) {
+	Int32 position;
+	
+	if (SysBinarySearch(base, nmemb, size, (SearchFuncPtr)compar, key, 0, &position, true))
+		return (void *)((UInt32)base + size * position);
+	
 	return NULL;
 }
-///////////////////////////////////////////////////////////////////////////////
+
+long strtol(const char *s, char **endptr, int base) {
+	// WARNING : only base = 10 supported
+	long val = StrAToI(s);
+	
+	if (endptr) {
+		Char str[maxStrIToALen];
+		StrIToA(str, val);
+		
+		if (StrNCompare(s, str, StrLen(str)) == 0)
+			*endptr = (char *)s + StrLen(str);
+	}
+
+	return val;
+}
+
 MemPtr calloc(UInt32 nelem, UInt32 elsize) {
 	MemPtr newP;
 	UInt32 size = nelem*elsize;
@@ -43,15 +57,14 @@
 
 	return newP;
 }
-///////////////////////////////////////////////////////////////////////////////
+
 Err free(MemPtr memP) {
 	if (memP)
 		return MemPtrFree(memP);
 	return memErrInvalidParam;
 }
-///////////////////////////////////////////////////////////////////////////////
-MemPtr realloc(MemPtr oldP, UInt32 size)
-{
+
+MemPtr realloc(MemPtr oldP, UInt32 size) {
 	
 	if (oldP != NULL)
 		if (MemPtrResize(oldP,size) == 0)
@@ -66,9 +79,8 @@
 	}	
 	return newP;
 }
-///////////////////////////////////////////////////////////////////////////////
-void exit(Int16 status)
-{
+
+void exit(Int16 status) {
 	// need to change this
 	EventType event;
 	event.eType = keyDownEvent;

Index: stdlib.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/missing/stdlib.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- stdlib.h	20 Jan 2004 14:33:03 -0000	1.5
+++ stdlib.h	25 May 2004 13:36:02 -0000	1.6
@@ -25,7 +25,6 @@
 
 #include <PalmOS.h>
 #include "MemGlue.h"
-#include "mathlib.h"
 
 #define atoi				StrAToI
 #define atol				StrAToI
@@ -33,17 +32,17 @@
 //#define abs					fabs
 #define	malloc(a)			MemGluePtrNew(a)
 //#define free				MemPtrFree
-#define strtol(a,b,c)		StrAToI(a)
+//#define strtol(a,b,c)		StrAToI(a)
 #define qsort(a,b,c,d)		SysQSort((a), (b), (c), (CmpFuncPtr)(&d), 0);
 #define rand()				SysRandom(0)
 #define abort()
+#define strtoul(a,b,c)		((unsigned long)strtol(a,b,c))
 
-MemPtr realloc(MemPtr oldP, UInt32 size);
-MemPtr calloc(UInt32 nelem, UInt32 elsize);
-Err free(MemPtr memP);
-void exit(Int16 status);
-void *bsearch(const void *key, const void *base, UInt32 nmemb, 
-				UInt32 size, int (*compar)(const void *, const void *));
-
+void	*bsearch	(const void *key, const void *base, UInt32 nmemb, UInt32 size, int (*compar)(const void *, const void *));
+MemPtr	 calloc		(UInt32 nelem, UInt32 elsize);
+void	 exit		(Int16 status);
+Err		 free		(MemPtr memP);
+MemPtr	 realloc	(MemPtr oldP, UInt32 size);
+long	 strtol		(const char *s, char **endptr, int base);
 
 #endif





More information about the Scummvm-git-logs mailing list