diff options
author | Henri Herscher <henri@oreka.org> | 2006-08-29 19:36:32 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-08-29 19:36:32 +0000 |
commit | c4430187fd4c172f1c37c3b37ad70aaa5c4fa736 (patch) | |
tree | 91a51449c71153b7411a487c3e55dbe28b6d8e6a | |
parent | 7c0d0c7e260577acfec500729449622be49d45ec (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.cpp | 104 | ||||
-rw-r--r-- | orkbasecxx/MemUtils.h | 29 | ||||
-rw-r--r-- | orkbasecxx/OrkBase.dsp | 8 |
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 |