27template <
typename Character>
29 _In_reads_(buffer_last - buffer_first)
char const*
const buffer_first,
35 _ASSERTE((buffer_last - buffer_first) %
sizeof(Character) == 0);
37 Character
const*
const typed_first =
reinterpret_cast<Character
const*
>(buffer_first);
38 Character
const*
const typed_last =
reinterpret_cast<Character
const*
>(buffer_last);
41 for (Character
const* it = typed_first; it != typed_last; ++it)
53 _In_reads_(buffer_last - buffer_first)
char const*
const buffer_first,
60 return count_newlines_of_type<wchar_t>(buffer_first, buffer_last) *
sizeof(
wchar_t);
64 return count_newlines_of_type<char>(buffer_first, buffer_last);
75 __crt_cached_ptd_host&
ptd
84 return lowio_position;
95 if (base_buffer_position !=
_startpos(fh))
113 if (current_buffer_position >
static_cast<__int64>(bytes_read))
120 char const*
const raw_first = raw_buffer;
121#pragma warning(disable:__WARNING_UNUSED_POINTER_ASSIGNMENT)
122 char const*
const raw_last = raw_buffer + bytes_read;
124 char const* raw_it = raw_first;
125 for (
__int64 i = 0;
i != current_buffer_position && raw_it < raw_last; ++
i, ++raw_it)
129 if (raw_it < raw_last - 1 && *(raw_it + 1) ==
LF)
138 return base_buffer_position + (raw_it - raw_first);
149 __crt_cached_ptd_host&
ptd
166 return lowio_position;
181 return lowio_position
182 - (bytes_read / translation_factor)
183 + (buffer_offset / translation_factor);
219 stream.has_crt_buffer() &&
220 !
stream.has_setvbuf_buffer())
227 bytes_read =
stream->_bufsiz;
239 return lowio_position
240 - (bytes_read / translation_factor)
241 + (buffer_offset / translation_factor);
246template <
typename Integer>
264 if (lowio_position < 0)
271 if (!
stream.has_big_buffer())
273 return lowio_position -
stream->_cnt;
309 if (lowio_position == 0)
311 return buffer_offset;
321 buffer_offset /=
sizeof(
wchar_t);
324 return lowio_position + buffer_offset;
337 return static_cast<long>(
result);
349template <
typename Integer>
354 Integer return_value = 0;
359 return_value = common_ftell_nolock<Integer>(
stream,
ptd);
375 __crt_cached_ptd_host
ptd;
381 __crt_cached_ptd_host
ptd;
387 __crt_cached_ptd_host
ptd;
393 __crt_cached_ptd_host
ptd;
_Check_return_opt_ __int64 __cdecl _lseeki64_internal(_In_ int _FileHandle, _In_ __int64 _Offset, _In_ int _Origin, _Inout_ __crt_cached_ptd_host &_Ptd)
__inline char _utf8_no_of_trailbytes(const unsigned char c)
#define _utf8translations(i)
#define _UCRT_VALIDATE_RETURN(ptd, expr, errorcode, retexpr)
_In_ size_t const _In_ int _In_ bool const _In_ unsigned const _In_ __acrt_rounding_mode const _Inout_ __crt_cached_ptd_host & ptd
#define ReadFile(a, b, c, d, e)
static Integer __cdecl common_ftell_nolock(__crt_stdio_stream, __crt_cached_ptd_host &ptd)
static size_t __cdecl buffer_character_size(__crt_lowio_text_mode const text_mode)
static __int64 __cdecl common_ftell_read_mode_nolock(__crt_stdio_stream const stream, __int64 const lowio_position, __int64 const buffer_offset, __crt_cached_ptd_host &ptd)
__int64 __cdecl _ftelli64(FILE *const public_stream)
__int64 __cdecl _ftelli64_nolock(FILE *const public_stream)
static __int64 __cdecl count_newline_bytes(_In_reads_(buffer_last - buffer_first) char const *const buffer_first, _In_reads_(0) char const *const buffer_last, _In_ __crt_lowio_text_mode const text_mode)
static Integer __cdecl common_ftell(__crt_stdio_stream const stream, __crt_cached_ptd_host &ptd)
static bool __cdecl buffer_contains_wide_characters(__crt_lowio_text_mode const text_mode)
long __cdecl ftell(FILE *const public_stream)
static __int64 __cdecl common_ftell_translated_utf8_nolock(__crt_stdio_stream const stream, __int64 const lowio_position, __crt_cached_ptd_host &ptd)
static __int64 __cdecl count_newlines_of_type(_In_reads_(buffer_last - buffer_first) char const *const buffer_first, _In_reads_(0) char const *const buffer_last)
long __cdecl _ftell_nolock(FILE *const public_stream)
__int64 __cdecl _ftelli64_nolock_internal(FILE *const public_stream, __crt_cached_ptd_host &ptd)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_Check_return_ _CRTIMP int __cdecl _fileno(_In_ FILE *_File)
_CRTIMP void __cdecl _unlock_file(_Inout_ FILE *_File)
_CRTIMP void __cdecl _lock_file(_Inout_ FILE *_File)