示例#1
0
 def get_output_formatter(self, CodeUnitN):
     UnicodeMinus0x10000 = "(%s)" % Lng.OP("unicode", "-", "0x10000")
     Offset_10bit_high = "(uint16_t)(%s)" % Lng.OP(UnicodeMinus0x10000,
                                                   ">>", 10)
     Offset_10bit_low = "(uint16_t)(%s)" % Lng.OP(UnicodeMinus0x10000, "&",
                                                  "0x3FF")
     return {
         1: [
             Lng.INCREMENT_ITERATOR_THEN_ASSIGN("*output_pp",
                                                "(uint16_t)(unicode)"),
         ],
         2: [
             Lng.INCREMENT_ITERATOR_THEN_ASSIGN(
                 "*output_pp", "(uint16_t)(%s)" %
                 Lng.OP("0xD800", "|", Offset_10bit_high)),
             Lng.INCREMENT_ITERATOR_THEN_ASSIGN(
                 "*output_pp", "(uint16_t)(%s)" %
                 Lng.OP("0xDC00", "|", Offset_10bit_low)),
         ]
     }[CodeUnitN]
示例#2
0
    def get_output_formatter(self, CodeUnitN):
        last_but_two = Lng.OP(
            "0x80", "|", "(%s)" %
            Lng.OP("(%s)" % Lng.OP("unicode", "&", "(uint32_t)0x3FFFF"), ">>",
                   "12"))
        last_but_one = Lng.OP(
            "0x80", "|", "(%s)" % Lng.OP(
                "(%s)" % Lng.OP("unicode", "&", "(uint32_t)0xFFF"), ">>", "6"))
        last = Lng.OP("0x80", "|",
                      "(%s)" % Lng.OP("unicode", "&", "(uint32_t)0x3F"))

        rvalue_list = {
            1: [
                "unicode",
            ],
            2: [
                Lng.OP("0xC0", "|", "(%s)" % Lng.OP("unicode", ">>", "6")),
                last,
            ],
            3: [
                Lng.OP("0xE0", "|", "(%s)" % Lng.OP("unicode", ">>", "12")),
                last_but_one,
                last,
            ],
            4: [
                Lng.OP("0xF0", "|", "(%s)" % Lng.OP("unicode", ">>", "18")),
                last_but_two,
                last_but_one,
                last,
            ]
        }[CodeUnitN]

        return [
            "%s" % Lng.INCREMENT_ITERATOR_THEN_ASSIGN("*output_pp",
                                                      "(uint8_t)(%s)" % rvalue)
            for rvalue in rvalue_list
        ]
示例#3
0
 def get_output_formatter(self, CodeUnitN):
     return {
         1: [Lng.INCREMENT_ITERATOR_THEN_ASSIGN("*output_pp", "unicode")]
     }[CodeUnitN]