前のセクションで述べたメソッドに加えて、プロトコルバッファコンパイラは .proto ファイルのメッセージに定義された個々のフィールドへのアクセサメソッド群を生成します。
一個要素の数値フィールド
次のようなフィールド定義:
optional int32 foo = 1;
required int32 foo = 1;
に対して、コンパイラは次のようなアクセサメソッドを生成します:
- bool has_foo() const
- フィールドがセットされていたら true を返す。
- int32 foo() const
- フィールドの現在の値を返す。フィールドがセットされていなければ、デフォルト値を返す。
- void set_foo(int32 value)
- フィールドの値をセットする。これを呼んだ後は has_foo() は true を返し、foo() は value を返す。
- void clear_foo()
- フィールドの値をクリアする。これを呼んだ後は has_foo() は false を返し、foo() はデフォルト値を返す。
他の数値型(boolも含む)では、int32 が スカラー型表の対応する C++ 型で置き換えられます。
一個要素の文字列フィールド
次のようなフィールド定義:
optional string foo = 1;
required string foo = 1;
optional bytes foo = 1;
required bytes foo = 1;
に対しては、コンパイラは次のようなアクセサメソッドを生成します:
- bool has_foo() const
- フィールドがセットされていたら true を返す。
- const string& foo() const
- フィールドの現在の値を返す。フィールドがセットされていなければ、デフォルト値を返す。
- void set_foo(const string& value)
- フィールドの値をセットする。これを呼んだ後は has_foo() は true を返し、foo() は value のコピーを返す。
- void set_foo(const char* value)
- フィールドの値を Cスタイルの NULL終端文字列を使ってセットする。これを呼んだ後は has_foo() は true を返し、foo() は value のコピーを返す。
- string* mutable_foo()
- フィールドの値を格納している stringオブジェクトの、変更可能なポインタを返す。この呼び出しの前にフィールドをセットしていない場合は、結果の string は空になる(デフォルト値では *ない*)。
- これを呼んだ後は has_foo() は true を返し、foo() は与えられた string に書かれた値を返す。
- void clear_foo()
- フィールドの値をクリアする。これを呼んだ後は has_foo() は false を返し、foo() はデフォルト値を返す。
一個要素の enum フィールド
次の列挙型が与えられて:
enum Bar {
BAR_VALUE = 1;
}
次のようなフィールド定義:
optional Bar foo = 1;
required Bar foo = 1;
には、コンパイラは次のようなアクセサメソッドを生成します:
- bool has_foo() const
- フィールドがセットされていたら true を返す。
- Bar foo() const
- フィールドの現在の値を返す。フィールドがセットされていなければ、デフォルト値を返す。
- void set_foo(Bar value)
- フィールドの値をセットする。これを呼んだ後は has_foo() は true を返し、foo() は value を返す。デバッグモード(NDEBUGが定義されていない)で value が Bar に定義されたどの値とも一致しない場合は、このメソッドはプロセスを終了させる。
- void clear_foo()
- フィールドの値をクリアする。これを呼んだ後は has_foo() は false を返し、foo() はデフォルト値を返す。
一個要素の組み込みメッセージフィールド
次のメッセージ型が与えられて:
message Bar{}
次のようなフィールド定義:
optional Bar foo = 1;
required Bar foo = 1;
には、コンパイラは次のようなアクセサメソッドを生成します:
- bool has_foo() const
- フィールドがセットされていたら true を返す。
- const Bar& foo() const
- フィールドの現在の値を返す。フィールドがセットされていなければ、フィールドがセットされていない Bar(おそらく Bar::default_instance()) を返す。
- Bar* mutable_foo()
- フィールドの値を格納している Barオブジェクトの、変更可能なポインタを返す。この呼び出しの前にフィールドをセットしていない場合は、結果の Bar はどのフィールドもセットされていない(新たに割り当てられた Bar に等しい)。これを呼んだ後は has_foo() は true を返し、foo() は同じ Bar インスタンスの参照を返す。
- void clear_foo()
- フィールドの値をクリアする。これを呼んだ後は has_foo() は false を返し、foo() はデフォルト値を返す。
repeated な数値フィールド
次のようなフィールド定義:
repeated int32 foo = 1;
には、コンパイラは次のようなアクセサメソッドを生成します:
- int foo_size() const
- フィールドに現在ある要素数を返す。
- int32 foo(int index) const
- 与えられたゼロベースのインデックス番号の要素を返す。
- void set_foo(int index, int32 value)
- 与えられたゼロベースのインデックス番号の要素をセットする。
- void add_foo(int32 value)
- 与えられた値をフィールドの新たな要素として追加する。
- void clear_foo()
- フィールドから全ての要素を取り除く。これを呼んだ後は、foo_size() はゼロを返す。
- const RepeatedField <int32>& foo() const
- フィールドの要素を格納してある、内部の RepeatedField を返す。このコンテナは STLライクなイテレータとメソッドを提供している。
- const RepeatedField <int32>* mutable_foo() const
- フィールドの要素を格納してある、内部の RepeatedField の変更可能なポインタを返す。このコンテナは STLライクなイテレータとメソッドを提供している。
他の数値型(boolも含む)では、int32 が スカラー型表の対応する C++ 型で置き換えらます。
repeated な文字列フィールド
次のようなフィールド定義:
repeated string foo = 1;
repeated bytes foo = 1;
には、コンパイラは次のようなアクセサメソッドを生成します:
- int foo_size() const
- フィールドに現在ある要素数を返す。
- const string& foo(int index) const
- 与えられたゼロベースのインデックス番号の要素を返す。
- void set_foo(int index, const string& value)
- 与えられたゼロベースのインデックス番号の要素をセットする。
- void set_foo(int index, const char* value)
- CスタイルのNULL終端文字列を用いて、与えられたゼロベースのインデックス番号の要素をセットする。
- string* mutable_foo(int index)
- 与えられたゼロベースのインデックス番号の値を格納している string オブジェクトの変更可能なポインタを返す。このポインタは、Clear() や clear_foo() を呼んだり、内部の RepeatedPtrField を使ってこの要素を取り除いたら無効となる。
- void add_foo(const string& value)
- 与えられた値をフィールドの新たな要素として追加する。
- void add_foo(const char* value)
- CスタイルのNULL終端文字列を用いて、与えられた値をフィールドの新たな要素として追加する。
- string* add_foo()
- 新たな空文字列を追加し、そのポインタを返す。このポインタは、Clear() や clear_foo() を呼んだり、内部の RepeatedPtrField を使ってこの要素を取り除いたら無効となる。
- void clear_foo()
- フィールドから全ての要素を取り除く。これを呼んだ後は、foo_size() はゼロを返す。
- const RepeatedPtrField<string>& foo() const
- フィールドの要素を格納している、内部の RepeatedPtrField を返す。このコンテナは STLライクなイテレータとメソッドを提供している。
- RepeatedPtrField<string>* mutable_foo()
- フィールドの要素を格納している、内部の RepeatedPtrField の変更可能なポインタを返す。このコンテナは STLライクなイテレータとメソッドを提供している。
repeated な enum フィールド
次の列挙型が与えられて:
enum Bar {
BAR_VALUE = 1;
}
次のようなフィールド定義:
repeated Bar foo = 1;
には、コンパイラは次のようなアクセサメソッドを生成します:
- int foo_size() const
- フィールドに現在ある要素数を返す。
- Bar foo(int index) const
- 与えられたゼロベースのインデックス番号の要素を返す。
- void set_foo(int index, Bar value)
- 与えられたゼロベースのインデックス番号の要素をセットする。デバッグモード(NDEBUGが定義されていない)で value が Bar に定義されたどの値とも一致しない場合は、このメソッドはプロセスを終了させる。
- void add_foo(Bar value)
- 与えられた値をフィールドの新たな要素として追加する。デバッグモード(NDEBUGが定義されていない)で value が Bar に定義されたどの値とも一致しない場合は、このメソッドはプロセスを終了させる。
- void clear_foo()
- フィールドから全ての要素を取り除く。これを呼んだ後は、foo_size() はゼロを返す。
- const RepeatedField <Bar>& foo() const
- フィールドの要素を格納してある、内部の RepeatedField を返す。このコンテナは STLライクなイテレータとメソッドを提供している。
- const RepeatedField <Bar>* mutable_foo() const
- フィールドの要素を格納してある、内部の RepeatedField の変更可能なポインタを返す。このコンテナは STLライクなイテレータとメソッドを提供している。
repeated な組み込みメッセージフィールド
次のメッセージ型が与えられて:
message Bar{}
次のようなフィールド定義:
repeated Bar foo = 1;
には、コンパイラは次のようなアクセサメソッドを生成します:
- int foo_size() const
- フィールドに現在ある要素数を返す。
- const Bar& foo(int index) const
- 与えられたゼロベースのインデックス番号の要素を返す。
- Bar* mutable_foo(int index)
- 与えられたゼロベースのインデックス番号の値を格納している Bar オブジェクトの変更可能なポインタを返す。このポインタは、Clear() や clear_foo() を呼んだり、内部の RepeatedPtrField を使ってこの要素を取り除いたら無効となる。
- Bar* add_foo()
- 新たな要素を追加し、そのポインタを返す。結果の Barはどのフィールドもセットされていない。このポインタは、Clear() や clear_foo() を呼んだり、内部の RepeatedPtrField を使ってこの要素を取り除いたら無効となる。
- void clear_foo()
- フィールドから全ての要素を取り除く。これを呼んだ後は、foo_size() はゼロを返す。
- const RepeatedPtrField<Bar>& foo() const
- フィールドの要素を格納している、内部の RepeatedPtrField を返す。このコンテナは STLライクなイテレータとメソッドを提供している。
- RepeatedPtrField<Bar>* mutable_foo()
- フィールドの要素を格納している、内部の RepeatedPtrField の変更可能なポインタを返す。このコンテナは STLライクなイテレータとメソッドを提供している。