汎用クラス・関数
基本クラス、関数
Loading...
Loading...
ユーティリティ関数
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
固定長キューFixedQueue
を利用し、入力キューとしていくつかのメソッドを追加しています。
キューが一杯になった後にpush()
で要素を追加した場合は、末尾の要素を抹消して追加します。
n
を最大値としてキューを初期化・生成します。
n
を最大値としてキューを初期化・生成します。
キューに要素を追加します。
キューが一杯になった後にpush()
で要素を追加した場合は、末尾の要素を抹消して追加します。
キューの先頭要素を戻り値し、またキューよりその要素を削除します。
キューが一杯になるとtrue
を返します。
キューに要素があればtrue(!=0)
、なければfalse(==0)
といった判定を目的とします。
固定長キュー
固定長のキューを実装します。
n
を最大値としてキューを初期化・生成します。
n
を最大値としてキューを初期化・生成します。
キューに要素を追加します。
キューに要素を追加しますが、キュー内部にはデータコピーせず、替わりにキュー内部の要素へのポインタを返します。
キューから要素を削除します。
先頭要素にアクセスします。
末尾要素にアクセスします。
配列のようにインデックスを指定して、キューの要素にアクセスします。
キューの先頭要素を戻り値し、またキューよりその要素を削除します。(pop()
とfront()
の組み合わせです)
キューが空の場合true
を返します。
現在キューにあるアイテム個数を返します。
キューの最大長を返します。
printfmt, fPrintf(), snPrintf()
printf, sprintfに対応する処理を行います。
本ライブラリではMacro Poland氏のprintf,sprintfライブラリを利用しています。 https://github.com/mpaland/printf
ストリームIStreamOut
オブジェクトに対して<<
演算子の右オペランドとして利用します。
printfmt
クラスのコストラクタのパラメータの1番目fmt
に書式を指定します。以降のパラメータはC++テンプレートのパラメータパックで実装されており可変数引数となっています。printfのように書式に対応した引数を指定します。printfと違い引数の数は最大4つに制限されます。
ストリームIStreamOut
オブジェクトを出力先としてfprintfと同じ処理を行います。
1番目の引数がストリームオブジェクトとなる点を除きfprintfと同じ使い方です。
snprintfの処理を行います。
uint8_t
型のバイト配列ですが、メモリ確保をローカル変数とします。一時的なオブジェクトして利用することを想定しています。
本クラスは namespace TWE
内に定義されています。
出力ストリームの基底クラスで、以下のメソッドが定義されており、1バイトの出力、改行文字など特殊クラスを受け付けるためのメソッドが定義されています。
operator ()
はchar_t
型の1文字を出力するための仮想関数です。write_w()
はwchar_t
型の出力に対応します。
ストリームへの出力は<<
演算子を用います。最終的には上記の出力用の関数が呼び出されます。
以下の例はITermクラスでの実装例です。
operator << の右オペランドとして以下の型に対応します。
曖昧性の解決のため、派生クラスで明示的なオーバーライドが必要になる場合があります。
特殊な文字列などを指定するためのオブジェクトを定義するための基底クラスです。
派生クラスとして CR LF (0x0d 0x0a) を出力する IStream_endl が定義されています。
オブジェクトcrlf
は以下のように使用します。
固定バッファ長の配列クラス
可変長の配列ですが、最大長は固定の配列クラスです。
配列のメモリは、外部の固定バッファを参照する方法と、内部にコストラクタで確保する方法の2種類があります。
外部のバッファを参照する場合、参照先のメモリを安全に利用できるようユーザプログラムで管理しなければなりません。
いくつかの派生クラスを定義するためtemplateによる定義となっています。
パラメータなしのコンストラクタは、バッファ未登録として初期化します。バッファが未登録の場合はlength_max()
が0になります。このオブジェクトを配列として利用するにはattach()
メソッドにより改めてバッファを登録する必要があります。
外部のバッファを参照する場合は、バッファへのポインタp
、配列の初期長u16len
、配列の最大長u16maxlen
を指定します。
メモリを動的確保するにはu16maxlen
のみを指定するコンストラクタを呼び出します。
コピー元が、外部メモリ参照の場合は、コピー元の参照先をそのままコピーします。
コピー元が、内部にメモリ確保している場合は、コピー元のメモリ領域をそのまま利用します。新たにメモリのコピーを作成するわけではありません。本クラスでの内部確保したメモリは、スマートポインタshared_ptr
で管理されます。コピー先とコピー元すべてのオブジェクトが破棄された時点で、メモリ領域を破棄します。
配列の参照先を再設定します。
内部メモリ確保のオブジェクトの場合、内部メモリのスマートポインタを破棄しません。
一時的に部分配列として取り扱うといった使い方を想定します。以下の例では、128バイトの長さのbuf
を生成した後に、先頭17バイト目から末尾までの部分配列buf_sub
を生成しています。
配列の先頭ポインタ、末尾+1のアドレスのポインタを返します。STLのアルゴリズムや範囲for文などで利用されます。
配列バッファの先頭ポインタを得るときにbegin()
を用います。
⇒push_back()
配列の末尾に要素を追加します。要素が追加できないときはfalseが戻ります。
⇒size(), capacity()
size()
は配列の長さ、capacity()
は配列の最大長を返します。
⇒reserve()
配列の長さを変更します。現在の長さより大きくなる場合は要素型T
のデフォルトの初期化方法T{}
にて初期化されます。数値型なら0です。
配列へのアクセス手段を提供します。
インデックスi
は、負の値の場合は配列の末尾からのインデックスとなります。-1
が末尾になります。
uint8_t
型のバイト配列ですが、メモリ確保をローカル変数とします。一時的なオブジェクトして利用することを想定しています。
またIStreamOut
を継承しているため<<
演算子などを利用したバッファへのデータ投入が可能です。wchar_t
型の文字列に対してはUTF-8への変換を行います。
wchar_t
型のです。
MWM5では文字列を表す配列として多用されています。
uint8_t
型のバイト配列ですが、メモリ確保をローカル変数とします。一時的なオブジェクトして利用することを想定しています。
右オペランドの型
解説
char_t
1バイト出力する
const char *
文字列を出力する
wchar_t
ワイド文字を出力する(派生クラスで対応がある場合)
IStreamSpecial&
特殊文字列を出力する
printfmt
printf()に相当する出力を行う
const int
printf("%d", n)に相当する出力を行う
double
printf("%.3%, n)に相当する出力を行う
引数
意味
T
データ型
SOUT
IStreamOut
派生クラスを継承することで<<
演算子などを用いたデータ追加を可能とします。
IStreamOut
クラスを継承するとメンバー変数が増えるため、デフォルトはダミーとなっています。
is_sting_type
1
を指定すると、文字列型 (uint8_t
やwchar_t
) の場合に、NUL終端を意識したコードを有効にします。
バッファを確保する際に終端文字分を余分に確保する
固定長配列によるコピーコンストラクトなどではNUL文字までをコピー対象とする