summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2006-08-29 19:36:32 +0000
committerHenri Herscher <henri@oreka.org>2006-08-29 19:36:32 +0000
commitc4430187fd4c172f1c37c3b37ad70aaa5c4fa736 (patch)
tree91a51449c71153b7411a487c3e55dbe28b6d8e6a
parent7c0d0c7e260577acfec500729449622be49d45ec (diff)
Added memory handling routines.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@331 09dcff7a-b715-0410-9601-b79a96267cd0
-rw-r--r--orkbasecxx/MemUtils.cpp104
-rw-r--r--orkbasecxx/MemUtils.h29
-rw-r--r--orkbasecxx/OrkBase.dsp8
3 files changed, 141 insertions, 0 deletions
diff --git a/orkbasecxx/MemUtils.cpp b/orkbasecxx/MemUtils.cpp
new file mode 100644
index 0000000..22f69a3
--- /dev/null
+++ b/orkbasecxx/MemUtils.cpp
@@ -0,0 +1,104 @@
+/*
+ * Oreka -- A media capture and retrieval platform
+ *
+ * Copyright (C) 2005, orecx LLC
+ *
+ * http://www.orecx.com
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License.
+ * Please refer to http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#include "ace/OS_NS_stdlib.h"
+#include "ace/OS_NS_strings.h"
+#include "ace/OS_NS_ctype.h"
+
+#include "MemUtils.h"
+
+// Convert a piece of memory to hex string
+void MemToHex(unsigned char* input, size_t len, CStdString&output)
+{
+ char byteAsHex[10];
+ for(int i=0; i<len; i++)
+ {
+ sprintf(byteAsHex, "%.2x", input[i]);
+ output += byteAsHex;
+ }
+}
+
+// find the address that follows the given search string between start and stop pointers - case insensitive
+char* MemFindAfter(char* toFind, char* start, char* stop)
+{
+ for(char * ptr = start; (ptr<stop) && (ptr != NULL); ptr = (char *)memchr(ptr+1, toFind[0],(stop - start)))
+ {
+ if(ACE_OS::strncasecmp(toFind, ptr, strlen(toFind)) == 0)
+ {
+ return (ptr+strlen(toFind));
+ }
+ }
+ return NULL;
+}
+
+char* MemFindEOL(char* start, char* limit)
+{
+ char* c = start;
+ while(*c != '\r' && *c != '\n' && c<limit)
+ {
+ c++;
+ }
+ if(*c == '\r' || *c == '\n')
+ {
+ return c;
+ }
+ return start;
+}
+
+// Grabs a string in memory until encountering null char, a space a CR or LF chars
+void MemGrabToken(char* in, CStdString& out)
+{
+ for(char* c = in; *c != '\0' && *c != 0x20 && *c != 0x0D && *c != 0x0A; c = c+1)
+ {
+ out += *c;
+ }
+}
+
+void MemGrabAlphaNumToken(char * in, char* limit, CStdString& out)
+{
+ // Look for first alphanum character
+ char* start = in;
+ while (!ACE_OS::ace_isalnum(*start) && start<limit)
+ {
+ start++;
+ }
+
+ if(start != (limit -1))
+ {
+ for(char* c = start; ACE_OS::ace_isalnum(*c); c = c+1)
+ {
+ out += *c;
+ }
+ }
+}
+
+void MemGrabString(char* start, char* stop, CStdString& out)
+{
+ char* c = start;
+ while(c <= stop)
+ {
+ out += *c++;
+ }
+}
+
+// Grabs a line of characters in memory from start pointer
+// returns the end of line
+char* MemGrabLine(char* start, char* limit, CStdString& out)
+{
+ char* c = start;
+ while(c < limit && *c != 0x0D && *c != 0x0A)
+ {
+ out += *c++;
+ }
+ return c;
+}
diff --git a/orkbasecxx/MemUtils.h b/orkbasecxx/MemUtils.h
new file mode 100644
index 0000000..ddbd070
--- /dev/null
+++ b/orkbasecxx/MemUtils.h
@@ -0,0 +1,29 @@
+/*
+ * Oreka -- A media capture and retrieval platform
+ *
+ * Copyright (C) 2005, orecx LLC
+ *
+ * http://www.orecx.com
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License.
+ * Please refer to http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#ifndef __MEMUTILS_H__
+#define __MEMUTILS_H__
+
+#include "StdString.h"
+
+void MemToHex(unsigned char* input, size_t len, CStdString&output);
+char* MemFindAfter(char* toFind, char* start, char* stop);
+char* MemFindEOL(char* start, char* limit);
+void MemGrabToken(char* in, CStdString& out);
+void MemGrabAlphaNumToken(char * in, char* limit, CStdString& out);
+void MemGrabString(char* start, char* stop, CStdString& out);
+char* MemGrabLine(char* start, char* limit, CStdString& out);
+
+
+#endif
+
diff --git a/orkbasecxx/OrkBase.dsp b/orkbasecxx/OrkBase.dsp
index 2b959ce..b3d2a89 100644
--- a/orkbasecxx/OrkBase.dsp
+++ b/orkbasecxx/OrkBase.dsp
@@ -376,6 +376,14 @@ SOURCE=.\LogManager.h
# End Source File
# Begin Source File
+SOURCE=.\MemUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\MemUtils.h
+# End Source File
+# Begin Source File
+
SOURCE=.\MultiThreadedServer.cpp
# End Source File
# Begin Source File