Метод Position::compare
Метод сравнивает заданную позицию с текущей.
Вызов
boost::optional<int> compare(Position other)
Параметры
other:позиция для сравнения с текущей, тип Position.
Возвращает
- положительное расстояние, если текущая позиция больше заданной.
- отрицательное расстояние, если текущая позиция меньше заданной.
- 0, если позиции равны.
boost::none, если позиции нельзя сравнить (позиции в разных документах, в тексте и в колонтитуле и т.д.).
Примеры для текстового документа
Table table1 = document.getRange().getBegin().insertTable(2, 2, "table1");
Position positionDoc = document.getRange().getBegin();
Position positionTable = table1.getRange().getBegin();
Position positionCell = table1.getCell(CellPosition(0, 0)).getRange().getBegin();
if (positionDoc.compare(positionTable).get() + positionTable.compare(positionCell).get() == 0)
{
document.getRange().getBegin().insertText("Some text");
}
Position positionBegin = document.getRange().getBegin();
Position positionEnd = document.getRange().getEnd();
std::printf("%d", positionBegin.compare(positionEnd).get()); // -10
std::printf("%d", positionEnd.compare(positionBegin).get()); // 10
Пример для табличного документа
Table sheet = document.getBlocks().getTable(0).get();
Position firstCellEnd = sheet.getCell("A1").getRange().getEnd();
Position secondCellBegin = sheet.getCell("B1").getRange().getBegin();
std::printf("%d", firstCellEnd.compare(secondCellBegin).get()); // 0