Piotr Caban : msvcp90: Added basic_istream<char>::getline(basic_string<char >) implementation.
Alexandre Julliard
julliard at winehq.org
Tue Jun 12 13:36:34 CDT 2012
Module: wine
Branch: master
Commit: 0db98a30b99bcfc6135a4608d7bb34f61af375d1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0db98a30b99bcfc6135a4608d7bb34f61af375d1
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Jun 12 18:14:09 2012 +0200
msvcp90: Added basic_istream<char>::getline(basic_string<char>) implementation.
---
dlls/msvcp90/ios.c | 33 +++++++++++++++++++++++++++++++++
dlls/msvcp90/msvcp90.h | 2 ++
dlls/msvcp90/msvcp90.spec | 8 ++++----
3 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c
index 8f4c216..97edacf 100644
--- a/dlls/msvcp90/ios.c
+++ b/dlls/msvcp90/ios.c
@@ -4630,6 +4630,39 @@ basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *
return NULL;
}
+/* ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAAV?$basic_istream at DU?$char_traits at D@std@@@0 at AAV10@AAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at D@Z */
+/* ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAEAV?$basic_istream at DU?$char_traits at D@std@@@0 at AEAV10@AEAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at D@Z */
+basic_istream_char* __cdecl basic_istream_char_getline_str_delim(
+ basic_istream_char *istream, basic_string_char *str, char delim)
+{
+ IOSB_iostate state = IOSTATE_failbit;
+ int c;
+
+ TRACE("(%p %p %c)\n", istream, str, delim);
+
+ if(basic_istream_char_sentry_create(istream, TRUE)) {
+ MSVCP_basic_string_char_clear(str);
+
+ for(c = basic_istream_char_get(istream); c!=delim && c!=EOF;
+ c = basic_istream_char_get(istream)) {
+ state = IOSTATE_goodbit;
+ MSVCP_basic_string_char_append_ch(str, c);
+ }
+ }
+ basic_istream_char_sentry_destroy(istream);
+
+ basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
+ return istream;
+}
+
+/* ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAAV?$basic_istream at DU?$char_traits at D@std@@@0 at AAV10@AAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0@@Z */
+/* ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAEAV?$basic_istream at DU?$char_traits at D@std@@@0 at AEAV10@AEAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0@@Z */
+basic_istream_char* __cdecl basic_istream_char_getline_str(
+ basic_istream_char *istream, basic_string_char *str)
+{
+ return basic_istream_char_getline_str_delim(istream, str, '\n');
+}
+
/* ??0?$basic_ifstream at DU?$char_traits at D@std@@@std@@QAE at XZ */
/* ??0?$basic_ifstream at DU?$char_traits at D@std@@@std@@QEAA at XZ */
DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h
index ba5b0a7..5ca938c 100644
--- a/dlls/msvcp90/msvcp90.h
+++ b/dlls/msvcp90/msvcp90.h
@@ -247,6 +247,8 @@ basic_string_char* __stdcall MSVCP_basic_string_char_ctor_cstr(basic_string_char
basic_string_char* __stdcall MSVCP_basic_string_char_copy_ctor(basic_string_char*, const basic_string_char*);
void __stdcall MSVCP_basic_string_char_dtor(basic_string_char*);
const char* __stdcall MSVCP_basic_string_char_c_str(const basic_string_char*);
+void __thiscall MSVCP_basic_string_char_clear(basic_string_char*);
+basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(basic_string_char*, char);
#define BUF_SIZE_WCHAR 8
typedef struct _basic_string_wchar
diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index 03e6c1a..0a6b24a 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -386,10 +386,10 @@
@ stub -arch=win64 ??$exp at N@std@@YA?AV?$complex at N@0 at AEBV10@@Z
@ stub -arch=win32 ??$exp at O@std@@YA?AV?$complex at O@0 at ABV10@@Z
@ stub -arch=win64 ??$exp at O@std@@YA?AV?$complex at O@0 at AEBV10@@Z
-@ stub -arch=win32 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAAV?$basic_istream at DU?$char_traits at D@std@@@0 at AAV10@AAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0@@Z
-@ stub -arch=win64 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAEAV?$basic_istream at DU?$char_traits at D@std@@@0 at AEAV10@AEAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0@@Z
-@ stub -arch=win32 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAAV?$basic_istream at DU?$char_traits at D@std@@@0 at AAV10@AAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at D@Z
-@ stub -arch=win64 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAEAV?$basic_istream at DU?$char_traits at D@std@@@0 at AEAV10@AEAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at D@Z
+@ cdecl -arch=win32 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAAV?$basic_istream at DU?$char_traits at D@std@@@0 at AAV10@AAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0@@Z(ptr ptr) basic_istream_char_getline_str
+@ cdecl -arch=win64 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAEAV?$basic_istream at DU?$char_traits at D@std@@@0 at AEAV10@AEAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0@@Z(ptr ptr) basic_istream_char_getline_str
+@ cdecl -arch=win32 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAAV?$basic_istream at DU?$char_traits at D@std@@@0 at AAV10@AAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at D@Z(ptr ptr long) basic_istream_char_getline_str_delim
+@ cdecl -arch=win64 ??$getline at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@YAAEAV?$basic_istream at DU?$char_traits at D@std@@@0 at AEAV10@AEAV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at D@Z(ptr ptr long) basic_istream_char_getline_str_delim
@ stub -arch=win32 ??$getline at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@YAAAV?$basic_istream at GU?$char_traits at G@std@@@0 at AAV10@AAV?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@0@@Z
@ stub -arch=win64 ??$getline at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@YAAEAV?$basic_istream at GU?$char_traits at G@std@@@0 at AEAV10@AEAV?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@0@@Z
@ stub -arch=win32 ??$getline at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@YAAAV?$basic_istream at GU?$char_traits at G@std@@@0 at AAV10@AAV?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@0 at G@Z
More information about the wine-cvs
mailing list