Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: xfa/fgas/localization/fgas_datetime.cpp

Issue 1821043003: Remove FX_WORD in favor of uint16_t. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Use stdint.h directly, bitfield minefield. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fgas/localization/fgas_datetime.h ('k') | xfa/fgas/localization/fgas_locale.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/include/fxcrt/fx_system.h" 7 #include "core/include/fxcrt/fx_system.h"
8 #include "xfa/fgas/localization/fgas_datetime.h" 8 #include "xfa/fgas/localization/fgas_datetime.h"
9 9
10 #if _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_ANDROID_ || \ 10 #if _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_ANDROID_ || \
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 if (iDays < iMonthDays) { 117 if (iDays < iMonthDays) {
118 break; 118 break;
119 } 119 }
120 iMonth++; 120 iMonth++;
121 iDays -= iMonthDays; 121 iDays -= iMonthDays;
122 } 122 }
123 iDay += (uint8_t)iDays; 123 iDay += (uint8_t)iDays;
124 } 124 }
125 125
126 struct FXUT_SYSTEMTIME { 126 struct FXUT_SYSTEMTIME {
127 FX_WORD wYear; 127 uint16_t wYear;
128 FX_WORD wMonth; 128 uint16_t wMonth;
129 FX_WORD wDayOfWeek; 129 uint16_t wDayOfWeek;
130 FX_WORD wDay; 130 uint16_t wDay;
131 FX_WORD wHour; 131 uint16_t wHour;
132 FX_WORD wMinute; 132 uint16_t wMinute;
133 FX_WORD wSecond; 133 uint16_t wSecond;
134 FX_WORD wMilliseconds; 134 uint16_t wMilliseconds;
135 }; 135 };
136 136
137 void CFX_Unitime::Now() { 137 void CFX_Unitime::Now() {
138 FXUT_SYSTEMTIME utLocal; 138 FXUT_SYSTEMTIME utLocal;
139 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ 139 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \
140 _FX_OS_ == _FX_WIN64_ 140 _FX_OS_ == _FX_WIN64_
141 ::GetLocalTime((LPSYSTEMTIME)&utLocal); 141 ::GetLocalTime((LPSYSTEMTIME)&utLocal);
142 #elif _FX_OS_ != _FX_EMBEDDED_ 142 #elif _FX_OS_ != _FX_EMBEDDED_
143 #if 1 143 #if 1
144 timeval curTime; 144 timeval curTime;
145 gettimeofday(&curTime, NULL); 145 gettimeofday(&curTime, NULL);
146 #else 146 #else
147 struct timespec curTime; 147 struct timespec curTime;
148 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &curTime); 148 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &curTime);
149 #endif 149 #endif
150 struct tm st; 150 struct tm st;
151 localtime_r(&curTime.tv_sec, &st); 151 localtime_r(&curTime.tv_sec, &st);
152 utLocal.wYear = st.tm_year + 1900; 152 utLocal.wYear = st.tm_year + 1900;
153 utLocal.wMonth = st.tm_mon + 1; 153 utLocal.wMonth = st.tm_mon + 1;
154 utLocal.wDayOfWeek = st.tm_wday; 154 utLocal.wDayOfWeek = st.tm_wday;
155 utLocal.wDay = st.tm_mday; 155 utLocal.wDay = st.tm_mday;
156 utLocal.wHour = st.tm_hour; 156 utLocal.wHour = st.tm_hour;
157 utLocal.wMinute = st.tm_min; 157 utLocal.wMinute = st.tm_min;
158 utLocal.wSecond = st.tm_sec; 158 utLocal.wSecond = st.tm_sec;
159 utLocal.wMilliseconds = curTime.tv_usec / 1000; 159 utLocal.wMilliseconds = curTime.tv_usec / 1000;
160 #endif 160 #endif
161 Set(utLocal.wYear, (uint8_t)utLocal.wMonth, (uint8_t)utLocal.wDay, 161 Set(utLocal.wYear, (uint8_t)utLocal.wMonth, (uint8_t)utLocal.wDay,
162 (uint8_t)utLocal.wHour, (uint8_t)utLocal.wMinute, 162 (uint8_t)utLocal.wHour, (uint8_t)utLocal.wMinute,
163 (uint8_t)utLocal.wSecond, (FX_WORD)utLocal.wMilliseconds); 163 (uint8_t)utLocal.wSecond, (uint16_t)utLocal.wMilliseconds);
164 } 164 }
165 void CFX_Unitime::SetGMTime() { 165 void CFX_Unitime::SetGMTime() {
166 FXUT_SYSTEMTIME utLocal; 166 FXUT_SYSTEMTIME utLocal;
167 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ 167 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \
168 _FX_OS_ == _FX_WIN64_ 168 _FX_OS_ == _FX_WIN64_
169 ::GetSystemTime((LPSYSTEMTIME)&utLocal); 169 ::GetSystemTime((LPSYSTEMTIME)&utLocal);
170 #elif _FX_OS_ != _FX_EMBEDDED_ 170 #elif _FX_OS_ != _FX_EMBEDDED_
171 #if 1 171 #if 1
172 timeval curTime; 172 timeval curTime;
173 gettimeofday(&curTime, NULL); 173 gettimeofday(&curTime, NULL);
174 #else 174 #else
175 struct timespec curTime; 175 struct timespec curTime;
176 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &curTime); 176 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &curTime);
177 #endif 177 #endif
178 struct tm st; 178 struct tm st;
179 gmtime_r(&curTime.tv_sec, &st); 179 gmtime_r(&curTime.tv_sec, &st);
180 utLocal.wYear = st.tm_year + 1900; 180 utLocal.wYear = st.tm_year + 1900;
181 utLocal.wMonth = st.tm_mon + 1; 181 utLocal.wMonth = st.tm_mon + 1;
182 utLocal.wDayOfWeek = st.tm_wday; 182 utLocal.wDayOfWeek = st.tm_wday;
183 utLocal.wDay = st.tm_mday; 183 utLocal.wDay = st.tm_mday;
184 utLocal.wHour = st.tm_hour; 184 utLocal.wHour = st.tm_hour;
185 utLocal.wMinute = st.tm_min; 185 utLocal.wMinute = st.tm_min;
186 utLocal.wSecond = st.tm_sec; 186 utLocal.wSecond = st.tm_sec;
187 utLocal.wMilliseconds = curTime.tv_usec / 1000; 187 utLocal.wMilliseconds = curTime.tv_usec / 1000;
188 #endif 188 #endif
189 Set(utLocal.wYear, (uint8_t)utLocal.wMonth, (uint8_t)utLocal.wDay, 189 Set(utLocal.wYear, (uint8_t)utLocal.wMonth, (uint8_t)utLocal.wDay,
190 (uint8_t)utLocal.wHour, (uint8_t)utLocal.wMinute, 190 (uint8_t)utLocal.wHour, (uint8_t)utLocal.wMinute,
191 (uint8_t)utLocal.wSecond, (FX_WORD)utLocal.wMilliseconds); 191 (uint8_t)utLocal.wSecond, (uint16_t)utLocal.wMilliseconds);
192 } 192 }
193 void CFX_Unitime::Set(int32_t year, 193 void CFX_Unitime::Set(int32_t year,
194 uint8_t month, 194 uint8_t month,
195 uint8_t day, 195 uint8_t day,
196 uint8_t hour, 196 uint8_t hour,
197 uint8_t minute, 197 uint8_t minute,
198 uint8_t second, 198 uint8_t second,
199 FX_WORD millisecond) { 199 uint16_t millisecond) {
200 FXSYS_assert(hour <= 23); 200 FXSYS_assert(hour <= 23);
201 FXSYS_assert(minute <= 59); 201 FXSYS_assert(minute <= 59);
202 FXSYS_assert(second <= 59); 202 FXSYS_assert(second <= 59);
203 FXSYS_assert(millisecond <= 999); 203 FXSYS_assert(millisecond <= 999);
204 m_iUnitime = (int64_t)hour * g_FXMillisecondsPerHour + 204 m_iUnitime = (int64_t)hour * g_FXMillisecondsPerHour +
205 (int64_t)minute * g_FXMillisecondsPerMinute + 205 (int64_t)minute * g_FXMillisecondsPerMinute +
206 (int64_t)second * g_FXMillisecondsPerSecond + millisecond; 206 (int64_t)second * g_FXMillisecondsPerSecond + millisecond;
207 if (year > 0) { 207 if (year > 0) {
208 m_iUnitime = 208 m_iUnitime =
209 m_iUnitime + 209 m_iUnitime +
(...skipping 21 matching lines...) Expand all
231 FX_DaysToDate(GetDayOfAD(), iYear, iMonth, iDay); 231 FX_DaysToDate(GetDayOfAD(), iYear, iMonth, iDay);
232 return iDay; 232 return iDay;
233 } 233 }
234 FX_WEEKDAY CFX_Unitime::GetDayOfWeek() const { 234 FX_WEEKDAY CFX_Unitime::GetDayOfWeek() const {
235 int32_t v = (int32_t)((m_iUnitime / g_FXMillisecondsPerDay + 1) % 7); 235 int32_t v = (int32_t)((m_iUnitime / g_FXMillisecondsPerDay + 1) % 7);
236 if (v < 0) { 236 if (v < 0) {
237 v += 7; 237 v += 7;
238 } 238 }
239 return (FX_WEEKDAY)v; 239 return (FX_WEEKDAY)v;
240 } 240 }
241 FX_WORD CFX_Unitime::GetDayOfYear() const { 241 uint16_t CFX_Unitime::GetDayOfYear() const {
242 int32_t iYear; 242 int32_t iYear;
243 uint8_t iMonth, iDay; 243 uint8_t iMonth, iDay;
244 FX_DaysToDate(GetDayOfAD(), iYear, iMonth, iDay); 244 FX_DaysToDate(GetDayOfAD(), iYear, iMonth, iDay);
245 return FX_DaysBeforeMonthInYear(iYear, iMonth) + iDay; 245 return FX_DaysBeforeMonthInYear(iYear, iMonth) + iDay;
246 } 246 }
247 int64_t CFX_Unitime::GetDayOfAD() const { 247 int64_t CFX_Unitime::GetDayOfAD() const {
248 FX_BOOL bBC = m_iUnitime < 0; 248 FX_BOOL bBC = m_iUnitime < 0;
249 int64_t iDays = m_iUnitime / g_FXMillisecondsPerDay; 249 int64_t iDays = m_iUnitime / g_FXMillisecondsPerDay;
250 iDays += bBC ? -1 : 0; 250 iDays += bBC ? -1 : 0;
251 if (bBC && (m_iUnitime % g_FXMillisecondsPerDay) == 0) { 251 if (bBC && (m_iUnitime % g_FXMillisecondsPerDay) == 0) {
(...skipping 15 matching lines...) Expand all
267 } 267 }
268 return (uint8_t)(v / g_FXMillisecondsPerMinute); 268 return (uint8_t)(v / g_FXMillisecondsPerMinute);
269 } 269 }
270 uint8_t CFX_Unitime::GetSecond() const { 270 uint8_t CFX_Unitime::GetSecond() const {
271 int32_t v = (int32_t)(m_iUnitime % g_FXMillisecondsPerMinute); 271 int32_t v = (int32_t)(m_iUnitime % g_FXMillisecondsPerMinute);
272 if (v < 0) { 272 if (v < 0) {
273 v += g_FXMillisecondsPerMinute; 273 v += g_FXMillisecondsPerMinute;
274 } 274 }
275 return (uint8_t)(v / g_FXMillisecondsPerSecond); 275 return (uint8_t)(v / g_FXMillisecondsPerSecond);
276 } 276 }
277 FX_WORD CFX_Unitime::GetMillisecond() const { 277 uint16_t CFX_Unitime::GetMillisecond() const {
278 int32_t v = (int32_t)(m_iUnitime % g_FXMillisecondsPerSecond); 278 int32_t v = (int32_t)(m_iUnitime % g_FXMillisecondsPerSecond);
279 if (v < 0) { 279 if (v < 0) {
280 v += g_FXMillisecondsPerSecond; 280 v += g_FXMillisecondsPerSecond;
281 } 281 }
282 return (FX_WORD)v; 282 return (uint16_t)v;
283 } 283 }
284 FX_BOOL CFX_Unitime::AddYears(int32_t iYears) { 284 FX_BOOL CFX_Unitime::AddYears(int32_t iYears) {
285 FX_UNITIME ut = m_iUnitime; 285 FX_UNITIME ut = m_iUnitime;
286 if (ut < 0) { 286 if (ut < 0) {
287 ut = -ut; 287 ut = -ut;
288 } 288 }
289 FX_UNITIME r = ut % g_FXMillisecondsPerDay; 289 FX_UNITIME r = ut % g_FXMillisecondsPerDay;
290 int32_t iYear; 290 int32_t iYear;
291 uint8_t iMonth, iDay; 291 uint8_t iMonth, iDay;
292 FX_DaysToDate(GetDayOfAD(), iYear, iMonth, iDay); 292 FX_DaysToDate(GetDayOfAD(), iYear, iMonth, iDay);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 FX_BOOL CFX_Unitime::AddMilliseconds(int32_t iMilliseconds) { 343 FX_BOOL CFX_Unitime::AddMilliseconds(int32_t iMilliseconds) {
344 m_iUnitime += iMilliseconds; 344 m_iUnitime += iMilliseconds;
345 return TRUE; 345 return TRUE;
346 } 346 }
347 FX_BOOL CFX_DateTime::Set(int32_t year, 347 FX_BOOL CFX_DateTime::Set(int32_t year,
348 uint8_t month, 348 uint8_t month,
349 uint8_t day, 349 uint8_t day,
350 uint8_t hour, 350 uint8_t hour,
351 uint8_t minute, 351 uint8_t minute,
352 uint8_t second, 352 uint8_t second,
353 FX_WORD millisecond) { 353 uint16_t millisecond) {
354 ASSERT(year != 0); 354 ASSERT(year != 0);
355 ASSERT(month >= 1 && month <= 12); 355 ASSERT(month >= 1 && month <= 12);
356 ASSERT(day >= 1 && day <= FX_DaysInMonth(year, month)); 356 ASSERT(day >= 1 && day <= FX_DaysInMonth(year, month));
357 ASSERT(hour <= 23); 357 ASSERT(hour <= 23);
358 ASSERT(minute <= 59); 358 ASSERT(minute <= 59);
359 ASSERT(second <= 59); 359 ASSERT(second <= 59);
360 ASSERT(millisecond <= 999); 360 ASSERT(millisecond <= 999);
361 m_DateTime.Date.sDate.year = year; 361 m_DateTime.Date.sDate.year = year;
362 m_DateTime.Date.sDate.month = month; 362 m_DateTime.Date.sDate.month = month;
363 m_DateTime.Date.sDate.day = day; 363 m_DateTime.Date.sDate.day = day;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 FX_WEEKDAY CFX_DateTime::GetDayOfWeek() const { 400 FX_WEEKDAY CFX_DateTime::GetDayOfWeek() const {
401 int32_t v = (int32_t)(FX_DateToDays(m_DateTime.Date.sDate.year, 401 int32_t v = (int32_t)(FX_DateToDays(m_DateTime.Date.sDate.year,
402 m_DateTime.Date.sDate.month, 402 m_DateTime.Date.sDate.month,
403 m_DateTime.Date.sDate.day, TRUE) % 403 m_DateTime.Date.sDate.day, TRUE) %
404 7); 404 7);
405 if (v < 0) { 405 if (v < 0) {
406 v += 7; 406 v += 7;
407 } 407 }
408 return (FX_WEEKDAY)v; 408 return (FX_WEEKDAY)v;
409 } 409 }
410 FX_WORD CFX_DateTime::GetDayOfYear() const { 410 uint16_t CFX_DateTime::GetDayOfYear() const {
411 return FX_DaysBeforeMonthInYear(m_DateTime.Date.sDate.year, 411 return FX_DaysBeforeMonthInYear(m_DateTime.Date.sDate.year,
412 m_DateTime.Date.sDate.month) + 412 m_DateTime.Date.sDate.month) +
413 m_DateTime.Date.sDate.day; 413 m_DateTime.Date.sDate.day;
414 } 414 }
415 int64_t CFX_DateTime::GetDayOfAD() const { 415 int64_t CFX_DateTime::GetDayOfAD() const {
416 return FX_DateToDays(m_DateTime.Date.sDate.year, m_DateTime.Date.sDate.month, 416 return FX_DateToDays(m_DateTime.Date.sDate.year, m_DateTime.Date.sDate.month,
417 m_DateTime.Date.sDate.day, TRUE); 417 m_DateTime.Date.sDate.day, TRUE);
418 } 418 }
419 uint8_t CFX_DateTime::GetHour() const { 419 uint8_t CFX_DateTime::GetHour() const {
420 return m_DateTime.Date.sDate.day; 420 return m_DateTime.Date.sDate.day;
421 } 421 }
422 uint8_t CFX_DateTime::GetMinute() const { 422 uint8_t CFX_DateTime::GetMinute() const {
423 return m_DateTime.Time.sTime.minute; 423 return m_DateTime.Time.sTime.minute;
424 } 424 }
425 uint8_t CFX_DateTime::GetSecond() const { 425 uint8_t CFX_DateTime::GetSecond() const {
426 return m_DateTime.Time.sTime.second; 426 return m_DateTime.Time.sTime.second;
427 } 427 }
428 FX_WORD CFX_DateTime::GetMillisecond() const { 428 uint16_t CFX_DateTime::GetMillisecond() const {
429 return m_DateTime.Time.sTime.millisecond; 429 return m_DateTime.Time.sTime.millisecond;
430 } 430 }
431 FX_BOOL CFX_DateTime::AddYears(int32_t iYears) { 431 FX_BOOL CFX_DateTime::AddYears(int32_t iYears) {
432 if (iYears == 0) { 432 if (iYears == 0) {
433 return FALSE; 433 return FALSE;
434 } 434 }
435 int32_t v = m_DateTime.Date.sDate.year + iYears; 435 int32_t v = m_DateTime.Date.sDate.year + iYears;
436 if (v >= 0 && m_DateTime.Date.sDate.year < 0) { 436 if (v >= 0 && m_DateTime.Date.sDate.year < 0) {
437 v++; 437 v++;
438 } else if (v <= 0 && m_DateTime.Date.sDate.year > 0) { 438 } else if (v <= 0 && m_DateTime.Date.sDate.year > 0) {
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 FX_BOOL CFX_DateTime::AddMilliseconds(int32_t iMilliseconds) { 535 FX_BOOL CFX_DateTime::AddMilliseconds(int32_t iMilliseconds) {
536 if (iMilliseconds == 0) { 536 if (iMilliseconds == 0) {
537 return FALSE; 537 return FALSE;
538 } 538 }
539 iMilliseconds += m_DateTime.Time.sTime.millisecond; 539 iMilliseconds += m_DateTime.Time.sTime.millisecond;
540 int32_t iSeconds = (int32_t)(iMilliseconds / g_FXMillisecondsPerSecond); 540 int32_t iSeconds = (int32_t)(iMilliseconds / g_FXMillisecondsPerSecond);
541 iMilliseconds %= g_FXMillisecondsPerSecond; 541 iMilliseconds %= g_FXMillisecondsPerSecond;
542 if (iMilliseconds < 0) { 542 if (iMilliseconds < 0) {
543 iSeconds--, iMilliseconds += g_FXMillisecondsPerSecond; 543 iSeconds--, iMilliseconds += g_FXMillisecondsPerSecond;
544 } 544 }
545 m_DateTime.Time.sTime.millisecond = (FX_WORD)iMilliseconds; 545 m_DateTime.Time.sTime.millisecond = (uint16_t)iMilliseconds;
546 if (iSeconds != 0) { 546 if (iSeconds != 0) {
547 AddSeconds(iSeconds); 547 AddSeconds(iSeconds);
548 } 548 }
549 return TRUE; 549 return TRUE;
550 } 550 }
OLDNEW
« no previous file with comments | « xfa/fgas/localization/fgas_datetime.h ('k') | xfa/fgas/localization/fgas_locale.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698