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

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers_RuntimeSupport.h>
#else
 #import "GPBProtocolBuffers_RuntimeSupport.h"
#endif

#import "Spatial.pbobjc.h"
#import "Vector.pbobjc.h"
// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"

#pragma mark - Objective C Class declarations
// Forward declarations of Objective C classes that we can use as
// static values in struct initializers.
// We don't use [Foo class] because it is not a static value.
GPBObjCClassDeclaration(Elements);
GPBObjCClassDeclaration(Extrema);
GPBObjCClassDeclaration(GridControl);
GPBObjCClassDeclaration(MeshControl);
GPBObjCClassDeclaration(Record64);
GPBObjCClassDeclaration(Revision);
GPBObjCClassDeclaration(SparseMatrix);
GPBObjCClassDeclaration(TreeControl);

#pragma mark - SpatialRoot

@implementation SpatialRoot

// No extensions in the file and none of the imports (direct or indirect)
// defined extensions, so no need to generate +extensionRegistry.

@end

#pragma mark - SpatialRoot_FileDescriptor

static GPBFileDescriptor *SpatialRoot_FileDescriptor(void) {
  // This is called by +initialize so there is no need to worry
  // about thread safety of the singleton.
  static GPBFileDescriptor *descriptor = NULL;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"Messages"
                                                     syntax:GPBFileSyntaxProto3];
  }
  return descriptor;
}

#pragma mark - Zone

@implementation Zone

@dynamic name;
@dynamic id_p;
@dynamic dimensionality;
@dynamic hasRevision, revision;
@dynamic elementsArray, elementsArray_Count;
@dynamic elementCount;
@dynamic comments;
@dynamic info;
@dynamic resourceName;
@dynamic hasBounds, bounds;
@dynamic terminalCoordArray, terminalCoordArray_Count;

typedef struct Zone__storage_ {
  uint32_t _has_storage_[1];
  int32_t id_p;
  uint32_t dimensionality;
  uint32_t elementCount;
  NSString *name;
  Revision *revision;
  GPBUInt32Array *elementsArray;
  NSString *comments;
  NSString *info;
  NSString *resourceName;
  Extrema *bounds;
  GPBFloatArray *terminalCoordArray;
} Zone__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "name",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_Name,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(Zone__storage_, name),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_Id_p,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(Zone__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "dimensionality",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_Dimensionality,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(Zone__storage_, dimensionality),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "revision",
        .dataTypeSpecific.clazz = GPBObjCClass(Revision),
        .number = Zone_FieldNumber_Revision,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(Zone__storage_, revision),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "elementsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_ElementsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(Zone__storage_, elementsArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "elementCount",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_ElementCount,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(Zone__storage_, elementCount),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "comments",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_Comments,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(Zone__storage_, comments),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "info",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_Info,
        .hasIndex = 6,
        .offset = (uint32_t)offsetof(Zone__storage_, info),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "resourceName",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_ResourceName,
        .hasIndex = 7,
        .offset = (uint32_t)offsetof(Zone__storage_, resourceName),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "bounds",
        .dataTypeSpecific.clazz = GPBObjCClass(Extrema),
        .number = Zone_FieldNumber_Bounds,
        .hasIndex = 8,
        .offset = (uint32_t)offsetof(Zone__storage_, bounds),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "terminalCoordArray",
        .dataTypeSpecific.clazz = Nil,
        .number = Zone_FieldNumber_TerminalCoordArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(Zone__storage_, terminalCoordArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeFloat,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:[Zone class]
                                     rootClass:[SpatialRoot class]
                                          file:SpatialRoot_FileDescriptor()
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(Zone__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - GridControl

@implementation GridControl

@dynamic basis;
@dynamic sizeArray, sizeArray_Count;
@dynamic spacingArray, spacingArray_Count;
@dynamic gradingArray, gradingArray_Count;
@dynamic lengthUnits;
@dynamic targetN;
@dynamic hasBounds, bounds;
@dynamic symmetriesArray, symmetriesArray_Count;
@dynamic interior;
@dynamic exterior;
@dynamic shell;

typedef struct GridControl__storage_ {
  uint32_t _has_storage_[1];
  uint32_t basis;
  uint32_t lengthUnits;
  GPBUInt32Array *sizeArray;
  GPBDoubleArray *spacingArray;
  GPBDoubleArray *gradingArray;
  Extrema *bounds;
  GPBBoolArray *symmetriesArray;
  uint64_t targetN;
} GridControl__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "basis",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_Basis,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(GridControl__storage_, basis),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "sizeArray",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_SizeArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(GridControl__storage_, sizeArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "spacingArray",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_SpacingArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(GridControl__storage_, spacingArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "gradingArray",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_GradingArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(GridControl__storage_, gradingArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "lengthUnits",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_LengthUnits,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(GridControl__storage_, lengthUnits),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "targetN",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_TargetN,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(GridControl__storage_, targetN),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt64,
      },
      {
        .name = "bounds",
        .dataTypeSpecific.clazz = GPBObjCClass(Extrema),
        .number = GridControl_FieldNumber_Bounds,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(GridControl__storage_, bounds),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "symmetriesArray",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_SymmetriesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(GridControl__storage_, symmetriesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "interior",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_Interior,
        .hasIndex = 4,
        .offset = 5,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "exterior",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_Exterior,
        .hasIndex = 6,
        .offset = 7,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "shell",
        .dataTypeSpecific.clazz = Nil,
        .number = GridControl_FieldNumber_Shell,
        .hasIndex = 8,
        .offset = 9,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:[GridControl class]
                                     rootClass:[SpatialRoot class]
                                          file:SpatialRoot_FileDescriptor()
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(GridControl__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - MeshControl

@implementation MeshControl

@dynamic targetN;
@dynamic maxIterations;
@dynamic sizeRatio;
@dynamic sizeDecay;
@dynamic sizeExponent;
@dynamic curvRatio;
@dynamic curvDecay;
@dynamic curvExponent;
@dynamic nodeRadius;
@dynamic hasBounds, bounds;
@dynamic lengthUnits;
@dynamic interior;
@dynamic exterior;
@dynamic shell;
@dynamic equalize;
@dynamic smooth;
@dynamic includeBackground;
@dynamic keepExistingPoints;
@dynamic autoFitDomain;
@dynamic boundaryLayerThickness;
@dynamic symmetriesArray, symmetriesArray_Count;
@dynamic backgroundN;

typedef struct MeshControl__storage_ {
  uint32_t _has_storage_[1];
  uint32_t maxIterations;
  uint32_t lengthUnits;
  Extrema *bounds;
  GPBBoolArray *symmetriesArray;
  uint64_t targetN;
  double sizeRatio;
  double sizeDecay;
  double sizeExponent;
  double curvRatio;
  double curvDecay;
  double curvExponent;
  double nodeRadius;
  double boundaryLayerThickness;
  uint64_t backgroundN;
} MeshControl__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "targetN",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_TargetN,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(MeshControl__storage_, targetN),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt64,
      },
      {
        .name = "maxIterations",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_MaxIterations,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(MeshControl__storage_, maxIterations),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "sizeRatio",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_SizeRatio,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(MeshControl__storage_, sizeRatio),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "sizeDecay",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_SizeDecay,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(MeshControl__storage_, sizeDecay),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "sizeExponent",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_SizeExponent,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(MeshControl__storage_, sizeExponent),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "curvRatio",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_CurvRatio,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(MeshControl__storage_, curvRatio),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "curvDecay",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_CurvDecay,
        .hasIndex = 6,
        .offset = (uint32_t)offsetof(MeshControl__storage_, curvDecay),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "curvExponent",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_CurvExponent,
        .hasIndex = 7,
        .offset = (uint32_t)offsetof(MeshControl__storage_, curvExponent),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "nodeRadius",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_NodeRadius,
        .hasIndex = 8,
        .offset = (uint32_t)offsetof(MeshControl__storage_, nodeRadius),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "bounds",
        .dataTypeSpecific.clazz = GPBObjCClass(Extrema),
        .number = MeshControl_FieldNumber_Bounds,
        .hasIndex = 9,
        .offset = (uint32_t)offsetof(MeshControl__storage_, bounds),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "lengthUnits",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_LengthUnits,
        .hasIndex = 10,
        .offset = (uint32_t)offsetof(MeshControl__storage_, lengthUnits),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "interior",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_Interior,
        .hasIndex = 11,
        .offset = 12,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "exterior",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_Exterior,
        .hasIndex = 13,
        .offset = 14,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "shell",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_Shell,
        .hasIndex = 15,
        .offset = 16,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "equalize",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_Equalize,
        .hasIndex = 17,
        .offset = 18,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "smooth",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_Smooth,
        .hasIndex = 19,
        .offset = 20,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "includeBackground",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_IncludeBackground,
        .hasIndex = 21,
        .offset = 22,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "keepExistingPoints",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_KeepExistingPoints,
        .hasIndex = 23,
        .offset = 24,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "autoFitDomain",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_AutoFitDomain,
        .hasIndex = 25,
        .offset = 26,  // Stored in _has_storage_ to save space.
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "boundaryLayerThickness",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_BoundaryLayerThickness,
        .hasIndex = 27,
        .offset = (uint32_t)offsetof(MeshControl__storage_, boundaryLayerThickness),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeDouble,
      },
      {
        .name = "symmetriesArray",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_SymmetriesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(MeshControl__storage_, symmetriesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked),
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "backgroundN",
        .dataTypeSpecific.clazz = Nil,
        .number = MeshControl_FieldNumber_BackgroundN,
        .hasIndex = 28,
        .offset = (uint32_t)offsetof(MeshControl__storage_, backgroundN),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt64,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:[MeshControl class]
                                     rootClass:[SpatialRoot class]
                                          file:SpatialRoot_FileDescriptor()
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(MeshControl__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - TreeControl

@implementation TreeControl

@dynamic minDepth;
@dynamic maxDepth;
@dynamic maxSize;
@dynamic refDimensionality;
@dynamic lengthUnits;
@dynamic hasBounds, bounds;

typedef struct TreeControl__storage_ {
  uint32_t _has_storage_[1];
  uint32_t minDepth;
  uint32_t maxDepth;
  uint32_t refDimensionality;
  uint32_t lengthUnits;
  Extrema *bounds;
  uint64_t maxSize;
} TreeControl__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "minDepth",
        .dataTypeSpecific.clazz = Nil,
        .number = TreeControl_FieldNumber_MinDepth,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(TreeControl__storage_, minDepth),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "maxDepth",
        .dataTypeSpecific.clazz = Nil,
        .number = TreeControl_FieldNumber_MaxDepth,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(TreeControl__storage_, maxDepth),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "maxSize",
        .dataTypeSpecific.clazz = Nil,
        .number = TreeControl_FieldNumber_MaxSize,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(TreeControl__storage_, maxSize),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt64,
      },
      {
        .name = "refDimensionality",
        .dataTypeSpecific.clazz = Nil,
        .number = TreeControl_FieldNumber_RefDimensionality,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(TreeControl__storage_, refDimensionality),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "lengthUnits",
        .dataTypeSpecific.clazz = Nil,
        .number = TreeControl_FieldNumber_LengthUnits,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(TreeControl__storage_, lengthUnits),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "bounds",
        .dataTypeSpecific.clazz = GPBObjCClass(Extrema),
        .number = TreeControl_FieldNumber_Bounds,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(TreeControl__storage_, bounds),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:[TreeControl class]
                                     rootClass:[SpatialRoot class]
                                          file:SpatialRoot_FileDescriptor()
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(TreeControl__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - Topology

@implementation Topology

@dynamic name;
@dynamic type;
@dynamic ndim;
@dynamic basis;
@dynamic filename;
@dynamic hasRevision, revision;
@dynamic info;
@dynamic hasNodes, nodes;
@dynamic hasEdges, edges;
@dynamic hasFaces, faces;
@dynamic hasCells, cells;
@dynamic hasData_p, data_p;
@dynamic sparseDataArray, sparseDataArray_Count;
@dynamic hasGridControl, gridControl;
@dynamic hasMeshControl, meshControl;
@dynamic hasTreeControl, treeControl;

typedef struct Topology__storage_ {
  uint32_t _has_storage_[1];
  uint32_t type;
  uint32_t ndim;
  uint32_t basis;
  NSString *name;
  NSString *filename;
  Revision *revision;
  NSString *info;
  Elements *nodes;
  Elements *edges;
  Elements *faces;
  Elements *cells;
  Record64 *data_p;
  NSMutableArray *sparseDataArray;
  GridControl *gridControl;
  MeshControl *meshControl;
  TreeControl *treeControl;
} Topology__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "name",
        .dataTypeSpecific.clazz = Nil,
        .number = Topology_FieldNumber_Name,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(Topology__storage_, name),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "type",
        .dataTypeSpecific.clazz = Nil,
        .number = Topology_FieldNumber_Type,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(Topology__storage_, type),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "ndim",
        .dataTypeSpecific.clazz = Nil,
        .number = Topology_FieldNumber_Ndim,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(Topology__storage_, ndim),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "basis",
        .dataTypeSpecific.clazz = Nil,
        .number = Topology_FieldNumber_Basis,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(Topology__storage_, basis),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeUInt32,
      },
      {
        .name = "filename",
        .dataTypeSpecific.clazz = Nil,
        .number = Topology_FieldNumber_Filename,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(Topology__storage_, filename),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "revision",
        .dataTypeSpecific.clazz = GPBObjCClass(Revision),
        .number = Topology_FieldNumber_Revision,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(Topology__storage_, revision),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "info",
        .dataTypeSpecific.clazz = Nil,
        .number = Topology_FieldNumber_Info,
        .hasIndex = 6,
        .offset = (uint32_t)offsetof(Topology__storage_, info),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "nodes",
        .dataTypeSpecific.clazz = GPBObjCClass(Elements),
        .number = Topology_FieldNumber_Nodes,
        .hasIndex = 7,
        .offset = (uint32_t)offsetof(Topology__storage_, nodes),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "edges",
        .dataTypeSpecific.clazz = GPBObjCClass(Elements),
        .number = Topology_FieldNumber_Edges,
        .hasIndex = 8,
        .offset = (uint32_t)offsetof(Topology__storage_, edges),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "faces",
        .dataTypeSpecific.clazz = GPBObjCClass(Elements),
        .number = Topology_FieldNumber_Faces,
        .hasIndex = 9,
        .offset = (uint32_t)offsetof(Topology__storage_, faces),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "cells",
        .dataTypeSpecific.clazz = GPBObjCClass(Elements),
        .number = Topology_FieldNumber_Cells,
        .hasIndex = 10,
        .offset = (uint32_t)offsetof(Topology__storage_, cells),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(Record64),
        .number = Topology_FieldNumber_Data_p,
        .hasIndex = 11,
        .offset = (uint32_t)offsetof(Topology__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "sparseDataArray",
        .dataTypeSpecific.clazz = GPBObjCClass(SparseMatrix),
        .number = Topology_FieldNumber_SparseDataArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(Topology__storage_, sparseDataArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "gridControl",
        .dataTypeSpecific.clazz = GPBObjCClass(GridControl),
        .number = Topology_FieldNumber_GridControl,
        .hasIndex = 12,
        .offset = (uint32_t)offsetof(Topology__storage_, gridControl),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "meshControl",
        .dataTypeSpecific.clazz = GPBObjCClass(MeshControl),
        .number = Topology_FieldNumber_MeshControl,
        .hasIndex = 13,
        .offset = (uint32_t)offsetof(Topology__storage_, meshControl),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "treeControl",
        .dataTypeSpecific.clazz = GPBObjCClass(TreeControl),
        .number = Topology_FieldNumber_TreeControl,
        .hasIndex = 14,
        .offset = (uint32_t)offsetof(Topology__storage_, treeControl),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:[Topology class]
                                     rootClass:[SpatialRoot class]
                                          file:SpatialRoot_FileDescriptor()
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(Topology__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end


#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)
