Skip to content
Snippets Groups Projects
  1. Sep 29, 2020
  2. Sep 28, 2020
  3. Mar 25, 2020
  4. Dec 14, 2018
    • Nat Goodspeed's avatar
      SL-10153: Fix previous commit for non-Windows systems. · 132e708f
      Nat Goodspeed authored
      Move Windows-flavored llstring_getoptenv() to Windows-specific section of
      llstring.cpp.
      
      boost::optional type must be stated explicitly to initialize with a value.
      
      On platforms where llwchar is the same as wchar_t, LLWString is the same as
      std::wstring, so ll_convert specializations for std::wstring would duplicate
      those for LLWString. Defend against that.
      
      The compilers we use don't like 'return condition? { expr } : {}', in which we
      hope to construct and return an instance of the declared return type without
      having to restate the type. It works to use an explicit 'if' statement.
      132e708f
    • Nat Goodspeed's avatar
      SL-10153: Introduce ll_convert, windows_message() templates. · 9ffcafb6
      Nat Goodspeed authored
      Add ll_convert<TO, FROM> template, used as (e.g.):
      ll_convert<std::string>(value_of_some_other_string_type);
      There is no generic template implementation -- the template exists solely to
      provide generic aliases for a bewildering family of llstring.h string-
      conversion functions with highly-specific names. There's a generic
      implementation, though, for the degenerate case where FROM and TO are
      identical.
      
      Add ll_convert<> specialization aliases for most of the string-conversion
      functions declared in llstring.h, including the Windows-specific ones
      involving llutf16string and std::wstring.
      
      Add a mini-lecture in llstring.h about appropriate use of string types on
      Windows.
      
      Add LL_WCHAR_T_NATIVE llpreprocessor.h macro so we can detect whether to
      provide separate conversions for llutf16string and std::wstring, or whether
      those would collide because the types are identical.
      
      Add inline ll_convert_wide_to_string(const std::wstring&) overloads so caller
      isn't required to call arg.c_str(), which naturally permits an ll_convert
      alias.
      
      Add ll_convert_wide_to_wstring(), ll_convert_wstring_to_wide() as placeholders
      for converting between Windows std::wstring and Linden LLWString, with
      corresponding ll_convert aliases. We don't yet have library code to perform
      such conversions officially; for now, just copy characters.
      
      Add LLStringUtil::getenv(key) and getoptenv(key) functions. The latter returns
      boost::optional<string_type> in case the caller needs to detect absence of a
      given environment variable rather than simply accepting a default value.
      Naturally getenv(), which accepts a default, is implemented using getoptenv().
      getoptenv(), in turn, is implemented using an underlying llstring_getoptenv().
      
      On Windows, llstring_getoptenv() returns boost::optional<std::wstring> (based
      on GetEnvironmentVariableW()), whereas elsewhere, llstring_getoptenv() returns
      boost::optional<std::string> (based on classic Posix getenv()).
      
      The beauty of generic ll_convert is that the portable LLStringUtilBase<T>::
      getoptenv() template can call the platform-specific llstring_getoptenv() and
      transparently perform whatever conversion is necessary to return the desired
      string_type.
      
      Add windows_message<T>(error) template, with an overload that implicitly calls
      GetLastError(). We provide a single concrete windows_message<std::wstring>()
      implementation because that's what we get from Windows FormatMessageW() --
      everything else is a generic conversion to the desired target string type.
      
      This obviates llprocess.cpp's previous WindowsErrorString() implementation --
      reimplement using windows_message<std::string>().
      9ffcafb6
  5. Dec 11, 2018
    • Nat Goodspeed's avatar
      SL-10153: Improve ll_convert_string_to_wide() and its converse. · 4e894eb2
      Nat Goodspeed authored
      Instead of returning a wchar_t* and requiring the caller to delete it later,
      return a std::basic_string<wchar_t> that's self-cleaning. If the caller wants
      a wchar_t*, s/he can call c_str() on the returned string.
      
      Default the code_page parameter to CP_UTF8, since we try to be really
      consistent about using UTF-8 encoding for all our internal std::strings.
      4e894eb2
  6. Oct 03, 2017
  7. Dec 07, 2016
  8. Nov 20, 2016
  9. Jun 01, 2016
  10. Nov 10, 2015
  11. Apr 10, 2015
  12. Apr 07, 2015
  13. Oct 23, 2014
  14. Oct 15, 2013
  15. Sep 05, 2013
  16. Aug 09, 2013
  17. Jul 19, 2013
  18. May 22, 2013
  19. Mar 29, 2013
  20. Nov 15, 2012
    • Richard Linden's avatar
      SH-3406 WIP convert fast timers to lltrace system · 9d77e030
      Richard Linden authored
      cleaning up build
      moved most includes of windows.h to llwin32headers.h to disable min/max macros, etc
      streamlined Time class and consolidated functionality in BlockTimer class
      llfasttimer is no longer included via llstring.h, so had to add it manually in several places
      9d77e030
  21. Jul 12, 2012
  22. Feb 24, 2012
    • Nat Goodspeed's avatar
      Add LLStringUtil::getTokens() overload handling quoted substrings. · 025329b6
      Nat Goodspeed authored
      We didn't have any tokenizer suitable for scanning something like a bash
      command line. We do have a couple hacks, e.g. LLExternalEditor::tokenize() and
      LLCommandLineParser::parseCommandLineString(). Both try to work around
      boost::tokenizer limitations; but existing boost::tokenizer support just
      doesn't address this case. Neither of the above is available as a general
      scanner anyway, and parseCommandLineString() fails outright when passed "".
      New getTokens() also distinguishes between "drop delimiters" (e.g. space,
      return, newline) to be discarded from the token stream, versus "keep
      delimiters" (e.g. "+-*/") to be returned as tokens in their own right.
      There's an overload that honors escapes and a more efficient one that doesn't;
      each has a convenience overload that returns the scanned string vector rather
      than requiring a separate declaration.
      Tweak and comment older getTokens() implementation.
      Add unit tests for both old and new getTokens() implementations.
      Break out StringVec and std::ostream << StringVec from
      indra/llcommon/tests/listener.h to StringVec.h: that's coming in handy for a
      number of different TUT test sources.
      025329b6
  23. Jan 06, 2012
  24. Dec 21, 2011
    • Seth ProductEngine's avatar
      EXP-1693 FIXED the date localization in Item Profile window, Voice Morphs... · 0ccf2b5a
      Seth ProductEngine authored
      EXP-1693 FIXED the date localization in Item Profile window, Voice Morphs window and in scroll list widget in general.
      - Added a customizable date format string to be used for scroll list cell of "date" type.
      - The date localization does not change the value of a scroll list cell changing only its string representation.
      - Added using localized week days and month names from strings.xml for all locales not only Ja and Pl as it was before.
      - Changed the date format in Item Profile window (French locale) as noted in the issue description.
      - For this fix the French locale still needs the localization of the following strings in strings.xml:
      	<string name="dateTimeWeekdaysNames">
      	<string name="dateTimeWeekdaysShortNames">
      	<string name="dateTimeMonthNames">
      	<string name="dateTimeMonthShortNames">
      	<string name="dateTimeDayFormat">
      	<string name="dateTimeAM">
      	<string name="dateTimePM">
      0ccf2b5a
  25. Aug 19, 2011
  26. Oct 13, 2010
  27. Sep 21, 2010
  28. Sep 16, 2010
    • Andrew Dyukov's avatar
      STORM-180 FIXED Fixed crash on login in Japanese locale. · 0098a236
      Andrew Dyukov authored
      The crash was caused by erroneous getting of month name from vector with week day names in LLStringUtil::formatDatetime().
      This code woth introduced in June, so though it didn't work properly, it didn't cause the crash(cause June is 5th month). But when
      number of current month exceeded number of days in week(this happened in August cause it is 8th) code started getting 8th element from
      vector with 7. This caused the crash. It reproduced only on Japanese locale because only there code that caused it was used(see STORM-177
      for details). This changeset seems to fix STORM-177 too.
      
      - Used vector with months names where it should be.
      0098a236
  29. Aug 13, 2010
  30. Aug 05, 2010
  31. Jul 26, 2010
  32. Jul 23, 2010
Loading