// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: clstm.proto

#ifndef PROTOBUF_clstm_2eproto__INCLUDED
#define PROTOBUF_clstm_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2006000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 2006000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/unknown_field_set.h>
// @@protoc_insertion_point(includes)

namespace clstm {

// Internal implementation detail -- do not call these.
void  protobuf_AddDesc_clstm_2eproto();
void protobuf_AssignDesc_clstm_2eproto();
void protobuf_ShutdownFile_clstm_2eproto();

class KeyValue;
class Array;
class NetworkProto;

// ===================================================================

class KeyValue : public ::google::protobuf::Message {
 public:
  KeyValue();
  virtual ~KeyValue();

  KeyValue(const KeyValue& from);

  inline KeyValue& operator=(const KeyValue& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const KeyValue& default_instance();

  void Swap(KeyValue* other);

  // implements Message ----------------------------------------------

  KeyValue* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const KeyValue& from);
  void MergeFrom(const KeyValue& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required string key = 1;
  inline bool has_key() const;
  inline void clear_key();
  static const int kKeyFieldNumber = 1;
  inline const ::std::string& key() const;
  inline void set_key(const ::std::string& value);
  inline void set_key(const char* value);
  inline void set_key(const char* value, size_t size);
  inline ::std::string* mutable_key();
  inline ::std::string* release_key();
  inline void set_allocated_key(::std::string* key);

  // required string value = 2;
  inline bool has_value() const;
  inline void clear_value();
  static const int kValueFieldNumber = 2;
  inline const ::std::string& value() const;
  inline void set_value(const ::std::string& value);
  inline void set_value(const char* value);
  inline void set_value(const char* value, size_t size);
  inline ::std::string* mutable_value();
  inline ::std::string* release_value();
  inline void set_allocated_value(::std::string* value);

  // @@protoc_insertion_point(class_scope:clstm.KeyValue)
 private:
  inline void set_has_key();
  inline void clear_has_key();
  inline void set_has_value();
  inline void clear_has_value();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::std::string* key_;
  ::std::string* value_;
  friend void  protobuf_AddDesc_clstm_2eproto();
  friend void protobuf_AssignDesc_clstm_2eproto();
  friend void protobuf_ShutdownFile_clstm_2eproto();

  void InitAsDefaultInstance();
  static KeyValue* default_instance_;
};
// -------------------------------------------------------------------

class Array : public ::google::protobuf::Message {
 public:
  Array();
  virtual ~Array();

  Array(const Array& from);

  inline Array& operator=(const Array& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const Array& default_instance();

  void Swap(Array* other);

  // implements Message ----------------------------------------------

  Array* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Array& from);
  void MergeFrom(const Array& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional string name = 1;
  inline bool has_name() const;
  inline void clear_name();
  static const int kNameFieldNumber = 1;
  inline const ::std::string& name() const;
  inline void set_name(const ::std::string& value);
  inline void set_name(const char* value);
  inline void set_name(const char* value, size_t size);
  inline ::std::string* mutable_name();
  inline ::std::string* release_name();
  inline void set_allocated_name(::std::string* name);

  // repeated int32 dim = 2;
  inline int dim_size() const;
  inline void clear_dim();
  static const int kDimFieldNumber = 2;
  inline ::google::protobuf::int32 dim(int index) const;
  inline void set_dim(int index, ::google::protobuf::int32 value);
  inline void add_dim(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      dim() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_dim();

  // repeated float value = 3;
  inline int value_size() const;
  inline void clear_value();
  static const int kValueFieldNumber = 3;
  inline float value(int index) const;
  inline void set_value(int index, float value);
  inline void add_value(float value);
  inline const ::google::protobuf::RepeatedField< float >&
      value() const;
  inline ::google::protobuf::RepeatedField< float >*
      mutable_value();

  // @@protoc_insertion_point(class_scope:clstm.Array)
 private:
  inline void set_has_name();
  inline void clear_has_name();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::std::string* name_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > dim_;
  ::google::protobuf::RepeatedField< float > value_;
  friend void  protobuf_AddDesc_clstm_2eproto();
  friend void protobuf_AssignDesc_clstm_2eproto();
  friend void protobuf_ShutdownFile_clstm_2eproto();

  void InitAsDefaultInstance();
  static Array* default_instance_;
};
// -------------------------------------------------------------------

class NetworkProto : public ::google::protobuf::Message {
 public:
  NetworkProto();
  virtual ~NetworkProto();

  NetworkProto(const NetworkProto& from);

  inline NetworkProto& operator=(const NetworkProto& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const NetworkProto& default_instance();

  void Swap(NetworkProto* other);

  // implements Message ----------------------------------------------

  NetworkProto* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const NetworkProto& from);
  void MergeFrom(const NetworkProto& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required string kind = 1;
  inline bool has_kind() const;
  inline void clear_kind();
  static const int kKindFieldNumber = 1;
  inline const ::std::string& kind() const;
  inline void set_kind(const ::std::string& value);
  inline void set_kind(const char* value);
  inline void set_kind(const char* value, size_t size);
  inline ::std::string* mutable_kind();
  inline ::std::string* release_kind();
  inline void set_allocated_kind(::std::string* kind);

  // optional string name = 2;
  inline bool has_name() const;
  inline void clear_name();
  static const int kNameFieldNumber = 2;
  inline const ::std::string& name() const;
  inline void set_name(const ::std::string& value);
  inline void set_name(const char* value);
  inline void set_name(const char* value, size_t size);
  inline ::std::string* mutable_name();
  inline ::std::string* release_name();
  inline void set_allocated_name(::std::string* name);

  // required int32 ninput = 10;
  inline bool has_ninput() const;
  inline void clear_ninput();
  static const int kNinputFieldNumber = 10;
  inline ::google::protobuf::int32 ninput() const;
  inline void set_ninput(::google::protobuf::int32 value);

  // required int32 noutput = 11;
  inline bool has_noutput() const;
  inline void clear_noutput();
  static const int kNoutputFieldNumber = 11;
  inline ::google::protobuf::int32 noutput() const;
  inline void set_noutput(::google::protobuf::int32 value);

  // repeated int32 icodec = 12;
  inline int icodec_size() const;
  inline void clear_icodec();
  static const int kIcodecFieldNumber = 12;
  inline ::google::protobuf::int32 icodec(int index) const;
  inline void set_icodec(int index, ::google::protobuf::int32 value);
  inline void add_icodec(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      icodec() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_icodec();

  // repeated int32 codec = 13;
  inline int codec_size() const;
  inline void clear_codec();
  static const int kCodecFieldNumber = 13;
  inline ::google::protobuf::int32 codec(int index) const;
  inline void set_codec(int index, ::google::protobuf::int32 value);
  inline void add_codec(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      codec() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_codec();

  // repeated .clstm.KeyValue attribute = 20;
  inline int attribute_size() const;
  inline void clear_attribute();
  static const int kAttributeFieldNumber = 20;
  inline const ::clstm::KeyValue& attribute(int index) const;
  inline ::clstm::KeyValue* mutable_attribute(int index);
  inline ::clstm::KeyValue* add_attribute();
  inline const ::google::protobuf::RepeatedPtrField< ::clstm::KeyValue >&
      attribute() const;
  inline ::google::protobuf::RepeatedPtrField< ::clstm::KeyValue >*
      mutable_attribute();

  // repeated .clstm.Array weights = 30;
  inline int weights_size() const;
  inline void clear_weights();
  static const int kWeightsFieldNumber = 30;
  inline const ::clstm::Array& weights(int index) const;
  inline ::clstm::Array* mutable_weights(int index);
  inline ::clstm::Array* add_weights();
  inline const ::google::protobuf::RepeatedPtrField< ::clstm::Array >&
      weights() const;
  inline ::google::protobuf::RepeatedPtrField< ::clstm::Array >*
      mutable_weights();

  // repeated .clstm.NetworkProto sub = 40;
  inline int sub_size() const;
  inline void clear_sub();
  static const int kSubFieldNumber = 40;
  inline const ::clstm::NetworkProto& sub(int index) const;
  inline ::clstm::NetworkProto* mutable_sub(int index);
  inline ::clstm::NetworkProto* add_sub();
  inline const ::google::protobuf::RepeatedPtrField< ::clstm::NetworkProto >&
      sub() const;
  inline ::google::protobuf::RepeatedPtrField< ::clstm::NetworkProto >*
      mutable_sub();

  // @@protoc_insertion_point(class_scope:clstm.NetworkProto)
 private:
  inline void set_has_kind();
  inline void clear_has_kind();
  inline void set_has_name();
  inline void clear_has_name();
  inline void set_has_ninput();
  inline void clear_has_ninput();
  inline void set_has_noutput();
  inline void clear_has_noutput();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::std::string* kind_;
  ::std::string* name_;
  ::google::protobuf::int32 ninput_;
  ::google::protobuf::int32 noutput_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > icodec_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > codec_;
  ::google::protobuf::RepeatedPtrField< ::clstm::KeyValue > attribute_;
  ::google::protobuf::RepeatedPtrField< ::clstm::Array > weights_;
  ::google::protobuf::RepeatedPtrField< ::clstm::NetworkProto > sub_;
  friend void  protobuf_AddDesc_clstm_2eproto();
  friend void protobuf_AssignDesc_clstm_2eproto();
  friend void protobuf_ShutdownFile_clstm_2eproto();

  void InitAsDefaultInstance();
  static NetworkProto* default_instance_;
};
// ===================================================================


// ===================================================================

// KeyValue

// required string key = 1;
inline bool KeyValue::has_key() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void KeyValue::set_has_key() {
  _has_bits_[0] |= 0x00000001u;
}
inline void KeyValue::clear_has_key() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void KeyValue::clear_key() {
  if (key_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    key_->clear();
  }
  clear_has_key();
}
inline const ::std::string& KeyValue::key() const {
  // @@protoc_insertion_point(field_get:clstm.KeyValue.key)
  return *key_;
}
inline void KeyValue::set_key(const ::std::string& value) {
  set_has_key();
  if (key_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    key_ = new ::std::string;
  }
  key_->assign(value);
  // @@protoc_insertion_point(field_set:clstm.KeyValue.key)
}
inline void KeyValue::set_key(const char* value) {
  set_has_key();
  if (key_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    key_ = new ::std::string;
  }
  key_->assign(value);
  // @@protoc_insertion_point(field_set_char:clstm.KeyValue.key)
}
inline void KeyValue::set_key(const char* value, size_t size) {
  set_has_key();
  if (key_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    key_ = new ::std::string;
  }
  key_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:clstm.KeyValue.key)
}
inline ::std::string* KeyValue::mutable_key() {
  set_has_key();
  if (key_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    key_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:clstm.KeyValue.key)
  return key_;
}
inline ::std::string* KeyValue::release_key() {
  clear_has_key();
  if (key_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = key_;
    key_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void KeyValue::set_allocated_key(::std::string* key) {
  if (key_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete key_;
  }
  if (key) {
    set_has_key();
    key_ = key;
  } else {
    clear_has_key();
    key_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:clstm.KeyValue.key)
}

// required string value = 2;
inline bool KeyValue::has_value() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void KeyValue::set_has_value() {
  _has_bits_[0] |= 0x00000002u;
}
inline void KeyValue::clear_has_value() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void KeyValue::clear_value() {
  if (value_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    value_->clear();
  }
  clear_has_value();
}
inline const ::std::string& KeyValue::value() const {
  // @@protoc_insertion_point(field_get:clstm.KeyValue.value)
  return *value_;
}
inline void KeyValue::set_value(const ::std::string& value) {
  set_has_value();
  if (value_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    value_ = new ::std::string;
  }
  value_->assign(value);
  // @@protoc_insertion_point(field_set:clstm.KeyValue.value)
}
inline void KeyValue::set_value(const char* value) {
  set_has_value();
  if (value_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    value_ = new ::std::string;
  }
  value_->assign(value);
  // @@protoc_insertion_point(field_set_char:clstm.KeyValue.value)
}
inline void KeyValue::set_value(const char* value, size_t size) {
  set_has_value();
  if (value_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    value_ = new ::std::string;
  }
  value_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:clstm.KeyValue.value)
}
inline ::std::string* KeyValue::mutable_value() {
  set_has_value();
  if (value_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    value_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:clstm.KeyValue.value)
  return value_;
}
inline ::std::string* KeyValue::release_value() {
  clear_has_value();
  if (value_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = value_;
    value_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void KeyValue::set_allocated_value(::std::string* value) {
  if (value_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete value_;
  }
  if (value) {
    set_has_value();
    value_ = value;
  } else {
    clear_has_value();
    value_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:clstm.KeyValue.value)
}

// -------------------------------------------------------------------

// Array

// optional string name = 1;
inline bool Array::has_name() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Array::set_has_name() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Array::clear_has_name() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Array::clear_name() {
  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_->clear();
  }
  clear_has_name();
}
inline const ::std::string& Array::name() const {
  // @@protoc_insertion_point(field_get:clstm.Array.name)
  return *name_;
}
inline void Array::set_name(const ::std::string& value) {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  name_->assign(value);
  // @@protoc_insertion_point(field_set:clstm.Array.name)
}
inline void Array::set_name(const char* value) {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  name_->assign(value);
  // @@protoc_insertion_point(field_set_char:clstm.Array.name)
}
inline void Array::set_name(const char* value, size_t size) {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  name_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:clstm.Array.name)
}
inline ::std::string* Array::mutable_name() {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:clstm.Array.name)
  return name_;
}
inline ::std::string* Array::release_name() {
  clear_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = name_;
    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void Array::set_allocated_name(::std::string* name) {
  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete name_;
  }
  if (name) {
    set_has_name();
    name_ = name;
  } else {
    clear_has_name();
    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:clstm.Array.name)
}

// repeated int32 dim = 2;
inline int Array::dim_size() const {
  return dim_.size();
}
inline void Array::clear_dim() {
  dim_.Clear();
}
inline ::google::protobuf::int32 Array::dim(int index) const {
  // @@protoc_insertion_point(field_get:clstm.Array.dim)
  return dim_.Get(index);
}
inline void Array::set_dim(int index, ::google::protobuf::int32 value) {
  dim_.Set(index, value);
  // @@protoc_insertion_point(field_set:clstm.Array.dim)
}
inline void Array::add_dim(::google::protobuf::int32 value) {
  dim_.Add(value);
  // @@protoc_insertion_point(field_add:clstm.Array.dim)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
Array::dim() const {
  // @@protoc_insertion_point(field_list:clstm.Array.dim)
  return dim_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
Array::mutable_dim() {
  // @@protoc_insertion_point(field_mutable_list:clstm.Array.dim)
  return &dim_;
}

// repeated float value = 3;
inline int Array::value_size() const {
  return value_.size();
}
inline void Array::clear_value() {
  value_.Clear();
}
inline float Array::value(int index) const {
  // @@protoc_insertion_point(field_get:clstm.Array.value)
  return value_.Get(index);
}
inline void Array::set_value(int index, float value) {
  value_.Set(index, value);
  // @@protoc_insertion_point(field_set:clstm.Array.value)
}
inline void Array::add_value(float value) {
  value_.Add(value);
  // @@protoc_insertion_point(field_add:clstm.Array.value)
}
inline const ::google::protobuf::RepeatedField< float >&
Array::value() const {
  // @@protoc_insertion_point(field_list:clstm.Array.value)
  return value_;
}
inline ::google::protobuf::RepeatedField< float >*
Array::mutable_value() {
  // @@protoc_insertion_point(field_mutable_list:clstm.Array.value)
  return &value_;
}

// -------------------------------------------------------------------

// NetworkProto

// required string kind = 1;
inline bool NetworkProto::has_kind() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void NetworkProto::set_has_kind() {
  _has_bits_[0] |= 0x00000001u;
}
inline void NetworkProto::clear_has_kind() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void NetworkProto::clear_kind() {
  if (kind_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    kind_->clear();
  }
  clear_has_kind();
}
inline const ::std::string& NetworkProto::kind() const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.kind)
  return *kind_;
}
inline void NetworkProto::set_kind(const ::std::string& value) {
  set_has_kind();
  if (kind_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    kind_ = new ::std::string;
  }
  kind_->assign(value);
  // @@protoc_insertion_point(field_set:clstm.NetworkProto.kind)
}
inline void NetworkProto::set_kind(const char* value) {
  set_has_kind();
  if (kind_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    kind_ = new ::std::string;
  }
  kind_->assign(value);
  // @@protoc_insertion_point(field_set_char:clstm.NetworkProto.kind)
}
inline void NetworkProto::set_kind(const char* value, size_t size) {
  set_has_kind();
  if (kind_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    kind_ = new ::std::string;
  }
  kind_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:clstm.NetworkProto.kind)
}
inline ::std::string* NetworkProto::mutable_kind() {
  set_has_kind();
  if (kind_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    kind_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:clstm.NetworkProto.kind)
  return kind_;
}
inline ::std::string* NetworkProto::release_kind() {
  clear_has_kind();
  if (kind_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = kind_;
    kind_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void NetworkProto::set_allocated_kind(::std::string* kind) {
  if (kind_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete kind_;
  }
  if (kind) {
    set_has_kind();
    kind_ = kind;
  } else {
    clear_has_kind();
    kind_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:clstm.NetworkProto.kind)
}

// optional string name = 2;
inline bool NetworkProto::has_name() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void NetworkProto::set_has_name() {
  _has_bits_[0] |= 0x00000002u;
}
inline void NetworkProto::clear_has_name() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void NetworkProto::clear_name() {
  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_->clear();
  }
  clear_has_name();
}
inline const ::std::string& NetworkProto::name() const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.name)
  return *name_;
}
inline void NetworkProto::set_name(const ::std::string& value) {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  name_->assign(value);
  // @@protoc_insertion_point(field_set:clstm.NetworkProto.name)
}
inline void NetworkProto::set_name(const char* value) {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  name_->assign(value);
  // @@protoc_insertion_point(field_set_char:clstm.NetworkProto.name)
}
inline void NetworkProto::set_name(const char* value, size_t size) {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  name_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:clstm.NetworkProto.name)
}
inline ::std::string* NetworkProto::mutable_name() {
  set_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    name_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:clstm.NetworkProto.name)
  return name_;
}
inline ::std::string* NetworkProto::release_name() {
  clear_has_name();
  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = name_;
    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void NetworkProto::set_allocated_name(::std::string* name) {
  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete name_;
  }
  if (name) {
    set_has_name();
    name_ = name;
  } else {
    clear_has_name();
    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:clstm.NetworkProto.name)
}

// required int32 ninput = 10;
inline bool NetworkProto::has_ninput() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void NetworkProto::set_has_ninput() {
  _has_bits_[0] |= 0x00000004u;
}
inline void NetworkProto::clear_has_ninput() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void NetworkProto::clear_ninput() {
  ninput_ = 0;
  clear_has_ninput();
}
inline ::google::protobuf::int32 NetworkProto::ninput() const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.ninput)
  return ninput_;
}
inline void NetworkProto::set_ninput(::google::protobuf::int32 value) {
  set_has_ninput();
  ninput_ = value;
  // @@protoc_insertion_point(field_set:clstm.NetworkProto.ninput)
}

// required int32 noutput = 11;
inline bool NetworkProto::has_noutput() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void NetworkProto::set_has_noutput() {
  _has_bits_[0] |= 0x00000008u;
}
inline void NetworkProto::clear_has_noutput() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void NetworkProto::clear_noutput() {
  noutput_ = 0;
  clear_has_noutput();
}
inline ::google::protobuf::int32 NetworkProto::noutput() const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.noutput)
  return noutput_;
}
inline void NetworkProto::set_noutput(::google::protobuf::int32 value) {
  set_has_noutput();
  noutput_ = value;
  // @@protoc_insertion_point(field_set:clstm.NetworkProto.noutput)
}

// repeated int32 icodec = 12;
inline int NetworkProto::icodec_size() const {
  return icodec_.size();
}
inline void NetworkProto::clear_icodec() {
  icodec_.Clear();
}
inline ::google::protobuf::int32 NetworkProto::icodec(int index) const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.icodec)
  return icodec_.Get(index);
}
inline void NetworkProto::set_icodec(int index, ::google::protobuf::int32 value) {
  icodec_.Set(index, value);
  // @@protoc_insertion_point(field_set:clstm.NetworkProto.icodec)
}
inline void NetworkProto::add_icodec(::google::protobuf::int32 value) {
  icodec_.Add(value);
  // @@protoc_insertion_point(field_add:clstm.NetworkProto.icodec)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
NetworkProto::icodec() const {
  // @@protoc_insertion_point(field_list:clstm.NetworkProto.icodec)
  return icodec_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
NetworkProto::mutable_icodec() {
  // @@protoc_insertion_point(field_mutable_list:clstm.NetworkProto.icodec)
  return &icodec_;
}

// repeated int32 codec = 13;
inline int NetworkProto::codec_size() const {
  return codec_.size();
}
inline void NetworkProto::clear_codec() {
  codec_.Clear();
}
inline ::google::protobuf::int32 NetworkProto::codec(int index) const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.codec)
  return codec_.Get(index);
}
inline void NetworkProto::set_codec(int index, ::google::protobuf::int32 value) {
  codec_.Set(index, value);
  // @@protoc_insertion_point(field_set:clstm.NetworkProto.codec)
}
inline void NetworkProto::add_codec(::google::protobuf::int32 value) {
  codec_.Add(value);
  // @@protoc_insertion_point(field_add:clstm.NetworkProto.codec)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
NetworkProto::codec() const {
  // @@protoc_insertion_point(field_list:clstm.NetworkProto.codec)
  return codec_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
NetworkProto::mutable_codec() {
  // @@protoc_insertion_point(field_mutable_list:clstm.NetworkProto.codec)
  return &codec_;
}

// repeated .clstm.KeyValue attribute = 20;
inline int NetworkProto::attribute_size() const {
  return attribute_.size();
}
inline void NetworkProto::clear_attribute() {
  attribute_.Clear();
}
inline const ::clstm::KeyValue& NetworkProto::attribute(int index) const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.attribute)
  return attribute_.Get(index);
}
inline ::clstm::KeyValue* NetworkProto::mutable_attribute(int index) {
  // @@protoc_insertion_point(field_mutable:clstm.NetworkProto.attribute)
  return attribute_.Mutable(index);
}
inline ::clstm::KeyValue* NetworkProto::add_attribute() {
  // @@protoc_insertion_point(field_add:clstm.NetworkProto.attribute)
  return attribute_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::clstm::KeyValue >&
NetworkProto::attribute() const {
  // @@protoc_insertion_point(field_list:clstm.NetworkProto.attribute)
  return attribute_;
}
inline ::google::protobuf::RepeatedPtrField< ::clstm::KeyValue >*
NetworkProto::mutable_attribute() {
  // @@protoc_insertion_point(field_mutable_list:clstm.NetworkProto.attribute)
  return &attribute_;
}

// repeated .clstm.Array weights = 30;
inline int NetworkProto::weights_size() const {
  return weights_.size();
}
inline void NetworkProto::clear_weights() {
  weights_.Clear();
}
inline const ::clstm::Array& NetworkProto::weights(int index) const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.weights)
  return weights_.Get(index);
}
inline ::clstm::Array* NetworkProto::mutable_weights(int index) {
  // @@protoc_insertion_point(field_mutable:clstm.NetworkProto.weights)
  return weights_.Mutable(index);
}
inline ::clstm::Array* NetworkProto::add_weights() {
  // @@protoc_insertion_point(field_add:clstm.NetworkProto.weights)
  return weights_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::clstm::Array >&
NetworkProto::weights() const {
  // @@protoc_insertion_point(field_list:clstm.NetworkProto.weights)
  return weights_;
}
inline ::google::protobuf::RepeatedPtrField< ::clstm::Array >*
NetworkProto::mutable_weights() {
  // @@protoc_insertion_point(field_mutable_list:clstm.NetworkProto.weights)
  return &weights_;
}

// repeated .clstm.NetworkProto sub = 40;
inline int NetworkProto::sub_size() const {
  return sub_.size();
}
inline void NetworkProto::clear_sub() {
  sub_.Clear();
}
inline const ::clstm::NetworkProto& NetworkProto::sub(int index) const {
  // @@protoc_insertion_point(field_get:clstm.NetworkProto.sub)
  return sub_.Get(index);
}
inline ::clstm::NetworkProto* NetworkProto::mutable_sub(int index) {
  // @@protoc_insertion_point(field_mutable:clstm.NetworkProto.sub)
  return sub_.Mutable(index);
}
inline ::clstm::NetworkProto* NetworkProto::add_sub() {
  // @@protoc_insertion_point(field_add:clstm.NetworkProto.sub)
  return sub_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::clstm::NetworkProto >&
NetworkProto::sub() const {
  // @@protoc_insertion_point(field_list:clstm.NetworkProto.sub)
  return sub_;
}
inline ::google::protobuf::RepeatedPtrField< ::clstm::NetworkProto >*
NetworkProto::mutable_sub() {
  // @@protoc_insertion_point(field_mutable_list:clstm.NetworkProto.sub)
  return &sub_;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace clstm

#ifndef SWIG
namespace google {
namespace protobuf {


}  // namespace google
}  // namespace protobuf
#endif  // SWIG

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_clstm_2eproto__INCLUDED
