utf16.writer.h.xml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <chapter xml:id="utf16.writer.h">
  2. <title><tt>__vic/utf16/writer.h</tt></title>
  3. <chapter xml:id="utf16--writer">
  4. <title><tt>utf16::writer</tt></title>
  5. <code-block lang="C++"><![CDATA[
  6. template<class CodeUnitWriter>
  7. class utf16::writer
  8. {
  9. public:
  10. using code_unit_writer_type = CodeUnitWriter;
  11. CodeUnitWriter &get_code_unit_writer();
  12. const CodeUnitWriter &get_code_unit_writer() const;
  13. template<class... Args>
  14. explicit writer(Args&&... args); // since C++11
  15. writer(); // C++98 only
  16. explicit writer(CodeUnitWriter w); // C++98 only
  17. void write(unicode_t cp);
  18. };
  19. template<class CodeUnitWriter>
  20. utf16::writer<CodeUnitWriter> utf16::make_writer(CodeUnitWriter w);
  21. ]]></code-block>
  22. <p>UTF-16 code points to 2-byte <xref to="utf16--code_unit_t"/> sequence writer.
  23. <tt>CodeUnitWriter</tt> which models <tt>Writer&lt;utf16::code_unit_t></tt>
  24. (see <xref to="writers"/>) is used as a code units output.</p>
  25. <section><title>Class members</title>
  26. <synopsis>
  27. <prototype>CodeUnitWriter &amp;get_code_unit_writer()</prototype>
  28. <prototype>const CodeUnitWriter &amp;get_code_unit_writer() const</prototype>
  29. <p>Returns reference to the used code unit writer.</p>
  30. </synopsis>
  31. <synopsis>
  32. <prototype>template&lt;class... Args>
  33. explicit writer(Args&amp;&amp;... args) <sign>C++11</sign></prototype>
  34. <p>Forwards all parameters to the used code unit writer.</p>
  35. </synopsis>
  36. <synopsis>
  37. <prototype>writer() <sign>C++98 only</sign></prototype>
  38. <prototype>explicit writer(CodeUnitWriter r) <sign>C++98 only</sign></prototype>
  39. <p>Constructors for C++98 mode.</p>
  40. </synopsis>
  41. <synopsis>
  42. <prototype>void write(unicode_t cp)</prototype>
  43. <p>Writes the specified code point according to UTF-16 encoding rules.
  44. <tt>CodeUnitWriter::write()</tt> is used to write individual code units.</p>
  45. </synopsis>
  46. </section>
  47. <section><title>Free functions</title>
  48. <synopsis>
  49. <prototype>template&lt;class CodeUnitWriter>
  50. utf16::writer&lt;CodeUnitWriter> utf16::make_writer(CodeUnitWriter w)</prototype>
  51. <p>Creates UTF-16 writer using specified <tt>CodeUnitWriter</tt>.</p>
  52. </synopsis>
  53. </section>
  54. <section><title>Example</title>
  55. <code-block lang="C++"><![CDATA[
  56. #include<__vic/utf16/writer.h>
  57. #include<__vic/writers/string.h>
  58. #include<string>
  59. #include<vector>
  60. std::u16string encode_utf16(const std::vector<__vic::unicode_t> &code_points)
  61. {
  62. std::u16string utf16_res;
  63. __vic::utf16::writer<__vic::basic_string_writer<char16_t>> w(utf16_res);
  64. for(auto cp : code_points) w.write(cp);
  65. return utf16_res;
  66. }
  67. ]]></code-block>
  68. </section>
  69. </chapter>
  70. </chapter>