int main(int argc, char** argv){ UnicodeProperties props; UnicodeString us(argv[1]); BiDir bidi(&props); bidi.determineBidiLevels(us); return 0; }
bool IObjectMapPropertyType<KeyType, ValueType>::Serialize( ISerializer &serializer, const Object *object) const { BidirectionalSerializer bidi(serializer); MapSerialization(DoSerialize, bidi, object); return bidi.Succeeded(); }
bool IObjectMapPropertyType<KeyType, ValueType>::Deserialize( IDeserializer &deserializer, Object *object) const { BidirectionalSerializer bidi(deserializer); KeyType key; ValueType value; while(DoDeserialize(bidi, key, value)) { WriteItem(object, key, -1, &value); } return bidi.Succeeded(); }
int main(int, char**) { int a[] = {1, 2, 3}; bidirectional_iterator<int *> bidi(a+1); std::prev(bidi, -1); // should work fine std::prev(bidi, 0); // should work fine std::prev(bidi, 1); // should work fine forward_iterator<int *> it(a+1); std::prev(it, -1); // should work fine std::prev(it, 0); // should work fine EXPECT_DEATH( std::prev(it, 1) ); // can't go backwards on a FwdIter return 0; }
void CPDF_TextPage::CloseTempLine() { if (m_TempCharList.empty()) return; WideString str = m_TempTextBuf.MakeString(); bool bPrevSpace = false; for (size_t i = 0; i < str.GetLength(); ++i) { if (str[i] != ' ') { bPrevSpace = false; continue; } if (bPrevSpace) { m_TempTextBuf.Delete(i, 1); m_TempCharList.erase(m_TempCharList.begin() + i); str.Delete(i); --i; } bPrevSpace = true; } CFX_BidiString bidi(str); if (m_parserflag == FPDFText_Direction::Right) bidi.SetOverallDirectionRight(); CFX_BidiChar::Direction eCurrentDirection = bidi.OverallDirection(); for (const auto& segment : bidi) { if (segment.direction == CFX_BidiChar::RIGHT || (segment.direction == CFX_BidiChar::NEUTRAL && eCurrentDirection == CFX_BidiChar::RIGHT)) { eCurrentDirection = CFX_BidiChar::RIGHT; for (int m = segment.start + segment.count; m > segment.start; --m) AddCharInfoByRLDirection(str[m - 1], m_TempCharList[m - 1]); } else { eCurrentDirection = CFX_BidiChar::LEFT; for (int m = segment.start; m < segment.start + segment.count; ++m) AddCharInfoByLRDirection(str[m], m_TempCharList[m]); } } m_TempCharList.clear(); m_TempTextBuf.Delete(0, m_TempTextBuf.GetLength()); }