Lines Matching defs:piece

332     MultiPiece *piece = FindPiece(src, pos, &start);
336 text->ptr = (char *)(piece->text + (pos - start));
337 count = piece->used - (pos - start);
421 /* If empty and not the only piece then remove it */
435 else { /* We are fully in one piece */
546 MultiPiece *piece;
573 piece = FindPiece(src, position, &first);
575 if (piece->used == 0)
578 ptr = (position - first) + piece->text;
592 if (ptr < piece->text) {
593 piece = piece->prev;
594 if (piece == NULL) /* Beginning of text */
596 ptr = piece->text + piece->used - 1;
598 else if (ptr >= piece->text + piece->used) {
599 piece = piece->next;
600 if (piece == NULL) /* End of text */
602 ptr = piece->text;
695 MultiPiece *piece;
734 piece = FindPiece(src, position, &first);
735 ptr = (position - first) + piece->text;
757 while (ptr < piece->text) {
758 cnt = (int)(piece->text - ptr);
760 piece = piece->prev;
761 if (piece == NULL) { /* Beginning of text */
765 ptr = piece->text + piece->used - cnt;
768 while (ptr >= piece->text + piece->used) {
769 cnt = (int)(ptr - (piece->text + piece->used));
771 piece = piece->next;
772 if (piece == NULL) { /* End of text */
776 ptr = piece->text + cnt;
1130 MultiPiece *piece;
1135 for (first = 0, piece = src->multi_src.first_piece ; piece != NULL;
1136 first += piece->used, piece = piece->next)
1137 (void)wcsncpy(wc_string + first, piece->text, (size_t)piece->used);
1295 MultiPiece* piece = NULL;
1371 piece = AllocNewPiece(src, piece);
1372 piece->used = Min(src->multi_src.length, src->multi_src.piece_size);
1373 piece->text = (wchar_t*)src->multi_src.string;
1381 piece = AllocNewPiece(src, piece);
1383 piece->text = (wchar_t*)XtMalloc((unsigned)(src->multi_src.piece_size
1385 piece->used = Min(left, src->multi_src.piece_size);
1386 if (piece->used != 0)
1387 (void)wcsncpy(piece->text, ptr, (size_t)piece->used);
1389 left -= piece->used;
1390 ptr += piece->used;
1403 * prev - the piece just before this one, or NULL
1406 * Allocates a new piece of memory.
1409 * The allocated piece
1414 MultiPiece *piece = XtNew(MultiPiece);
1417 src->multi_src.first_piece = piece;
1418 piece->next = NULL;
1422 (prev->next)->prev = piece;
1423 piece->next = prev->next;
1424 prev->next = piece;
1427 piece->prev = prev;
1429 return (piece);
1463 * piece - piece to remove
1466 * Removes a piece from the list.
1469 RemovePiece(MultiSrcObject src, MultiPiece *piece)
1471 if (piece->prev == NULL)
1472 src->multi_src.first_piece = piece->next;
1474 piece->prev->next = piece->next;
1476 if (piece->next != NULL)
1477 piece->next->prev = piece->prev;
1480 XtFree((char *)piece->text);
1482 XtFree((char *)piece);
1492 * first - position of the first character in this piece (return)
1495 * Finds the piece containing the position indicated.
1503 MultiPiece *old_piece, *piece;
1506 for (old_piece = NULL, piece = src->multi_src.first_piece, temp = 0;
1507 piece; old_piece = piece, piece = piece->next)
1508 if ((temp += piece->used) > position) {
1509 *first = temp - piece->used;
1510 return (piece);
1515 return (old_piece); /* if we run off the end the return the last piece */
1524 * piece - piece to break
1527 * Breaks a full piece into two new pieces.
1531 BreakPiece(MultiSrcObject src, MultiPiece *piece)
1533 MultiPiece *cnew = AllocNewPiece(src, piece);
1537 (void)wcsncpy(cnew->text, piece->text + HALF_PIECE,
1539 piece->used = HALF_PIECE;