Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-5497

Change the C++ representation of binary be std::basic_string<unsigned_char>

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • C++ - Compiler
    • None

    Description

      I would like to change the C++ representation of binary from "std::string" to "std::basic_string<unsigned_char>".  This would allow C++ templates to distinguish the Thrift type "string" from "binary".

      If nothing else, ::apached::thrift::to_string could print binary differently than string.  Currently, it can get pretty ugly when one calls printTo on a struct containing a binary field that has data that is not readable!

      There is an issue as to how they should be displayed by default; using \xDE\xAD\xBE\xEF with a \ before every byte seems ugly.  Alternativlely, "DEADBEEF"_x because it could also be used as input if the C++ operator""_x is defined by the user?  Alternatively just <binary> or <27-byte binary> (mirroring <null> for unset fields), hiding the contents?  Perhaps leave to_string(std::basic_string<unsigned char> &value) undefined and force the user to define it if needed?  Thoughts & suggestions???

      Given that such a change could break existing code, it should probably be enabled under a new thrift compiler option to --gen cpp.  I haven't come up with a good name for such an option yet: --gen cpp:binary_as_unsigned_string is explicit but wordy.  Any suggestions???

      I would be willing to do the work necessary to add the relevant code if there are no volunteers who have a better understanding of precisely what code would have to be updated (or at least help me find such code)

      Attachments

        1. binary_string_2022.01.17_#2.h
          8 kB
          Richard H. Gumpertz

        Activity

          People

            Unassigned Unassigned
            rgumpertz Richard H. Gumpertz
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: