Logo Search packages:      
Sourcecode: yaskkserv version File versions  Download package

void SkkSimpleString::overwrite ( const void *  p,
int  index,
int  copy_size 
) [inline]

指定位置に文字列を上書きします。文字列 p は copy_size バイト分、または \0 を見付けるまで追加されます。

Attention:
入力文字列 p 側の \0 はコピーされません。
通常の overwrite() と異なり、 p は \0 で終端されている必要がありません。

Definition at line 546 of file skk_simple_string.hpp.

References overwrite().

        {
                char *d = get_buffer() + index;
                const int terminator_size = 1;
                int size = buffer_ + buffer_size_ - MARGIN_SIZE - d - terminator_size;

                DEBUG_ASSERT_RANGE(size,
                                   1,
                                   buffer_size_ - MARGIN_SIZE * 2 - 1);
#ifdef YASKKSERV_DEBUG_PARANOIA
                int debug_size = copy_size;
                int tmp = buffer_ + buffer_size_ - MARGIN_SIZE - (d + debug_size - 1) - terminator_size;
                DEBUG_ASSERT_RANGE(tmp,
                                   1,
                                   buffer_size_ - MARGIN_SIZE * 2 - 1);
#endif  // YASKKSERV_DEBUG_PARANOIA

                copy_size = (copy_size < size) ? copy_size : size;

                overwrite(p,
                          d,
                          size);
                update_string();
        }


Generated by  Doxygen 1.6.0   Back to index