/* * Copyright 2010 Piotr Caban for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include #include "msvcp90.h" #include "stdio.h" #include "windef.h" #include "winbase.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(msvcp90); /* char_traits */ /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */ void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign) { *ch = *assign; } /* ?eq@?$char_traits@D@std@@SA_NABD0@Z */ MSVCP_BOOL CDECL MSVCP_char_traits_char_eq(const char *ch1, const char *ch2) { return *ch1 == *ch2; } /* ?lt@?$char_traits@D@std@@SA_NABD0@Z */ MSVCP_BOOL CDECL MSVCP_char_traits_lt(const char *ch1, const char *ch2) { return *ch1 < *ch2; } /*?compare@?$char_traits@D@std@@SAHPBD0I@Z */ int CDECL MSVCP_char_traits_char_compare( const char *s1, const char *s2, unsigned int count) { int ret = memcmp(s1, s2, count); return (ret>0 ? 1 : (ret<0 ? -1 : 0)); } /* ?length@?$char_traits@D@std@@SAIPBD@Z */ int CDECL MSVCP_char_traits_char_length(const char *str) { return strlen(str); } /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */ char* CDECL MSVCP_char_traits_char__Copy_s(char *dest, unsigned int size, const char *src, unsigned int count) { if(!dest || !src || size */ /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */ void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch, const wchar_t *assign) { *ch = *assign; } /* ?eq@?$char_traits@_W@std@@SA_NAB_W0@Z */ MSVCP_BOOL CDECL MSVCP_char_traits_wchar_eq(wchar_t *ch1, wchar_t *ch2) { return *ch1 == *ch2; } /* ?lt@?$char_traits@_W@std@@SA_NAB_W0@Z */ MSVCP_BOOL CDECL MSVCP_char_traits_wchar_lt(const wchar_t *ch1, const wchar_t *ch2) { return *ch1 < *ch2; } /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */ int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1, const wchar_t *s2, unsigned int count) { int ret = memcmp(s1, s2, sizeof(wchar_t[count])); return (ret>0 ? 1 : (ret<0 ? -1 : 0)); } /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */ int CDECL MSVCP_char_traits_wchar_length(const wchar_t *str) { return wcslen((WCHAR*)str); } /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */ wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest, unsigned int size, const wchar_t *src, unsigned int count) { if(!dest || !src || size */ /* ?assign@?$char_traits@G@std@@SAXAAGABG@Z */ void CDECL MSVCP_char_traits_short_assign(unsigned short *ch, const unsigned short *assign) { *ch = *assign; } /* ?eq@?$char_traits@G@std@@SA_NABG0@Z */ MSVCP_BOOL CDECL MSVCP_char_traits_short_eq(const unsigned short *ch1, const unsigned short *ch2) { return *ch1 == *ch2; } /* ?lt@?$char_traits@G@std@@SA_NABG0@Z */ MSVCP_BOOL CDECL MSVCP_char_traits_short_lt(const unsigned short *ch1, const unsigned short *ch2) { return *ch1 < *ch2; } /* ?compare@?$char_traits@G@std@@SAHPBG0I@Z */ int CDECL MSVCP_char_traits_short_compare(const unsigned short *s1, const unsigned short *s2, unsigned int count) { unsigned int i; for(i=0; i