sticker-tf-proto 0.11.0

Tensorflow protocol buffer definitions used by sticker
Documentation
// This file is generated by rust-protobuf 2.8.0. Do not edit
// @generated

// https://github.com/Manishearth/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]

#![cfg_attr(rustfmt, rustfmt_skip)]

#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unsafe_code)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `tensorflow/core/protobuf/rewriter_config.proto`

use protobuf::Message as Message_imported_for_functions;
use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;

/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_8_0;

#[derive(PartialEq,Clone,Default)]
pub struct AutoParallelOptions {
    // message fields
    pub enable: bool,
    pub num_replicas: i32,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a AutoParallelOptions {
    fn default() -> &'a AutoParallelOptions {
        <AutoParallelOptions as ::protobuf::Message>::default_instance()
    }
}

impl AutoParallelOptions {
    pub fn new() -> AutoParallelOptions {
        ::std::default::Default::default()
    }

    // bool enable = 1;


    pub fn get_enable(&self) -> bool {
        self.enable
    }
    pub fn clear_enable(&mut self) {
        self.enable = false;
    }

    // Param is passed by value, moved
    pub fn set_enable(&mut self, v: bool) {
        self.enable = v;
    }

    // int32 num_replicas = 2;


    pub fn get_num_replicas(&self) -> i32 {
        self.num_replicas
    }
    pub fn clear_num_replicas(&mut self) {
        self.num_replicas = 0;
    }

    // Param is passed by value, moved
    pub fn set_num_replicas(&mut self, v: i32) {
        self.num_replicas = v;
    }
}

impl ::protobuf::Message for AutoParallelOptions {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.enable = tmp;
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int32()?;
                    self.num_replicas = tmp;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if self.enable != false {
            my_size += 2;
        }
        if self.num_replicas != 0 {
            my_size += ::protobuf::rt::value_size(2, self.num_replicas, ::protobuf::wire_format::WireTypeVarint);
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream) -> ::protobuf::ProtobufResult<()> {
        if self.enable != false {
            os.write_bool(1, self.enable)?;
        }
        if self.num_replicas != 0 {
            os.write_int32(2, self.num_replicas)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> AutoParallelOptions {
        AutoParallelOptions::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                    "enable",
                    |m: &AutoParallelOptions| { &m.enable },
                    |m: &mut AutoParallelOptions| { &mut m.enable },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
                    "num_replicas",
                    |m: &AutoParallelOptions| { &m.num_replicas },
                    |m: &mut AutoParallelOptions| { &mut m.num_replicas },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<AutoParallelOptions>(
                    "AutoParallelOptions",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static AutoParallelOptions {
        static mut instance: ::protobuf::lazy::Lazy<AutoParallelOptions> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const AutoParallelOptions,
        };
        unsafe {
            instance.get(AutoParallelOptions::new)
        }
    }
}

impl ::protobuf::Clear for AutoParallelOptions {
    fn clear(&mut self) {
        self.enable = false;
        self.num_replicas = 0;
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for AutoParallelOptions {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for AutoParallelOptions {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct ScopedAllocatorOptions {
    // message fields
    pub enable_op: ::protobuf::RepeatedField<::std::string::String>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a ScopedAllocatorOptions {
    fn default() -> &'a ScopedAllocatorOptions {
        <ScopedAllocatorOptions as ::protobuf::Message>::default_instance()
    }
}

impl ScopedAllocatorOptions {
    pub fn new() -> ScopedAllocatorOptions {
        ::std::default::Default::default()
    }

    // repeated string enable_op = 1;


    pub fn get_enable_op(&self) -> &[::std::string::String] {
        &self.enable_op
    }
    pub fn clear_enable_op(&mut self) {
        self.enable_op.clear();
    }

    // Param is passed by value, moved
    pub fn set_enable_op(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
        self.enable_op = v;
    }

    // Mutable pointer to the field.
    pub fn mut_enable_op(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
        &mut self.enable_op
    }

    // Take field
    pub fn take_enable_op(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
        ::std::mem::replace(&mut self.enable_op, ::protobuf::RepeatedField::new())
    }
}

impl ::protobuf::Message for ScopedAllocatorOptions {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.enable_op)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        for value in &self.enable_op {
            my_size += ::protobuf::rt::string_size(1, &value);
        };
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream) -> ::protobuf::ProtobufResult<()> {
        for v in &self.enable_op {
            os.write_string(1, &v)?;
        };
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> ScopedAllocatorOptions {
        ScopedAllocatorOptions::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                    "enable_op",
                    |m: &ScopedAllocatorOptions| { &m.enable_op },
                    |m: &mut ScopedAllocatorOptions| { &mut m.enable_op },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<ScopedAllocatorOptions>(
                    "ScopedAllocatorOptions",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static ScopedAllocatorOptions {
        static mut instance: ::protobuf::lazy::Lazy<ScopedAllocatorOptions> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ScopedAllocatorOptions,
        };
        unsafe {
            instance.get(ScopedAllocatorOptions::new)
        }
    }
}

impl ::protobuf::Clear for ScopedAllocatorOptions {
    fn clear(&mut self) {
        self.enable_op.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for ScopedAllocatorOptions {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for ScopedAllocatorOptions {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct RewriterConfig {
    // message fields
    pub layout_optimizer: RewriterConfig_Toggle,
    pub constant_folding: RewriterConfig_Toggle,
    pub shape_optimization: RewriterConfig_Toggle,
    pub remapping: RewriterConfig_Toggle,
    pub arithmetic_optimization: RewriterConfig_Toggle,
    pub dependency_optimization: RewriterConfig_Toggle,
    pub loop_optimization: RewriterConfig_Toggle,
    pub function_optimization: RewriterConfig_Toggle,
    pub debug_stripper: RewriterConfig_Toggle,
    pub disable_model_pruning: bool,
    pub scoped_allocator_optimization: RewriterConfig_Toggle,
    pub pin_to_host_optimization: RewriterConfig_Toggle,
    pub implementation_selector: RewriterConfig_Toggle,
    pub auto_mixed_precision: RewriterConfig_Toggle,
    pub disable_meta_optimizer: bool,
    pub meta_optimizer_iterations: RewriterConfig_NumIterationsType,
    pub min_graph_nodes: i32,
    pub memory_optimization: RewriterConfig_MemOptType,
    pub memory_optimizer_target_node_name_scope: ::std::string::String,
    pub meta_optimizer_timeout_ms: i64,
    pub auto_parallel: ::protobuf::SingularPtrField<AutoParallelOptions>,
    pub fail_on_optimizer_errors: bool,
    pub scoped_allocator_opts: ::protobuf::SingularPtrField<ScopedAllocatorOptions>,
    pub optimizers: ::protobuf::RepeatedField<::std::string::String>,
    pub custom_optimizers: ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer>,
    pub inter_optimizer_verifier_config: ::protobuf::SingularPtrField<super::verifier_config::VerifierConfig>,
    pub post_optimization_verifier_config: ::protobuf::SingularPtrField<super::verifier_config::VerifierConfig>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a RewriterConfig {
    fn default() -> &'a RewriterConfig {
        <RewriterConfig as ::protobuf::Message>::default_instance()
    }
}

impl RewriterConfig {
    pub fn new() -> RewriterConfig {
        ::std::default::Default::default()
    }

    // .tensorflow.RewriterConfig.Toggle layout_optimizer = 1;


    pub fn get_layout_optimizer(&self) -> RewriterConfig_Toggle {
        self.layout_optimizer
    }
    pub fn clear_layout_optimizer(&mut self) {
        self.layout_optimizer = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_layout_optimizer(&mut self, v: RewriterConfig_Toggle) {
        self.layout_optimizer = v;
    }

    // .tensorflow.RewriterConfig.Toggle constant_folding = 3;


    pub fn get_constant_folding(&self) -> RewriterConfig_Toggle {
        self.constant_folding
    }
    pub fn clear_constant_folding(&mut self) {
        self.constant_folding = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_constant_folding(&mut self, v: RewriterConfig_Toggle) {
        self.constant_folding = v;
    }

    // .tensorflow.RewriterConfig.Toggle shape_optimization = 13;


    pub fn get_shape_optimization(&self) -> RewriterConfig_Toggle {
        self.shape_optimization
    }
    pub fn clear_shape_optimization(&mut self) {
        self.shape_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_shape_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.shape_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle remapping = 14;


    pub fn get_remapping(&self) -> RewriterConfig_Toggle {
        self.remapping
    }
    pub fn clear_remapping(&mut self) {
        self.remapping = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_remapping(&mut self, v: RewriterConfig_Toggle) {
        self.remapping = v;
    }

    // .tensorflow.RewriterConfig.Toggle arithmetic_optimization = 7;


    pub fn get_arithmetic_optimization(&self) -> RewriterConfig_Toggle {
        self.arithmetic_optimization
    }
    pub fn clear_arithmetic_optimization(&mut self) {
        self.arithmetic_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_arithmetic_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.arithmetic_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle dependency_optimization = 8;


    pub fn get_dependency_optimization(&self) -> RewriterConfig_Toggle {
        self.dependency_optimization
    }
    pub fn clear_dependency_optimization(&mut self) {
        self.dependency_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_dependency_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.dependency_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle loop_optimization = 9;


    pub fn get_loop_optimization(&self) -> RewriterConfig_Toggle {
        self.loop_optimization
    }
    pub fn clear_loop_optimization(&mut self) {
        self.loop_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_loop_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.loop_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle function_optimization = 10;


    pub fn get_function_optimization(&self) -> RewriterConfig_Toggle {
        self.function_optimization
    }
    pub fn clear_function_optimization(&mut self) {
        self.function_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_function_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.function_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle debug_stripper = 11;


    pub fn get_debug_stripper(&self) -> RewriterConfig_Toggle {
        self.debug_stripper
    }
    pub fn clear_debug_stripper(&mut self) {
        self.debug_stripper = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_debug_stripper(&mut self, v: RewriterConfig_Toggle) {
        self.debug_stripper = v;
    }

    // bool disable_model_pruning = 2;


    pub fn get_disable_model_pruning(&self) -> bool {
        self.disable_model_pruning
    }
    pub fn clear_disable_model_pruning(&mut self) {
        self.disable_model_pruning = false;
    }

    // Param is passed by value, moved
    pub fn set_disable_model_pruning(&mut self, v: bool) {
        self.disable_model_pruning = v;
    }

    // .tensorflow.RewriterConfig.Toggle scoped_allocator_optimization = 15;


    pub fn get_scoped_allocator_optimization(&self) -> RewriterConfig_Toggle {
        self.scoped_allocator_optimization
    }
    pub fn clear_scoped_allocator_optimization(&mut self) {
        self.scoped_allocator_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_scoped_allocator_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.scoped_allocator_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle pin_to_host_optimization = 18;


    pub fn get_pin_to_host_optimization(&self) -> RewriterConfig_Toggle {
        self.pin_to_host_optimization
    }
    pub fn clear_pin_to_host_optimization(&mut self) {
        self.pin_to_host_optimization = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_pin_to_host_optimization(&mut self, v: RewriterConfig_Toggle) {
        self.pin_to_host_optimization = v;
    }

    // .tensorflow.RewriterConfig.Toggle implementation_selector = 22;


    pub fn get_implementation_selector(&self) -> RewriterConfig_Toggle {
        self.implementation_selector
    }
    pub fn clear_implementation_selector(&mut self) {
        self.implementation_selector = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_implementation_selector(&mut self, v: RewriterConfig_Toggle) {
        self.implementation_selector = v;
    }

    // .tensorflow.RewriterConfig.Toggle auto_mixed_precision = 23;


    pub fn get_auto_mixed_precision(&self) -> RewriterConfig_Toggle {
        self.auto_mixed_precision
    }
    pub fn clear_auto_mixed_precision(&mut self) {
        self.auto_mixed_precision = RewriterConfig_Toggle::DEFAULT;
    }

    // Param is passed by value, moved
    pub fn set_auto_mixed_precision(&mut self, v: RewriterConfig_Toggle) {
        self.auto_mixed_precision = v;
    }

    // bool disable_meta_optimizer = 19;


    pub fn get_disable_meta_optimizer(&self) -> bool {
        self.disable_meta_optimizer
    }
    pub fn clear_disable_meta_optimizer(&mut self) {
        self.disable_meta_optimizer = false;
    }

    // Param is passed by value, moved
    pub fn set_disable_meta_optimizer(&mut self, v: bool) {
        self.disable_meta_optimizer = v;
    }

    // .tensorflow.RewriterConfig.NumIterationsType meta_optimizer_iterations = 12;


    pub fn get_meta_optimizer_iterations(&self) -> RewriterConfig_NumIterationsType {
        self.meta_optimizer_iterations
    }
    pub fn clear_meta_optimizer_iterations(&mut self) {
        self.meta_optimizer_iterations = RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS;
    }

    // Param is passed by value, moved
    pub fn set_meta_optimizer_iterations(&mut self, v: RewriterConfig_NumIterationsType) {
        self.meta_optimizer_iterations = v;
    }

    // int32 min_graph_nodes = 17;


    pub fn get_min_graph_nodes(&self) -> i32 {
        self.min_graph_nodes
    }
    pub fn clear_min_graph_nodes(&mut self) {
        self.min_graph_nodes = 0;
    }

    // Param is passed by value, moved
    pub fn set_min_graph_nodes(&mut self, v: i32) {
        self.min_graph_nodes = v;
    }

    // .tensorflow.RewriterConfig.MemOptType memory_optimization = 4;


    pub fn get_memory_optimization(&self) -> RewriterConfig_MemOptType {
        self.memory_optimization
    }
    pub fn clear_memory_optimization(&mut self) {
        self.memory_optimization = RewriterConfig_MemOptType::DEFAULT_MEM_OPT;
    }

    // Param is passed by value, moved
    pub fn set_memory_optimization(&mut self, v: RewriterConfig_MemOptType) {
        self.memory_optimization = v;
    }

    // string memory_optimizer_target_node_name_scope = 6;


    pub fn get_memory_optimizer_target_node_name_scope(&self) -> &str {
        &self.memory_optimizer_target_node_name_scope
    }
    pub fn clear_memory_optimizer_target_node_name_scope(&mut self) {
        self.memory_optimizer_target_node_name_scope.clear();
    }

    // Param is passed by value, moved
    pub fn set_memory_optimizer_target_node_name_scope(&mut self, v: ::std::string::String) {
        self.memory_optimizer_target_node_name_scope = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_memory_optimizer_target_node_name_scope(&mut self) -> &mut ::std::string::String {
        &mut self.memory_optimizer_target_node_name_scope
    }

    // Take field
    pub fn take_memory_optimizer_target_node_name_scope(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.memory_optimizer_target_node_name_scope, ::std::string::String::new())
    }

    // int64 meta_optimizer_timeout_ms = 20;


    pub fn get_meta_optimizer_timeout_ms(&self) -> i64 {
        self.meta_optimizer_timeout_ms
    }
    pub fn clear_meta_optimizer_timeout_ms(&mut self) {
        self.meta_optimizer_timeout_ms = 0;
    }

    // Param is passed by value, moved
    pub fn set_meta_optimizer_timeout_ms(&mut self, v: i64) {
        self.meta_optimizer_timeout_ms = v;
    }

    // .tensorflow.AutoParallelOptions auto_parallel = 5;


    pub fn get_auto_parallel(&self) -> &AutoParallelOptions {
        self.auto_parallel.as_ref().unwrap_or_else(|| AutoParallelOptions::default_instance())
    }
    pub fn clear_auto_parallel(&mut self) {
        self.auto_parallel.clear();
    }

    pub fn has_auto_parallel(&self) -> bool {
        self.auto_parallel.is_some()
    }

    // Param is passed by value, moved
    pub fn set_auto_parallel(&mut self, v: AutoParallelOptions) {
        self.auto_parallel = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_auto_parallel(&mut self) -> &mut AutoParallelOptions {
        if self.auto_parallel.is_none() {
            self.auto_parallel.set_default();
        }
        self.auto_parallel.as_mut().unwrap()
    }

    // Take field
    pub fn take_auto_parallel(&mut self) -> AutoParallelOptions {
        self.auto_parallel.take().unwrap_or_else(|| AutoParallelOptions::new())
    }

    // bool fail_on_optimizer_errors = 21;


    pub fn get_fail_on_optimizer_errors(&self) -> bool {
        self.fail_on_optimizer_errors
    }
    pub fn clear_fail_on_optimizer_errors(&mut self) {
        self.fail_on_optimizer_errors = false;
    }

    // Param is passed by value, moved
    pub fn set_fail_on_optimizer_errors(&mut self, v: bool) {
        self.fail_on_optimizer_errors = v;
    }

    // .tensorflow.ScopedAllocatorOptions scoped_allocator_opts = 16;


    pub fn get_scoped_allocator_opts(&self) -> &ScopedAllocatorOptions {
        self.scoped_allocator_opts.as_ref().unwrap_or_else(|| ScopedAllocatorOptions::default_instance())
    }
    pub fn clear_scoped_allocator_opts(&mut self) {
        self.scoped_allocator_opts.clear();
    }

    pub fn has_scoped_allocator_opts(&self) -> bool {
        self.scoped_allocator_opts.is_some()
    }

    // Param is passed by value, moved
    pub fn set_scoped_allocator_opts(&mut self, v: ScopedAllocatorOptions) {
        self.scoped_allocator_opts = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_scoped_allocator_opts(&mut self) -> &mut ScopedAllocatorOptions {
        if self.scoped_allocator_opts.is_none() {
            self.scoped_allocator_opts.set_default();
        }
        self.scoped_allocator_opts.as_mut().unwrap()
    }

    // Take field
    pub fn take_scoped_allocator_opts(&mut self) -> ScopedAllocatorOptions {
        self.scoped_allocator_opts.take().unwrap_or_else(|| ScopedAllocatorOptions::new())
    }

    // repeated string optimizers = 100;


    pub fn get_optimizers(&self) -> &[::std::string::String] {
        &self.optimizers
    }
    pub fn clear_optimizers(&mut self) {
        self.optimizers.clear();
    }

    // Param is passed by value, moved
    pub fn set_optimizers(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
        self.optimizers = v;
    }

    // Mutable pointer to the field.
    pub fn mut_optimizers(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
        &mut self.optimizers
    }

    // Take field
    pub fn take_optimizers(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
        ::std::mem::replace(&mut self.optimizers, ::protobuf::RepeatedField::new())
    }

    // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer custom_optimizers = 200;


    pub fn get_custom_optimizers(&self) -> &[RewriterConfig_CustomGraphOptimizer] {
        &self.custom_optimizers
    }
    pub fn clear_custom_optimizers(&mut self) {
        self.custom_optimizers.clear();
    }

    // Param is passed by value, moved
    pub fn set_custom_optimizers(&mut self, v: ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer>) {
        self.custom_optimizers = v;
    }

    // Mutable pointer to the field.
    pub fn mut_custom_optimizers(&mut self) -> &mut ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer> {
        &mut self.custom_optimizers
    }

    // Take field
    pub fn take_custom_optimizers(&mut self) -> ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer> {
        ::std::mem::replace(&mut self.custom_optimizers, ::protobuf::RepeatedField::new())
    }

    // .tensorflow.VerifierConfig inter_optimizer_verifier_config = 300;


    pub fn get_inter_optimizer_verifier_config(&self) -> &super::verifier_config::VerifierConfig {
        self.inter_optimizer_verifier_config.as_ref().unwrap_or_else(|| super::verifier_config::VerifierConfig::default_instance())
    }
    pub fn clear_inter_optimizer_verifier_config(&mut self) {
        self.inter_optimizer_verifier_config.clear();
    }

    pub fn has_inter_optimizer_verifier_config(&self) -> bool {
        self.inter_optimizer_verifier_config.is_some()
    }

    // Param is passed by value, moved
    pub fn set_inter_optimizer_verifier_config(&mut self, v: super::verifier_config::VerifierConfig) {
        self.inter_optimizer_verifier_config = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_inter_optimizer_verifier_config(&mut self) -> &mut super::verifier_config::VerifierConfig {
        if self.inter_optimizer_verifier_config.is_none() {
            self.inter_optimizer_verifier_config.set_default();
        }
        self.inter_optimizer_verifier_config.as_mut().unwrap()
    }

    // Take field
    pub fn take_inter_optimizer_verifier_config(&mut self) -> super::verifier_config::VerifierConfig {
        self.inter_optimizer_verifier_config.take().unwrap_or_else(|| super::verifier_config::VerifierConfig::new())
    }

    // .tensorflow.VerifierConfig post_optimization_verifier_config = 301;


    pub fn get_post_optimization_verifier_config(&self) -> &super::verifier_config::VerifierConfig {
        self.post_optimization_verifier_config.as_ref().unwrap_or_else(|| super::verifier_config::VerifierConfig::default_instance())
    }
    pub fn clear_post_optimization_verifier_config(&mut self) {
        self.post_optimization_verifier_config.clear();
    }

    pub fn has_post_optimization_verifier_config(&self) -> bool {
        self.post_optimization_verifier_config.is_some()
    }

    // Param is passed by value, moved
    pub fn set_post_optimization_verifier_config(&mut self, v: super::verifier_config::VerifierConfig) {
        self.post_optimization_verifier_config = ::protobuf::SingularPtrField::some(v);
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_post_optimization_verifier_config(&mut self) -> &mut super::verifier_config::VerifierConfig {
        if self.post_optimization_verifier_config.is_none() {
            self.post_optimization_verifier_config.set_default();
        }
        self.post_optimization_verifier_config.as_mut().unwrap()
    }

    // Take field
    pub fn take_post_optimization_verifier_config(&mut self) -> super::verifier_config::VerifierConfig {
        self.post_optimization_verifier_config.take().unwrap_or_else(|| super::verifier_config::VerifierConfig::new())
    }
}

impl ::protobuf::Message for RewriterConfig {
    fn is_initialized(&self) -> bool {
        for v in &self.auto_parallel {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.scoped_allocator_opts {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.custom_optimizers {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.inter_optimizer_verifier_config {
            if !v.is_initialized() {
                return false;
            }
        };
        for v in &self.post_optimization_verifier_config {
            if !v.is_initialized() {
                return false;
            }
        };
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.layout_optimizer, 1, &mut self.unknown_fields)?
                },
                3 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.constant_folding, 3, &mut self.unknown_fields)?
                },
                13 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.shape_optimization, 13, &mut self.unknown_fields)?
                },
                14 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.remapping, 14, &mut self.unknown_fields)?
                },
                7 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.arithmetic_optimization, 7, &mut self.unknown_fields)?
                },
                8 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.dependency_optimization, 8, &mut self.unknown_fields)?
                },
                9 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.loop_optimization, 9, &mut self.unknown_fields)?
                },
                10 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.function_optimization, 10, &mut self.unknown_fields)?
                },
                11 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.debug_stripper, 11, &mut self.unknown_fields)?
                },
                2 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.disable_model_pruning = tmp;
                },
                15 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.scoped_allocator_optimization, 15, &mut self.unknown_fields)?
                },
                18 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.pin_to_host_optimization, 18, &mut self.unknown_fields)?
                },
                22 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.implementation_selector, 22, &mut self.unknown_fields)?
                },
                23 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.auto_mixed_precision, 23, &mut self.unknown_fields)?
                },
                19 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.disable_meta_optimizer = tmp;
                },
                12 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.meta_optimizer_iterations, 12, &mut self.unknown_fields)?
                },
                17 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int32()?;
                    self.min_graph_nodes = tmp;
                },
                4 => {
                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.memory_optimization, 4, &mut self.unknown_fields)?
                },
                6 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.memory_optimizer_target_node_name_scope)?;
                },
                20 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_int64()?;
                    self.meta_optimizer_timeout_ms = tmp;
                },
                5 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.auto_parallel)?;
                },
                21 => {
                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
                    }
                    let tmp = is.read_bool()?;
                    self.fail_on_optimizer_errors = tmp;
                },
                16 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.scoped_allocator_opts)?;
                },
                100 => {
                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.optimizers)?;
                },
                200 => {
                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.custom_optimizers)?;
                },
                300 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.inter_optimizer_verifier_config)?;
                },
                301 => {
                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.post_optimization_verifier_config)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if self.layout_optimizer != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(1, self.layout_optimizer);
        }
        if self.constant_folding != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(3, self.constant_folding);
        }
        if self.shape_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(13, self.shape_optimization);
        }
        if self.remapping != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(14, self.remapping);
        }
        if self.arithmetic_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(7, self.arithmetic_optimization);
        }
        if self.dependency_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(8, self.dependency_optimization);
        }
        if self.loop_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(9, self.loop_optimization);
        }
        if self.function_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(10, self.function_optimization);
        }
        if self.debug_stripper != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(11, self.debug_stripper);
        }
        if self.disable_model_pruning != false {
            my_size += 2;
        }
        if self.scoped_allocator_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(15, self.scoped_allocator_optimization);
        }
        if self.pin_to_host_optimization != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(18, self.pin_to_host_optimization);
        }
        if self.implementation_selector != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(22, self.implementation_selector);
        }
        if self.auto_mixed_precision != RewriterConfig_Toggle::DEFAULT {
            my_size += ::protobuf::rt::enum_size(23, self.auto_mixed_precision);
        }
        if self.disable_meta_optimizer != false {
            my_size += 3;
        }
        if self.meta_optimizer_iterations != RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS {
            my_size += ::protobuf::rt::enum_size(12, self.meta_optimizer_iterations);
        }
        if self.min_graph_nodes != 0 {
            my_size += ::protobuf::rt::value_size(17, self.min_graph_nodes, ::protobuf::wire_format::WireTypeVarint);
        }
        if self.memory_optimization != RewriterConfig_MemOptType::DEFAULT_MEM_OPT {
            my_size += ::protobuf::rt::enum_size(4, self.memory_optimization);
        }
        if !self.memory_optimizer_target_node_name_scope.is_empty() {
            my_size += ::protobuf::rt::string_size(6, &self.memory_optimizer_target_node_name_scope);
        }
        if self.meta_optimizer_timeout_ms != 0 {
            my_size += ::protobuf::rt::value_size(20, self.meta_optimizer_timeout_ms, ::protobuf::wire_format::WireTypeVarint);
        }
        if let Some(ref v) = self.auto_parallel.as_ref() {
            let len = v.compute_size();
            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if self.fail_on_optimizer_errors != false {
            my_size += 3;
        }
        if let Some(ref v) = self.scoped_allocator_opts.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        for value in &self.optimizers {
            my_size += ::protobuf::rt::string_size(100, &value);
        };
        for value in &self.custom_optimizers {
            let len = value.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        };
        if let Some(ref v) = self.inter_optimizer_verifier_config.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        if let Some(ref v) = self.post_optimization_verifier_config.as_ref() {
            let len = v.compute_size();
            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
        }
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream) -> ::protobuf::ProtobufResult<()> {
        if self.layout_optimizer != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(1, self.layout_optimizer.value())?;
        }
        if self.constant_folding != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(3, self.constant_folding.value())?;
        }
        if self.shape_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(13, self.shape_optimization.value())?;
        }
        if self.remapping != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(14, self.remapping.value())?;
        }
        if self.arithmetic_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(7, self.arithmetic_optimization.value())?;
        }
        if self.dependency_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(8, self.dependency_optimization.value())?;
        }
        if self.loop_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(9, self.loop_optimization.value())?;
        }
        if self.function_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(10, self.function_optimization.value())?;
        }
        if self.debug_stripper != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(11, self.debug_stripper.value())?;
        }
        if self.disable_model_pruning != false {
            os.write_bool(2, self.disable_model_pruning)?;
        }
        if self.scoped_allocator_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(15, self.scoped_allocator_optimization.value())?;
        }
        if self.pin_to_host_optimization != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(18, self.pin_to_host_optimization.value())?;
        }
        if self.implementation_selector != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(22, self.implementation_selector.value())?;
        }
        if self.auto_mixed_precision != RewriterConfig_Toggle::DEFAULT {
            os.write_enum(23, self.auto_mixed_precision.value())?;
        }
        if self.disable_meta_optimizer != false {
            os.write_bool(19, self.disable_meta_optimizer)?;
        }
        if self.meta_optimizer_iterations != RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS {
            os.write_enum(12, self.meta_optimizer_iterations.value())?;
        }
        if self.min_graph_nodes != 0 {
            os.write_int32(17, self.min_graph_nodes)?;
        }
        if self.memory_optimization != RewriterConfig_MemOptType::DEFAULT_MEM_OPT {
            os.write_enum(4, self.memory_optimization.value())?;
        }
        if !self.memory_optimizer_target_node_name_scope.is_empty() {
            os.write_string(6, &self.memory_optimizer_target_node_name_scope)?;
        }
        if self.meta_optimizer_timeout_ms != 0 {
            os.write_int64(20, self.meta_optimizer_timeout_ms)?;
        }
        if let Some(ref v) = self.auto_parallel.as_ref() {
            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if self.fail_on_optimizer_errors != false {
            os.write_bool(21, self.fail_on_optimizer_errors)?;
        }
        if let Some(ref v) = self.scoped_allocator_opts.as_ref() {
            os.write_tag(16, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        for v in &self.optimizers {
            os.write_string(100, &v)?;
        };
        for v in &self.custom_optimizers {
            os.write_tag(200, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        };
        if let Some(ref v) = self.inter_optimizer_verifier_config.as_ref() {
            os.write_tag(300, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        if let Some(ref v) = self.post_optimization_verifier_config.as_ref() {
            os.write_tag(301, ::protobuf::wire_format::WireTypeLengthDelimited)?;
            os.write_raw_varint32(v.get_cached_size())?;
            v.write_to_with_cached_sizes(os)?;
        }
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> RewriterConfig {
        RewriterConfig::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "layout_optimizer",
                    |m: &RewriterConfig| { &m.layout_optimizer },
                    |m: &mut RewriterConfig| { &mut m.layout_optimizer },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "constant_folding",
                    |m: &RewriterConfig| { &m.constant_folding },
                    |m: &mut RewriterConfig| { &mut m.constant_folding },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "shape_optimization",
                    |m: &RewriterConfig| { &m.shape_optimization },
                    |m: &mut RewriterConfig| { &mut m.shape_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "remapping",
                    |m: &RewriterConfig| { &m.remapping },
                    |m: &mut RewriterConfig| { &mut m.remapping },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "arithmetic_optimization",
                    |m: &RewriterConfig| { &m.arithmetic_optimization },
                    |m: &mut RewriterConfig| { &mut m.arithmetic_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "dependency_optimization",
                    |m: &RewriterConfig| { &m.dependency_optimization },
                    |m: &mut RewriterConfig| { &mut m.dependency_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "loop_optimization",
                    |m: &RewriterConfig| { &m.loop_optimization },
                    |m: &mut RewriterConfig| { &mut m.loop_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "function_optimization",
                    |m: &RewriterConfig| { &m.function_optimization },
                    |m: &mut RewriterConfig| { &mut m.function_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "debug_stripper",
                    |m: &RewriterConfig| { &m.debug_stripper },
                    |m: &mut RewriterConfig| { &mut m.debug_stripper },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                    "disable_model_pruning",
                    |m: &RewriterConfig| { &m.disable_model_pruning },
                    |m: &mut RewriterConfig| { &mut m.disable_model_pruning },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "scoped_allocator_optimization",
                    |m: &RewriterConfig| { &m.scoped_allocator_optimization },
                    |m: &mut RewriterConfig| { &mut m.scoped_allocator_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "pin_to_host_optimization",
                    |m: &RewriterConfig| { &m.pin_to_host_optimization },
                    |m: &mut RewriterConfig| { &mut m.pin_to_host_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "implementation_selector",
                    |m: &RewriterConfig| { &m.implementation_selector },
                    |m: &mut RewriterConfig| { &mut m.implementation_selector },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
                    "auto_mixed_precision",
                    |m: &RewriterConfig| { &m.auto_mixed_precision },
                    |m: &mut RewriterConfig| { &mut m.auto_mixed_precision },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                    "disable_meta_optimizer",
                    |m: &RewriterConfig| { &m.disable_meta_optimizer },
                    |m: &mut RewriterConfig| { &mut m.disable_meta_optimizer },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_NumIterationsType>>(
                    "meta_optimizer_iterations",
                    |m: &RewriterConfig| { &m.meta_optimizer_iterations },
                    |m: &mut RewriterConfig| { &mut m.meta_optimizer_iterations },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
                    "min_graph_nodes",
                    |m: &RewriterConfig| { &m.min_graph_nodes },
                    |m: &mut RewriterConfig| { &mut m.min_graph_nodes },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_MemOptType>>(
                    "memory_optimization",
                    |m: &RewriterConfig| { &m.memory_optimization },
                    |m: &mut RewriterConfig| { &mut m.memory_optimization },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                    "memory_optimizer_target_node_name_scope",
                    |m: &RewriterConfig| { &m.memory_optimizer_target_node_name_scope },
                    |m: &mut RewriterConfig| { &mut m.memory_optimizer_target_node_name_scope },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
                    "meta_optimizer_timeout_ms",
                    |m: &RewriterConfig| { &m.meta_optimizer_timeout_ms },
                    |m: &mut RewriterConfig| { &mut m.meta_optimizer_timeout_ms },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<AutoParallelOptions>>(
                    "auto_parallel",
                    |m: &RewriterConfig| { &m.auto_parallel },
                    |m: &mut RewriterConfig| { &mut m.auto_parallel },
                ));
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
                    "fail_on_optimizer_errors",
                    |m: &RewriterConfig| { &m.fail_on_optimizer_errors },
                    |m: &mut RewriterConfig| { &mut m.fail_on_optimizer_errors },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ScopedAllocatorOptions>>(
                    "scoped_allocator_opts",
                    |m: &RewriterConfig| { &m.scoped_allocator_opts },
                    |m: &mut RewriterConfig| { &mut m.scoped_allocator_opts },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                    "optimizers",
                    |m: &RewriterConfig| { &m.optimizers },
                    |m: &mut RewriterConfig| { &mut m.optimizers },
                ));
                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RewriterConfig_CustomGraphOptimizer>>(
                    "custom_optimizers",
                    |m: &RewriterConfig| { &m.custom_optimizers },
                    |m: &mut RewriterConfig| { &mut m.custom_optimizers },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::verifier_config::VerifierConfig>>(
                    "inter_optimizer_verifier_config",
                    |m: &RewriterConfig| { &m.inter_optimizer_verifier_config },
                    |m: &mut RewriterConfig| { &mut m.inter_optimizer_verifier_config },
                ));
                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::verifier_config::VerifierConfig>>(
                    "post_optimization_verifier_config",
                    |m: &RewriterConfig| { &m.post_optimization_verifier_config },
                    |m: &mut RewriterConfig| { &mut m.post_optimization_verifier_config },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<RewriterConfig>(
                    "RewriterConfig",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static RewriterConfig {
        static mut instance: ::protobuf::lazy::Lazy<RewriterConfig> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const RewriterConfig,
        };
        unsafe {
            instance.get(RewriterConfig::new)
        }
    }
}

impl ::protobuf::Clear for RewriterConfig {
    fn clear(&mut self) {
        self.layout_optimizer = RewriterConfig_Toggle::DEFAULT;
        self.constant_folding = RewriterConfig_Toggle::DEFAULT;
        self.shape_optimization = RewriterConfig_Toggle::DEFAULT;
        self.remapping = RewriterConfig_Toggle::DEFAULT;
        self.arithmetic_optimization = RewriterConfig_Toggle::DEFAULT;
        self.dependency_optimization = RewriterConfig_Toggle::DEFAULT;
        self.loop_optimization = RewriterConfig_Toggle::DEFAULT;
        self.function_optimization = RewriterConfig_Toggle::DEFAULT;
        self.debug_stripper = RewriterConfig_Toggle::DEFAULT;
        self.disable_model_pruning = false;
        self.scoped_allocator_optimization = RewriterConfig_Toggle::DEFAULT;
        self.pin_to_host_optimization = RewriterConfig_Toggle::DEFAULT;
        self.implementation_selector = RewriterConfig_Toggle::DEFAULT;
        self.auto_mixed_precision = RewriterConfig_Toggle::DEFAULT;
        self.disable_meta_optimizer = false;
        self.meta_optimizer_iterations = RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS;
        self.min_graph_nodes = 0;
        self.memory_optimization = RewriterConfig_MemOptType::DEFAULT_MEM_OPT;
        self.memory_optimizer_target_node_name_scope.clear();
        self.meta_optimizer_timeout_ms = 0;
        self.auto_parallel.clear();
        self.fail_on_optimizer_errors = false;
        self.scoped_allocator_opts.clear();
        self.optimizers.clear();
        self.custom_optimizers.clear();
        self.inter_optimizer_verifier_config.clear();
        self.post_optimization_verifier_config.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for RewriterConfig {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for RewriterConfig {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(PartialEq,Clone,Default)]
pub struct RewriterConfig_CustomGraphOptimizer {
    // message fields
    pub name: ::std::string::String,
    pub parameter_map: ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue>,
    // special fields
    pub unknown_fields: ::protobuf::UnknownFields,
    pub cached_size: ::protobuf::CachedSize,
}

impl<'a> ::std::default::Default for &'a RewriterConfig_CustomGraphOptimizer {
    fn default() -> &'a RewriterConfig_CustomGraphOptimizer {
        <RewriterConfig_CustomGraphOptimizer as ::protobuf::Message>::default_instance()
    }
}

impl RewriterConfig_CustomGraphOptimizer {
    pub fn new() -> RewriterConfig_CustomGraphOptimizer {
        ::std::default::Default::default()
    }

    // string name = 1;


    pub fn get_name(&self) -> &str {
        &self.name
    }
    pub fn clear_name(&mut self) {
        self.name.clear();
    }

    // Param is passed by value, moved
    pub fn set_name(&mut self, v: ::std::string::String) {
        self.name = v;
    }

    // Mutable pointer to the field.
    // If field is not initialized, it is initialized with default value first.
    pub fn mut_name(&mut self) -> &mut ::std::string::String {
        &mut self.name
    }

    // Take field
    pub fn take_name(&mut self) -> ::std::string::String {
        ::std::mem::replace(&mut self.name, ::std::string::String::new())
    }

    // repeated .tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry parameter_map = 2;


    pub fn get_parameter_map(&self) -> &::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue> {
        &self.parameter_map
    }
    pub fn clear_parameter_map(&mut self) {
        self.parameter_map.clear();
    }

    // Param is passed by value, moved
    pub fn set_parameter_map(&mut self, v: ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue>) {
        self.parameter_map = v;
    }

    // Mutable pointer to the field.
    pub fn mut_parameter_map(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue> {
        &mut self.parameter_map
    }

    // Take field
    pub fn take_parameter_map(&mut self) -> ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue> {
        ::std::mem::replace(&mut self.parameter_map, ::std::collections::HashMap::new())
    }
}

impl ::protobuf::Message for RewriterConfig_CustomGraphOptimizer {
    fn is_initialized(&self) -> bool {
        true
    }

    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream) -> ::protobuf::ProtobufResult<()> {
        while !is.eof()? {
            let (field_number, wire_type) = is.read_tag_unpack()?;
            match field_number {
                1 => {
                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
                },
                2 => {
                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(wire_type, is, &mut self.parameter_map)?;
                },
                _ => {
                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                },
            };
        }
        ::std::result::Result::Ok(())
    }

    // Compute sizes of nested messages
    #[allow(unused_variables)]
    fn compute_size(&self) -> u32 {
        let mut my_size = 0;
        if !self.name.is_empty() {
            my_size += ::protobuf::rt::string_size(1, &self.name);
        }
        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(2, &self.parameter_map);
        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
        self.cached_size.set(my_size);
        my_size
    }

    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream) -> ::protobuf::ProtobufResult<()> {
        if !self.name.is_empty() {
            os.write_string(1, &self.name)?;
        }
        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(2, &self.parameter_map, os)?;
        os.write_unknown_fields(self.get_unknown_fields())?;
        ::std::result::Result::Ok(())
    }

    fn get_cached_size(&self) -> u32 {
        self.cached_size.get()
    }

    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
        &self.unknown_fields
    }

    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
        &mut self.unknown_fields
    }

    fn as_any(&self) -> &dyn (::std::any::Any) {
        self as &dyn (::std::any::Any)
    }
    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
        self as &mut dyn (::std::any::Any)
    }
    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
        self
    }

    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
        Self::descriptor_static()
    }

    fn new() -> RewriterConfig_CustomGraphOptimizer {
        RewriterConfig_CustomGraphOptimizer::new()
    }

    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::MessageDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                let mut fields = ::std::vec::Vec::new();
                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
                    "name",
                    |m: &RewriterConfig_CustomGraphOptimizer| { &m.name },
                    |m: &mut RewriterConfig_CustomGraphOptimizer| { &mut m.name },
                ));
                fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(
                    "parameter_map",
                    |m: &RewriterConfig_CustomGraphOptimizer| { &m.parameter_map },
                    |m: &mut RewriterConfig_CustomGraphOptimizer| { &mut m.parameter_map },
                ));
                ::protobuf::reflect::MessageDescriptor::new::<RewriterConfig_CustomGraphOptimizer>(
                    "RewriterConfig_CustomGraphOptimizer",
                    fields,
                    file_descriptor_proto()
                )
            })
        }
    }

    fn default_instance() -> &'static RewriterConfig_CustomGraphOptimizer {
        static mut instance: ::protobuf::lazy::Lazy<RewriterConfig_CustomGraphOptimizer> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const RewriterConfig_CustomGraphOptimizer,
        };
        unsafe {
            instance.get(RewriterConfig_CustomGraphOptimizer::new)
        }
    }
}

impl ::protobuf::Clear for RewriterConfig_CustomGraphOptimizer {
    fn clear(&mut self) {
        self.name.clear();
        self.parameter_map.clear();
        self.unknown_fields.clear();
    }
}

impl ::std::fmt::Debug for RewriterConfig_CustomGraphOptimizer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        ::protobuf::text_format::fmt(self, f)
    }
}

impl ::protobuf::reflect::ProtobufValue for RewriterConfig_CustomGraphOptimizer {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Message(self)
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum RewriterConfig_Toggle {
    DEFAULT = 0,
    ON = 1,
    OFF = 2,
    AGGRESSIVE = 3,
}

impl ::protobuf::ProtobufEnum for RewriterConfig_Toggle {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<RewriterConfig_Toggle> {
        match value {
            0 => ::std::option::Option::Some(RewriterConfig_Toggle::DEFAULT),
            1 => ::std::option::Option::Some(RewriterConfig_Toggle::ON),
            2 => ::std::option::Option::Some(RewriterConfig_Toggle::OFF),
            3 => ::std::option::Option::Some(RewriterConfig_Toggle::AGGRESSIVE),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [RewriterConfig_Toggle] = &[
            RewriterConfig_Toggle::DEFAULT,
            RewriterConfig_Toggle::ON,
            RewriterConfig_Toggle::OFF,
            RewriterConfig_Toggle::AGGRESSIVE,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::EnumDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                ::protobuf::reflect::EnumDescriptor::new("RewriterConfig_Toggle", file_descriptor_proto())
            })
        }
    }
}

impl ::std::marker::Copy for RewriterConfig_Toggle {
}

impl ::std::default::Default for RewriterConfig_Toggle {
    fn default() -> Self {
        RewriterConfig_Toggle::DEFAULT
    }
}

impl ::protobuf::reflect::ProtobufValue for RewriterConfig_Toggle {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Enum(self.descriptor())
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum RewriterConfig_NumIterationsType {
    DEFAULT_NUM_ITERS = 0,
    ONE = 1,
    TWO = 2,
}

impl ::protobuf::ProtobufEnum for RewriterConfig_NumIterationsType {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<RewriterConfig_NumIterationsType> {
        match value {
            0 => ::std::option::Option::Some(RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS),
            1 => ::std::option::Option::Some(RewriterConfig_NumIterationsType::ONE),
            2 => ::std::option::Option::Some(RewriterConfig_NumIterationsType::TWO),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [RewriterConfig_NumIterationsType] = &[
            RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS,
            RewriterConfig_NumIterationsType::ONE,
            RewriterConfig_NumIterationsType::TWO,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::EnumDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                ::protobuf::reflect::EnumDescriptor::new("RewriterConfig_NumIterationsType", file_descriptor_proto())
            })
        }
    }
}

impl ::std::marker::Copy for RewriterConfig_NumIterationsType {
}

impl ::std::default::Default for RewriterConfig_NumIterationsType {
    fn default() -> Self {
        RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS
    }
}

impl ::protobuf::reflect::ProtobufValue for RewriterConfig_NumIterationsType {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Enum(self.descriptor())
    }
}

#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum RewriterConfig_MemOptType {
    DEFAULT_MEM_OPT = 0,
    NO_MEM_OPT = 1,
    MANUAL = 2,
    SWAPPING_HEURISTICS = 4,
    RECOMPUTATION_HEURISTICS = 5,
    SCHEDULING_HEURISTICS = 6,
    HEURISTICS = 3,
}

impl ::protobuf::ProtobufEnum for RewriterConfig_MemOptType {
    fn value(&self) -> i32 {
        *self as i32
    }

    fn from_i32(value: i32) -> ::std::option::Option<RewriterConfig_MemOptType> {
        match value {
            0 => ::std::option::Option::Some(RewriterConfig_MemOptType::DEFAULT_MEM_OPT),
            1 => ::std::option::Option::Some(RewriterConfig_MemOptType::NO_MEM_OPT),
            2 => ::std::option::Option::Some(RewriterConfig_MemOptType::MANUAL),
            4 => ::std::option::Option::Some(RewriterConfig_MemOptType::SWAPPING_HEURISTICS),
            5 => ::std::option::Option::Some(RewriterConfig_MemOptType::RECOMPUTATION_HEURISTICS),
            6 => ::std::option::Option::Some(RewriterConfig_MemOptType::SCHEDULING_HEURISTICS),
            3 => ::std::option::Option::Some(RewriterConfig_MemOptType::HEURISTICS),
            _ => ::std::option::Option::None
        }
    }

    fn values() -> &'static [Self] {
        static values: &'static [RewriterConfig_MemOptType] = &[
            RewriterConfig_MemOptType::DEFAULT_MEM_OPT,
            RewriterConfig_MemOptType::NO_MEM_OPT,
            RewriterConfig_MemOptType::MANUAL,
            RewriterConfig_MemOptType::SWAPPING_HEURISTICS,
            RewriterConfig_MemOptType::RECOMPUTATION_HEURISTICS,
            RewriterConfig_MemOptType::SCHEDULING_HEURISTICS,
            RewriterConfig_MemOptType::HEURISTICS,
        ];
        values
    }

    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy {
            lock: ::protobuf::lazy::ONCE_INIT,
            ptr: 0 as *const ::protobuf::reflect::EnumDescriptor,
        };
        unsafe {
            descriptor.get(|| {
                ::protobuf::reflect::EnumDescriptor::new("RewriterConfig_MemOptType", file_descriptor_proto())
            })
        }
    }
}

impl ::std::marker::Copy for RewriterConfig_MemOptType {
}

impl ::std::default::Default for RewriterConfig_MemOptType {
    fn default() -> Self {
        RewriterConfig_MemOptType::DEFAULT_MEM_OPT
    }
}

impl ::protobuf::reflect::ProtobufValue for RewriterConfig_MemOptType {
    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
        ::protobuf::reflect::ProtobufValueRef::Enum(self.descriptor())
    }
}

static file_descriptor_proto_data: &'static [u8] = b"\
    \n.tensorflow/core/protobuf/rewriter_config.proto\x12\ntensorflow\x1a*te\
    nsorflow/core/framework/attr_value.proto\x1a.tensorflow/core/protobuf/ve\
    rifier_config.proto\"P\n\x13AutoParallelOptions\x12\x16\n\x06enable\x18\
    \x01\x20\x01(\x08R\x06enable\x12!\n\x0cnum_replicas\x18\x02\x20\x01(\x05\
    R\x0bnumReplicas\"5\n\x16ScopedAllocatorOptions\x12\x1b\n\tenable_op\x18\
    \x01\x20\x03(\tR\x08enableOp\"\xe8\x14\n\x0eRewriterConfig\x12L\n\x10lay\
    out_optimizer\x18\x01\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\
    \x0flayoutOptimizer\x12L\n\x10constant_folding\x18\x03\x20\x01(\x0e2!.te\
    nsorflow.RewriterConfig.ToggleR\x0fconstantFolding\x12P\n\x12shape_optim\
    ization\x18\r\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x11shapeO\
    ptimization\x12?\n\tremapping\x18\x0e\x20\x01(\x0e2!.tensorflow.Rewriter\
    Config.ToggleR\tremapping\x12Z\n\x17arithmetic_optimization\x18\x07\x20\
    \x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x16arithmeticOptimization\
    \x12Z\n\x17dependency_optimization\x18\x08\x20\x01(\x0e2!.tensorflow.Rew\
    riterConfig.ToggleR\x16dependencyOptimization\x12N\n\x11loop_optimizatio\
    n\x18\t\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x10loopOptimiza\
    tion\x12V\n\x15function_optimization\x18\n\x20\x01(\x0e2!.tensorflow.Rew\
    riterConfig.ToggleR\x14functionOptimization\x12H\n\x0edebug_stripper\x18\
    \x0b\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\rdebugStripper\x12\
    2\n\x15disable_model_pruning\x18\x02\x20\x01(\x08R\x13disableModelPrunin\
    g\x12e\n\x1dscoped_allocator_optimization\x18\x0f\x20\x01(\x0e2!.tensorf\
    low.RewriterConfig.ToggleR\x1bscopedAllocatorOptimization\x12Z\n\x18pin_\
    to_host_optimization\x18\x12\x20\x01(\x0e2!.tensorflow.RewriterConfig.To\
    ggleR\x15pinToHostOptimization\x12Z\n\x17implementation_selector\x18\x16\
    \x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x16implementationSelec\
    tor\x12S\n\x14auto_mixed_precision\x18\x17\x20\x01(\x0e2!.tensorflow.Rew\
    riterConfig.ToggleR\x12autoMixedPrecision\x124\n\x16disable_meta_optimiz\
    er\x18\x13\x20\x01(\x08R\x14disableMetaOptimizer\x12h\n\x19meta_optimize\
    r_iterations\x18\x0c\x20\x01(\x0e2,.tensorflow.RewriterConfig.NumIterati\
    onsTypeR\x17metaOptimizerIterations\x12&\n\x0fmin_graph_nodes\x18\x11\
    \x20\x01(\x05R\rminGraphNodes\x12V\n\x13memory_optimization\x18\x04\x20\
    \x01(\x0e2%.tensorflow.RewriterConfig.MemOptTypeR\x12memoryOptimization\
    \x12S\n'memory_optimizer_target_node_name_scope\x18\x06\x20\x01(\tR\"mem\
    oryOptimizerTargetNodeNameScope\x129\n\x19meta_optimizer_timeout_ms\x18\
    \x14\x20\x01(\x03R\x16metaOptimizerTimeoutMs\x12D\n\rauto_parallel\x18\
    \x05\x20\x01(\x0b2\x1f.tensorflow.AutoParallelOptionsR\x0cautoParallel\
    \x127\n\x18fail_on_optimizer_errors\x18\x15\x20\x01(\x08R\x15failOnOptim\
    izerErrors\x12V\n\x15scoped_allocator_opts\x18\x10\x20\x01(\x0b2\".tenso\
    rflow.ScopedAllocatorOptionsR\x13scopedAllocatorOpts\x12\x1e\n\noptimize\
    rs\x18d\x20\x03(\tR\noptimizers\x12]\n\x11custom_optimizers\x18\xc8\x01\
    \x20\x03(\x0b2/.tensorflow.RewriterConfig.CustomGraphOptimizerR\x10custo\
    mOptimizers\x12b\n\x1finter_optimizer_verifier_config\x18\xac\x02\x20\
    \x01(\x0b2\x1a.tensorflow.VerifierConfigR\x1cinterOptimizerVerifierConfi\
    g\x12f\n!post_optimization_verifier_config\x18\xad\x02\x20\x01(\x0b2\x1a\
    .tensorflow.VerifierConfigR\x1epostOptimizationVerifierConfig\x1a\xea\
    \x01\n\x14CustomGraphOptimizer\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04\
    name\x12f\n\rparameter_map\x18\x02\x20\x03(\x0b2A.tensorflow.RewriterCon\
    fig.CustomGraphOptimizer.ParameterMapEntryR\x0cparameterMap\x1aV\n\x11Pa\
    rameterMapEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12+\n\x05va\
    lue\x18\x02\x20\x01(\x0b2\x15.tensorflow.AttrValueR\x05value:\x028\x01\"\
    6\n\x06Toggle\x12\x0b\n\x07DEFAULT\x10\0\x12\x06\n\x02ON\x10\x01\x12\x07\
    \n\x03OFF\x10\x02\x12\x0e\n\nAGGRESSIVE\x10\x03\"<\n\x11NumIterationsTyp\
    e\x12\x15\n\x11DEFAULT_NUM_ITERS\x10\0\x12\x07\n\x03ONE\x10\x01\x12\x07\
    \n\x03TWO\x10\x02\"\x9f\x01\n\nMemOptType\x12\x13\n\x0fDEFAULT_MEM_OPT\
    \x10\0\x12\x0e\n\nNO_MEM_OPT\x10\x01\x12\n\n\x06MANUAL\x10\x02\x12\x17\n\
    \x13SWAPPING_HEURISTICS\x10\x04\x12\x1c\n\x18RECOMPUTATION_HEURISTICS\
    \x10\x05\x12\x19\n\x15SCHEDULING_HEURISTICS\x10\x06\x12\x0e\n\nHEURISTIC\
    S\x10\x03B5\n\x18org.tensorflow.frameworkB\x14RewriterConfigProtosP\x01\
    \xf8\x01\x01b\x06proto3\
";

static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy {
    lock: ::protobuf::lazy::ONCE_INIT,
    ptr: 0 as *const ::protobuf::descriptor::FileDescriptorProto,
};

fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
}

pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
    unsafe {
        file_descriptor_proto_lazy.get(|| {
            parse_descriptor_proto()
        })
    }
}