syntax = "proto2";

import "google/protobuf/descriptor.proto";

// see https://github.com/gogo/protobuf/blob/master/gogoproto/gogo.proto
// for the original idea

// Generated files can be customized using this proto
// or using `Customize` struct when codegen is invoked programmatically.

package rustproto;

extend google.protobuf.FileOptions {
    // When false, `get_`, `set_`, `mut_` etc. accessors are not generated
    optional bool generate_accessors_all = 17004;
    // When false, `get_` is not generated even if `syntax = "proto2"`
    optional bool generate_getter_all = 17005;
    // Use `bytes::Bytes` for `bytes` fields
    optional bool tokio_bytes_all = 17011;
    // Use `bytes::Bytes` for `string` fields
    optional bool tokio_bytes_for_string_all = 17012;
    // When false, `#[non_exhaustive]` is not generated for `oneof` fields.
    optional bool oneofs_non_exhaustive_all = 17013;
    // When true, generate `BTreeMap` instead of `HashMap` for map fields.
    optional bool btreemap_all = 17014;

    // When true, will only generate codes that works with lite runtime.
    optional bool lite_runtime_all = 17035;
}

extend google.protobuf.MessageOptions {
    // When false, `get_`, `set_`, `mut_` etc. accessors are not generated
    optional bool generate_accessors = 17004;
    // When false, `get_` is not generated even if `syntax = "proto2"`
    optional bool generate_getter = 17005;
    // Use `bytes::Bytes` for `bytes` fields
    optional bool tokio_bytes = 17011;
    // Use `bytes::Bytes` for `string` fields
    optional bool tokio_bytes_for_string = 17012;
    // When false, `#[non_exhaustive]` is not generated for `oneof` fields.
    optional bool oneofs_non_exhaustive = 17013;
    // When true, generate `BTreeMap` instead of `HashMap` for map fields.
    optional bool btreemap = 17014;
}

extend google.protobuf.FieldOptions {
    // When false, `get_`, `set_`, `mut_` etc. accessors are not generated
    optional bool generate_accessors_field = 17004;
    // When false, `get_` is not generated even if `syntax = "proto2"`
    optional bool generate_getter_field = 17005;
    // Use `bytes::Bytes` for `bytes` fields
    optional bool tokio_bytes_field = 17011;
    // Use `bytes::Bytes` for `string` fields
    optional bool tokio_bytes_for_string_field = 17012;
    // When false, `#[non_exhaustive]` is not generated for `oneof` fields.
    optional bool oneofs_non_exhaustive_field = 17013;
    // When true, generate `BTreeMap` instead of `HashMap` for map fields.
    optional bool btreemap_field = 17014;
}
