summaryrefslogtreecommitdiff
path: root/pjlib/include
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-02-14 21:04:47 +0000
committerBenny Prijono <bennylp@teluu.com>2006-02-14 21:04:47 +0000
commitc672d0e3ecea6fe784250b5099f8126c0ff18ad1 (patch)
tree6540b7d4175fe7f2648270329345c2f50ff91be9 /pjlib/include
parentcec9d0501ccdf37cb82e398df6ec4e5bd4e1ac01 (diff)
Changed the unicode string API and ported to ARM/WinCE
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@182 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/include')
-rw-r--r--pjlib/include/pj/compat/m_armv4.h (renamed from pjlib/include/pj/compat/m_arm.h)10
-rw-r--r--pjlib/include/pj/compat/socket.h3
-rw-r--r--pjlib/include/pj/compat/string.h81
-rw-r--r--pjlib/include/pj/config.h2
-rw-r--r--pjlib/include/pj/types.h17
-rw-r--r--pjlib/include/pjlib.h1
6 files changed, 97 insertions, 17 deletions
diff --git a/pjlib/include/pj/compat/m_arm.h b/pjlib/include/pj/compat/m_armv4.h
index b81ce32c..e43d4156 100644
--- a/pjlib/include/pj/compat/m_arm.h
+++ b/pjlib/include/pj/compat/m_armv4.h
@@ -16,11 +16,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef __PJ_COMPAT_M_ARM_H__
-#define __PJ_COMPAT_M_ARM_H__
+#ifndef __PJ_COMPAT_M_ARMV4_H__
+#define __PJ_COMPAT_M_ARMV4_H__
/**
- * @file m_arm.h
+ * @file m_armv4.h
* @brief Describes ARM family processor specifics.
*/
@@ -28,11 +28,11 @@
* This file covers PJ_M_ARMV4 etc.
*/
-#define PJ_M_NAME "ARM"
+#define PJ_M_NAME "armv4"
#define PJ_HAS_PENTIUM 0
#define PJ_IS_LITTLE_ENDIAN 1
#define PJ_IS_BIG_ENDIAN 0
-#endif /* __PJ_COMPAT_M_ARM_H__ */
+#endif /* __PJ_COMPAT_M_ARMV4_H__ */
diff --git a/pjlib/include/pj/compat/socket.h b/pjlib/include/pj/compat/socket.h
index ee4f3a6e..e3f68b5d 100644
--- a/pjlib/include/pj/compat/socket.h
+++ b/pjlib/include/pj/compat/socket.h
@@ -76,7 +76,8 @@
/*
* Define common errors.
*/
-#ifdef PJ_WIN32
+#if (defined(PJ_WIN32) && PJ_WIN32!=0) || \
+ (defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0)
# define OSERR_EWOULDBLOCK WSAEWOULDBLOCK
# define OSERR_EINPROGRESS WSAEINPROGRESS
# define OSERR_ECONNRESET WSAECONNRESET
diff --git a/pjlib/include/pj/compat/string.h b/pjlib/include/pj/compat/string.h
index fd041230..8fd45286 100644
--- a/pjlib/include/pj/compat/string.h
+++ b/pjlib/include/pj/compat/string.h
@@ -24,6 +24,16 @@
* @brief Provides string manipulation functions found in ANSI string.h.
*/
+/**
+ * Native char type, which will be equal to wchar_t for Unicode
+ * and char for ANSI.
+ */
+#if defined(PJ_NATIVE_STRING_IS_UNICODE) && PJ_NATIVE_STRING_IS_UNICODE!=0
+typedef wchar_t pj_char_t;
+#else
+typedef char pj_char_t;
+#endif
+
#if defined(PJ_HAS_STRING_H) && PJ_HAS_STRING_H != 0
# include <string.h>
#else
@@ -41,21 +51,72 @@
# define strncasecmp strnicmp
# endif
# define snprintf _snprintf
+# define wcsicmp _wcsicmp
+# define wcsnicmp _wcsnicmp
#else
# define stricmp strcasecmp
# define strnicmp strncasecmp
+
+# if defined(PJ_NATIVE_STRING_IS_UNICODE) && PJ_NATIVE_STRING_IS_UNICODE!=0
+# error "Implement Unicode string functions"
+# endif
#endif
-#define pj_native_strcmp strcmp
-#define pj_native_strncmp strncmp
-#define pj_native_strlen strlen
-#define pj_native_strcpy strcpy
-#define pj_native_strstr strstr
-#define pj_native_strchr strchr
-#define pj_native_strcasecmp strcasecmp
-#define pj_native_stricmp strcasecmp
-#define pj_native_strncasecmp strncasecmp
-#define pj_native_strnicmp strncasecmp
+#define pj_ansi_strcmp strcmp
+#define pj_ansi_strncmp strncmp
+#define pj_ansi_strlen strlen
+#define pj_ansi_strcpy strcpy
+#define pj_ansi_strcat strcat
+#define pj_ansi_strstr strstr
+#define pj_ansi_strchr strchr
+#define pj_ansi_strcasecmp strcasecmp
+#define pj_ansi_stricmp strcasecmp
+#define pj_ansi_strncasecmp strncasecmp
+#define pj_ansi_strnicmp strncasecmp
+#define pj_ansi_sprintf sprintf
+
+#define pj_unicode_strcmp wcscmp
+#define pj_unicode_strncmp wcsncmp
+#define pj_unicode_strlen wcslen
+#define pj_unicode_strcpy wcscpy
+#define pj_unicode_strcat wcscat
+#define pj_unicode_strstr wcsstr
+#define pj_unicode_strchr wcschr
+#define pj_unicode_strcasecmp wcsicmp
+#define pj_unicode_stricmp wcsicmp
+#define pj_unicode_strncasecmp wcsnicmp
+#define pj_unicode_strnicmp wcsnicmp
+#define pj_unicode_sprintf swprintf
+
+
+#if defined(PJ_NATIVE_STRING_IS_UNICODE) && PJ_NATIVE_STRING_IS_UNICODE!=0
+# define pj_native_strcmp pj_unicode_strcmp
+# define pj_native_strncmp pj_unicode_strncmp
+# define pj_native_strlen pj_unicode_strlen
+# define pj_native_strcpy pj_unicode_strcpy
+# define pj_native_strcat pj_unicode_strcat
+# define pj_native_strstr pj_unicode_strstr
+# define pj_native_strchr pj_unicode_strchr
+# define pj_native_strcasecmp pj_unicode_strcasecmp
+# define pj_native_stricmp pj_unicode_stricmp
+# define pj_native_strncasecmp pj_unicode_strncasecmp
+# define pj_native_strnicmp pj_unicode_strnicmp
+# define pj_native_sprintf pj_unicode_sprintf
+#else
+# define pj_native_strcmp pj_ansi_strcmp
+# define pj_native_strncmp pj_ansi_strncmp
+# define pj_native_strlen pj_ansi_strlen
+# define pj_native_strcpy pj_ansi_strcpy
+# define pj_native_strcat pj_ansi_strcat
+# define pj_native_strstr pj_ansi_strstr
+# define pj_native_strchr pj_ansi_strchr
+# define pj_native_strcasecmp pj_ansi_strcasecmp
+# define pj_native_stricmp pj_ansi_stricmp
+# define pj_native_strncasecmp pj_ansi_strncasecmp
+# define pj_native_strnicmp pj_ansi_strnicmp
+# define pj_native_sprintf pj_ansi_sprintf
+#endif
+
#endif /* __PJ_COMPAT_STRING_H__ */
diff --git a/pjlib/include/pj/config.h b/pjlib/include/pj/config.h
index b836b53b..d09795a4 100644
--- a/pjlib/include/pj/config.h
+++ b/pjlib/include/pj/config.h
@@ -68,7 +68,7 @@
#elif defined (PJ_M_SPARC) && PJ_M_SPARC != 0
# include <pj/compat/m_sparc.h>
#elif defined (PJ_M_ARMV4) && PJ_M_ARMV4 != 0
-# include <pj/compat/m_arm.h>
+# include <pj/compat/m_armv4.h>
#else
# error "Please specify target machine."
#endif
diff --git a/pjlib/include/pj/types.h b/pjlib/include/pj/types.h
index 5b22f75b..69d440a9 100644
--- a/pjlib/include/pj/types.h
+++ b/pjlib/include/pj/types.h
@@ -68,6 +68,23 @@ typedef int pj_status_t;
/** Boolean. */
typedef int pj_bool_t;
+/** Native char type, which will be equal to wchar_t for Unicode
+ * and char for ANSI. */
+#if defined(PJ_NATIVE_STRING_IS_UNICODE) && PJ_NATIVE_STRING_IS_UNICODE!=0
+ typedef wchar_t pj_char_t;
+#else
+ typedef char pj_char_t;
+#endif
+
+/** This macro creates Unicode or ANSI literal string depending whether
+ * native platform string is Unicode or ANSI. */
+#if defined(PJ_NATIVE_STRING_IS_UNICODE) && PJ_NATIVE_STRING_IS_UNICODE!=0
+# define PJ_T(literal_str) L##literal_str
+#else
+# define PJ_T(literal_str) literal_str
+#endif
+
+
/** Status is OK. */
#define PJ_SUCCESS 0
diff --git a/pjlib/include/pjlib.h b/pjlib/include/pjlib.h
index 45a9e495..2e2ffd0d 100644
--- a/pjlib/include/pjlib.h
+++ b/pjlib/include/pjlib.h
@@ -48,6 +48,7 @@
#include <pj/sock_select.h>
#include <pj/string.h>
#include <pj/timer.h>
+#include <pj/unicode.h>
#include <pj/compat/high_precision.h>