/* * Unicode routines for use inside the server * * Copyright (C) 1999 Alexandre Julliard */ #ifndef __WINE_SERVER_UNICODE_H #define __WINE_SERVER_UNICODE_H #ifndef __WINE_SERVER__ #error This file can only be used in the Wine server #endif #include "config.h" #include #ifdef HAVE_WCTYPE_H #include #endif #include "windef.h" #include "object.h" static inline size_t strlenW( const WCHAR *str ) { const WCHAR *s = str; while (*s) s++; return s - str; } static inline int strcmpW( const WCHAR *str1, const WCHAR *str2 ) { while (*str1 && (*str1 == *str2)) { str1++; str2++; } return *str1 - *str2; } #ifndef HAVE_WCTYPE_H /* FIXME */ #define towupper(ch) (HIBYTE(ch) ? ch : (WCHAR)toupper(LOBYTE(ch))) #endif static inline int strcmpiW( const WCHAR *str1, const WCHAR *str2 ) { while (*str1 && (towupper(*str1) == towupper(*str2))) { str1++; str2++; } return towupper(*str1) - towupper(*str2); } static inline WCHAR *strcpyW( WCHAR *dst, const WCHAR *src ) { const WCHAR *ret = dst; while ((*dst++ = *src++)); return (WCHAR *)ret; } static inline WCHAR *strdupW( const WCHAR *str ) { size_t len = (strlenW(str) + 1) * sizeof(WCHAR); return memdup( str, len ); } extern int dump_strW( const WCHAR *str, size_t len, FILE *f, char escape[2] ); #endif /* __WINE_SERVER_UNICODE_H */