You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeutils/khexedit/lib/kwordbufferservice.h

138 lines
5.6 KiB

/***************************************************************************
kwordbufferservice.h - description
-------------------
begin : Di Jan 18 2005
copyright : (C) 2005 by Friedrich W. H. Kossebau
email : Friedrich.W.H@Kossebau.de
***************************************************************************/
/***************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License version 2 as published by the Free Software Foundation. *
* *
***************************************************************************/
#ifndef KHE_KWORDBUFFERSERVICE_H
#define KHE_KWORDBUFFERSERVICE_H
// lib specific
#include "ksection.h"
namespace KHE
{
class KDataBuffer;
class KCharCodec;
/**
*
*@author Friedrich W. H. Kossebau
*/
class KWordBufferService
{
public:
KWordBufferService( KDataBuffer *B, KCharCodec *C );
~KWordBufferService();
public:
/** searches for the start of the word including the given index.
* if no other nonwordchar preceds this is 0;
* If the byte at the given Index is already a nonword char the given index is returned.
* @param Index index to start with
* @param CharType
* @return index of the first char of the current word or the given index if there is none
*/
int indexOfWordStart( unsigned int Index ) const;
int indexOfLeftWordSelect( unsigned int Index ) const;
/** searches for the end of the word including the given index.
* If the byte at the given Index is already a nonword char the given index is returned.
* if no other nonwordchar follows, that of the last byte;
* @param Index index to start with
* @param CharType
* @return index of the last char of the current word or the given index if there is none
*/
int indexOfWordEnd( unsigned int Index ) const;
/** searches for the first char after the end of the word including the given index.
* If the byte at the given Index is already a nonword char the given index is returned.
* if no other nonwordchar follows that of behind the last byte;
* @param Index index to start with
* @param CharType
* @return index of the first char after the current word or the given index if there is none
*/
int indexOfRightWordSelect( unsigned int Index ) const;
/** searches for the first char after the end of the word including the given index.
* If the byte at the given Index is already a nonword char the given index is returned.
* if no other nonwordchar follows that of behind the last byte;
* @param Index index to start with
* @param CharType
* @return index of the first char after the current word or the given index if there is none
*/
// int indexOfBehindLeftWordEnd( unsigned int Index ) const;
/** searches for the first char after the end of the word including the given index.
* If the byte at the given Index is already a nonword char the given index is returned.
* if no other nonwordchar follows that of behind the last byte;
* @param Index index to start with
* @param CharType
* @return index of the first char after the current word or the given index if there is none
*/
// int indexOfBehindRightWordEnd( unsigned int Index ) const;
/** searches the start of the next previous word that does not include the given index,
* if no further word is found 0 is returned.
* if the index is out of range the behaviour is undefined.
* @param Index
* @param CharType
* @return index of the next previous word start or 0
*/
int indexOfPreviousWordStart( unsigned int Index ) const;
/** searches for the start of the next word not including the given index.
* if there isn't a next word the index behind end is returned
* @param Index
* @param CharType
* @return index of the start of the next word or behind end
*/
int indexOfNextWordStart( unsigned int Index ) const;
/** searches for the start of the next word not including the given index.
* if there isn't a next word the index of the end is returned
* @param Index index to start with
* @param CharType
* @return index of the last nonword char before the next word or the last index
*/
int indexOfBeforeNextWordStart( unsigned int Index ) const;
/** if Index is out of range the behaviour is undefined
* @param Index
* @param CharType
* @return @c true if the byte at position i is a char of type CharType
*/
bool isWordChar( unsigned int Index ) const;
/** returns the section with a word around index.
* if there is no word the section is empty
* @param Index
* @param CharType
* @return the section with a word around index.
*/
KSection wordSection( unsigned int Index ) const;
protected:
KDataBuffer *Buffer;
KCharCodec *CharCodec;
};
inline KWordBufferService::KWordBufferService( KDataBuffer *B, KCharCodec *C )
: Buffer( B ), CharCodec( C ) {}
inline KWordBufferService::~KWordBufferService() {}
inline KSection KWordBufferService::wordSection( unsigned int Index ) const
{ return isWordChar(Index) ? KSection( indexOfWordStart(Index), indexOfWordEnd(Index) ) : KSection(); }
}
#endif