Skip to main content

opensubdiv_petite_sys/
bindings.rs

1// AIDEV-NOTE: Pre-generated bindgen output committed for docs.rs builds (which
2// cannot run cmake/cc). Regenerate after changing `wrapper.hpp`, the C API, or
3// upgrading the vendored OpenSubdiv:
4//
5//   cargo build -p opensubdiv-petite-sys
6//   cp target/debug/build/opensubdiv-petite-sys-*/out/bindings.rs \
7//      opensubdiv-petite-sys/src/bindings.rs
8//
9// Keep this file in sync with the bindgen invocation in build.rs.
10
11/* automatically generated by rust-bindgen 0.72.1 */
12
13#[repr(C)]
14#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct __BindgenBitfieldUnit<Storage> {
16    storage: Storage,
17}
18impl<Storage> __BindgenBitfieldUnit<Storage> {
19    #[inline]
20    pub const fn new(storage: Storage) -> Self {
21        Self { storage }
22    }
23}
24impl<Storage> __BindgenBitfieldUnit<Storage>
25where
26    Storage: AsRef<[u8]> + AsMut<[u8]>,
27{
28    #[inline]
29    fn extract_bit(byte: u8, index: usize) -> bool {
30        let bit_index = if cfg!(target_endian = "big") {
31            7 - (index % 8)
32        } else {
33            index % 8
34        };
35        let mask = 1 << bit_index;
36        byte & mask == mask
37    }
38
39    #[inline]
40    pub fn get_bit(&self, index: usize) -> bool {
41        debug_assert!(index / 8 < self.storage.as_ref().len());
42        let byte_index = index / 8;
43        let byte = self.storage.as_ref()[byte_index];
44        Self::extract_bit(byte, index)
45    }
46
47    #[inline]
48    pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {
49        debug_assert!(index / 8 < core::mem::size_of::<Storage>());
50        let byte_index = index / 8;
51        let byte = unsafe {
52            *(core::ptr::addr_of!((*this).storage) as *const u8).offset(byte_index as isize)
53        };
54        Self::extract_bit(byte, index)
55    }
56
57    #[inline]
58    fn change_bit(byte: u8, index: usize, val: bool) -> u8 {
59        let bit_index = if cfg!(target_endian = "big") {
60            7 - (index % 8)
61        } else {
62            index % 8
63        };
64        let mask = 1 << bit_index;
65        if val { byte | mask } else { byte & !mask }
66    }
67
68    #[inline]
69    pub fn set_bit(&mut self, index: usize, val: bool) {
70        debug_assert!(index / 8 < self.storage.as_ref().len());
71        let byte_index = index / 8;
72        let byte = &mut self.storage.as_mut()[byte_index];
73        *byte = Self::change_bit(*byte, index, val);
74    }
75
76    #[inline]
77    pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {
78        debug_assert!(index / 8 < core::mem::size_of::<Storage>());
79        let byte_index = index / 8;
80        let byte = unsafe {
81            (core::ptr::addr_of_mut!((*this).storage) as *mut u8).offset(byte_index as isize)
82        };
83        unsafe { *byte = Self::change_bit(*byte, index, val) };
84    }
85
86    #[inline]
87    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
88        debug_assert!(bit_width <= 64);
89        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
90        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
91        let mut val = 0;
92        for i in 0..(bit_width as usize) {
93            if self.get_bit(i + bit_offset) {
94                let index = if cfg!(target_endian = "big") {
95                    bit_width as usize - 1 - i
96                } else {
97                    i
98                };
99                val |= 1 << index;
100            }
101        }
102        val
103    }
104
105    #[inline]
106    pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {
107        debug_assert!(bit_width <= 64);
108        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
109        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
110        let mut val = 0;
111        for i in 0..(bit_width as usize) {
112            if unsafe { Self::raw_get_bit(this, i + bit_offset) } {
113                let index = if cfg!(target_endian = "big") {
114                    bit_width as usize - 1 - i
115                } else {
116                    i
117                };
118                val |= 1 << index;
119            }
120        }
121        val
122    }
123
124    #[inline]
125    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
126        debug_assert!(bit_width <= 64);
127        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
128        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
129        for i in 0..(bit_width as usize) {
130            let mask = 1 << i;
131            let val_bit_is_set = val & mask == mask;
132            let index = if cfg!(target_endian = "big") {
133                bit_width as usize - 1 - i
134            } else {
135                i
136            };
137            self.set_bit(index + bit_offset, val_bit_is_set);
138        }
139    }
140
141    #[inline]
142    pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {
143        debug_assert!(bit_width <= 64);
144        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
145        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());
146        for i in 0..(bit_width as usize) {
147            let mask = 1 << i;
148            let val_bit_is_set = val & mask == mask;
149            let index = if cfg!(target_endian = "big") {
150                bit_width as usize - 1 - i
151            } else {
152                i
153            };
154            unsafe { Self::raw_set_bit(this, index + bit_offset, val_bit_is_set) };
155        }
156    }
157}
158#[doc = r" If Bindgen could only determine the size and alignment of a"]
159#[doc = r" type, it is represented like this."]
160#[derive(PartialEq, Copy, Clone, Debug, Hash)]
161#[repr(C)]
162pub struct __BindgenOpaqueArray<T: Copy, const N: usize>(pub [T; N]);
163impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray<T, N> {
164    fn default() -> Self {
165        Self([<T as Default>::default(); N])
166    }
167}
168#[doc = " \\brief BufferDescriptor is a struct which describes buffer elements in\n        interleaved data buffers. Almost all Osd Evaluator APIs take\n        BufferDescriptors along with device-specific buffer objects.\n\n        The offset of BufferDescriptor can also be used to express a\n        batching offset if the data buffer is combined across multiple\n        objects together.\n\n        * Note that each element has the same data type (float)\n"]
169#[repr(C)]
170#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
171pub struct OpenSubdiv_v3_7_0_Osd_BufferDescriptor {
172    #[doc = " offset to desired element data"]
173    pub offset: ::std::os::raw::c_int,
174    #[doc = " number or length of the data"]
175    pub length: ::std::os::raw::c_int,
176    #[doc = " stride to the next element"]
177    pub stride: ::std::os::raw::c_int,
178}
179pub const OpenSubdiv_v3_7_0_Sdc_SchemeType_SCHEME_BILINEAR: OpenSubdiv_v3_7_0_Sdc_SchemeType = 0;
180pub const OpenSubdiv_v3_7_0_Sdc_SchemeType_SCHEME_CATMARK: OpenSubdiv_v3_7_0_Sdc_SchemeType = 1;
181pub const OpenSubdiv_v3_7_0_Sdc_SchemeType_SCHEME_LOOP: OpenSubdiv_v3_7_0_Sdc_SchemeType = 2;
182#[doc = "\n  \\brief Enumerated type for all subdivision schemes supported by OpenSubdiv\n"]
183pub type OpenSubdiv_v3_7_0_Sdc_SchemeType = ::std::os::raw::c_uint;
184#[doc = "< Used by Catmark and Bilinear"]
185pub const OpenSubdiv_v3_7_0_Sdc_Split_SPLIT_TO_QUADS: OpenSubdiv_v3_7_0_Sdc_Split = 0;
186#[doc = "< Used by Loop"]
187pub const OpenSubdiv_v3_7_0_Sdc_Split_SPLIT_TO_TRIS: OpenSubdiv_v3_7_0_Sdc_Split = 1;
188#[doc = "< Not currently used (potential future extension)"]
189pub const OpenSubdiv_v3_7_0_Sdc_Split_SPLIT_HYBRID: OpenSubdiv_v3_7_0_Sdc_Split = 2;
190#[doc = "\n  \\brief Enumerated type for all face splitting schemes\n"]
191pub type OpenSubdiv_v3_7_0_Sdc_Split = ::std::os::raw::c_uint;
192#[doc = "\n  \\brief Traits associated with the types of all subdivision schemes -- parameterized by\n  the scheme type.  All traits are also defined in the scheme itself.\n"]
193#[repr(C)]
194#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
195pub struct OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits {
196    pub _address: u8,
197}
198unsafe extern "C" {
199    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc16SchemeTypeTraits23GetTopologicalSplitTypeENS1_10SchemeTypeE"]
200    pub fn OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetTopologicalSplitType(
201        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
202    ) -> OpenSubdiv_v3_7_0_Sdc_Split;
203}
204unsafe extern "C" {
205    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc16SchemeTypeTraits18GetRegularFaceSizeENS1_10SchemeTypeE"]
206    pub fn OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetRegularFaceSize(
207        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
208    ) -> ::std::os::raw::c_int;
209}
210unsafe extern "C" {
211    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc16SchemeTypeTraits23GetRegularVertexValenceENS1_10SchemeTypeE"]
212    pub fn OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetRegularVertexValence(
213        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
214    ) -> ::std::os::raw::c_int;
215}
216unsafe extern "C" {
217    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc16SchemeTypeTraits24GetLocalNeighborhoodSizeENS1_10SchemeTypeE"]
218    pub fn OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetLocalNeighborhoodSize(
219        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
220    ) -> ::std::os::raw::c_int;
221}
222unsafe extern "C" {
223    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc16SchemeTypeTraits7GetNameENS1_10SchemeTypeE"]
224    pub fn OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetName(
225        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
226    ) -> *const ::std::os::raw::c_char;
227}
228impl OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits {
229    #[inline]
230    pub unsafe fn GetTopologicalSplitType(
231        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
232    ) -> OpenSubdiv_v3_7_0_Sdc_Split {
233        OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetTopologicalSplitType(schemeType)
234    }
235
236    #[inline]
237    pub unsafe fn GetRegularFaceSize(
238        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
239    ) -> ::std::os::raw::c_int {
240        OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetRegularFaceSize(schemeType)
241    }
242
243    #[inline]
244    pub unsafe fn GetRegularVertexValence(
245        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
246    ) -> ::std::os::raw::c_int {
247        OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetRegularVertexValence(schemeType)
248    }
249
250    #[inline]
251    pub unsafe fn GetLocalNeighborhoodSize(
252        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
253    ) -> ::std::os::raw::c_int {
254        OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetLocalNeighborhoodSize(schemeType)
255    }
256
257    #[inline]
258    pub unsafe fn GetName(
259        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
260    ) -> *const ::std::os::raw::c_char {
261        OpenSubdiv_v3_7_0_Sdc_SchemeTypeTraits_GetName(schemeType)
262    }
263}
264#[doc = "\n  \\brief All supported options applying to subdivision scheme.\n\n  The Options class contains all supported options that can be applied to a\n  subdivision scheme to affect the shape of the limit surface.  These differ from\n  approximations that may be applied at a higher level, i.e. options to limit the\n  level of feature adaptive subdivision, options to ignore fractional creasing,\n  or creasing entirely, etc. These options define the shape of a particular\n  limit surface, including the \"shape\" of primitive variable data associated with\n  it.\n\n  The intent is that these sets of options be defined at a high level and\n  propagated into the lowest-level computation in support of each subdivision\n  scheme.  Ideally it remains a set of bit-fields (essentially an int) and so\n  remains light weight and easily passed around by value.\n"]
265#[repr(C)]
266#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
267pub struct OpenSubdiv_v3_7_0_Sdc_Options {
268    pub _vtxBoundInterp: OpenSubdiv_v3_7_0_Sdc_Options_EnumIntType,
269    pub _fvarLinInterp: OpenSubdiv_v3_7_0_Sdc_Options_EnumIntType,
270    pub _creasingMethod: OpenSubdiv_v3_7_0_Sdc_Options_EnumIntType,
271    pub _triangleSub: OpenSubdiv_v3_7_0_Sdc_Options_EnumIntType,
272}
273#[doc = "< no boundary interpolation, except where\n< boundary edges were explicitly sharpened"]
274pub const OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation_VTX_BOUNDARY_NONE:
275    OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation = 0;
276#[doc = "< all boundary edges sharpened and interpolated"]
277pub const OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation_VTX_BOUNDARY_EDGE_ONLY:
278    OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation = 1;
279#[doc = "< all boundary edges and corner vertices\n< sharpened and interpolated"]
280pub const OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation_VTX_BOUNDARY_EDGE_AND_CORNER:
281    OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation = 2;
282pub type OpenSubdiv_v3_7_0_Sdc_Options_VtxBoundaryInterpolation = ::std::os::raw::c_uint;
283#[doc = "< smooth everywhere (\"edge only\")"]
284pub const OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation_FVAR_LINEAR_NONE:
285    OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = 0;
286#[doc = "< sharpen corners only"]
287pub const OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation_FVAR_LINEAR_CORNERS_ONLY:
288    OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = 1;
289#[doc = "< (\"edge corner\")"]
290pub const OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation_FVAR_LINEAR_CORNERS_PLUS1:
291    OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = 2;
292#[doc = "< (\"edge and corner + propagate corner\")"]
293pub const OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation_FVAR_LINEAR_CORNERS_PLUS2:
294    OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = 3;
295#[doc = "< sharpen all boundaries (\"always sharp\")"]
296pub const OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation_FVAR_LINEAR_BOUNDARIES:
297    OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = 4;
298#[doc = "< bilinear interpolation (\"bilinear\")"]
299pub const OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation_FVAR_LINEAR_ALL:
300    OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = 5;
301pub type OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation = ::std::os::raw::c_uint;
302#[doc = "< Catmark rule"]
303pub const OpenSubdiv_v3_7_0_Sdc_Options_CreasingMethod_CREASE_UNIFORM:
304    OpenSubdiv_v3_7_0_Sdc_Options_CreasingMethod = 0;
305#[doc = "< Chaikin rule"]
306pub const OpenSubdiv_v3_7_0_Sdc_Options_CreasingMethod_CREASE_CHAIKIN:
307    OpenSubdiv_v3_7_0_Sdc_Options_CreasingMethod = 1;
308pub type OpenSubdiv_v3_7_0_Sdc_Options_CreasingMethod = ::std::os::raw::c_uint;
309#[doc = "< Catmark weights (Catmark scheme only)"]
310pub const OpenSubdiv_v3_7_0_Sdc_Options_TriangleSubdivision_TRI_SUB_CATMARK:
311    OpenSubdiv_v3_7_0_Sdc_Options_TriangleSubdivision = 0;
312#[doc = "< \"smooth triangle\" weights (Catmark scheme only)"]
313pub const OpenSubdiv_v3_7_0_Sdc_Options_TriangleSubdivision_TRI_SUB_SMOOTH:
314    OpenSubdiv_v3_7_0_Sdc_Options_TriangleSubdivision = 1;
315pub type OpenSubdiv_v3_7_0_Sdc_Options_TriangleSubdivision = ::std::os::raw::c_uint;
316pub type OpenSubdiv_v3_7_0_Sdc_Options_EnumIntType = ::std::os::raw::c_uchar;
317#[doc = "\n  \\brief Types, constants and utilities related to semi-sharp creasing -- whose implementation\n  is independent of the subdivision scheme.\n\n  Crease is intended to be a light-weight, trivially constructed class that computes\n  crease-related properties -- typically sharpness values and associated interpolation\n  weights.  An instance of Crease is defined with a set of options that include current\n  and future variations that will impact computations involving sharpness values.\n\n  The Crease methods do not use topological neighborhoods as input.  The methods here\n  rely more on the sharpness values and less on the topology, so we choose to work directly\n  with the sharpness values.  We also follow the trend of using primitive arrays in the\n  interface to encourage local gathering for re-use.\n\n  Note on the need for and use of sharpness values:\n      In general, mask queries rely on the sharpness values.  The common case of a smooth\n  vertex, when known, avoids the need to inspect them, but unless the rules are well understood,\n  users will be expected to provided them -- particularly when they expect the mask queries\n  to do all of the work (just determining if a vertex is smooth will require inspection of\n  incident edge sharpness).\n      Mask queries will occasionally require the subdivided sharpness values around the\n  child vertex.  So users will be expected to either provide them up front when known, or to be\n  gathered on demand.  Any implementation of subdivision with creasing cannot avoid subdividing\n  the sharpness values first, so keeping them available for re-use is a worthwhile consideration.\n"]
318#[repr(C)]
319#[derive(Debug, Hash, PartialEq, Eq)]
320pub struct OpenSubdiv_v3_7_0_Sdc_Crease {
321    pub _options: OpenSubdiv_v3_7_0_Sdc_Options,
322}
323pub const OpenSubdiv_v3_7_0_Sdc_Crease_Rule_RULE_UNKNOWN: OpenSubdiv_v3_7_0_Sdc_Crease_Rule = 0;
324pub const OpenSubdiv_v3_7_0_Sdc_Crease_Rule_RULE_SMOOTH: OpenSubdiv_v3_7_0_Sdc_Crease_Rule = 1;
325pub const OpenSubdiv_v3_7_0_Sdc_Crease_Rule_RULE_DART: OpenSubdiv_v3_7_0_Sdc_Crease_Rule = 2;
326pub const OpenSubdiv_v3_7_0_Sdc_Crease_Rule_RULE_CREASE: OpenSubdiv_v3_7_0_Sdc_Crease_Rule = 4;
327pub const OpenSubdiv_v3_7_0_Sdc_Crease_Rule_RULE_CORNER: OpenSubdiv_v3_7_0_Sdc_Crease_Rule = 8;
328#[doc = "\n  Enum for the types of subdivision rules applied based on sharpness values (note these\n  correspond to Hbr's vertex \"mask\").  The values are assigned to bit positions as it is\n  useful to use bitwise operations to inspect collections of vertices (i.e. all of the\n  vertices incident a particular face).\n"]
329pub type OpenSubdiv_v3_7_0_Sdc_Crease_Rule = ::std::os::raw::c_uint;
330unsafe extern "C" {
331    #[doc = "  Constants and related queries of sharpness values:\n"]
332    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc6Crease16SHARPNESS_SMOOTHE"]
333    pub static OpenSubdiv_v3_7_0_Sdc_Crease_SHARPNESS_SMOOTH: f32;
334}
335unsafe extern "C" {
336    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Sdc6Crease18SHARPNESS_INFINITEE"]
337    pub static OpenSubdiv_v3_7_0_Sdc_Crease_SHARPNESS_INFINITE: f32;
338}
339unsafe extern "C" {
340    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Sdc6Crease30SubdivideEdgeSharpnessAtVertexEfiPKf"]
341    pub fn OpenSubdiv_v3_7_0_Sdc_Crease_SubdivideEdgeSharpnessAtVertex(
342        this: *const OpenSubdiv_v3_7_0_Sdc_Crease,
343        edgeSharpness: f32,
344        incidentEdgeCountAtEndVertex: ::std::os::raw::c_int,
345        edgeSharpnessAroundEndVertex: *const f32,
346    ) -> f32;
347}
348unsafe extern "C" {
349    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Sdc6Crease36SubdivideEdgeSharpnessesAroundVertexEiPKfPf"]
350    pub fn OpenSubdiv_v3_7_0_Sdc_Crease_SubdivideEdgeSharpnessesAroundVertex(
351        this: *const OpenSubdiv_v3_7_0_Sdc_Crease,
352        incidentEdgeCountAtVertex: ::std::os::raw::c_int,
353        incidentEdgeSharpnessAroundVertex: *const f32,
354        childEdgesSharpnessAroundVertex: *mut f32,
355    );
356}
357unsafe extern "C" {
358    #[doc = "  Rule determination:\n      Mask queries do not require the Rule to be known, it can be determined from\n  the information provided, but it is generally more efficient when the Rule is known\n  and provided.  In particular, the Smooth case dominates and is known to be applicable\n  based on the origin of the vertex without inspection of sharpness.\n"]
359    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Sdc6Crease25DetermineVertexVertexRuleEfiPKf"]
360    pub fn OpenSubdiv_v3_7_0_Sdc_Crease_DetermineVertexVertexRule(
361        this: *const OpenSubdiv_v3_7_0_Sdc_Crease,
362        vertexSharpness: f32,
363        incidentEdgeCount: ::std::os::raw::c_int,
364        incidentEdgeSharpness: *const f32,
365    ) -> OpenSubdiv_v3_7_0_Sdc_Crease_Rule;
366}
367unsafe extern "C" {
368    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Sdc6Crease25DetermineVertexVertexRuleEfi"]
369    pub fn OpenSubdiv_v3_7_0_Sdc_Crease_DetermineVertexVertexRule1(
370        this: *const OpenSubdiv_v3_7_0_Sdc_Crease,
371        vertexSharpness: f32,
372        sharpEdgeCount: ::std::os::raw::c_int,
373    ) -> OpenSubdiv_v3_7_0_Sdc_Crease_Rule;
374}
375unsafe extern "C" {
376    #[doc = "  \\brief Transitional weighting:\n      When the rules applicable to a parent vertex and its child differ, one or more\n  sharpness values has \"decayed\" to zero.  Both rules are then applicable and blended\n  by a weight between 0 and 1 that reflects the transition.  Most often this will be\n  a single sharpness value that decays from within the interval [0,1] to zero -- and\n  the weight to apply is exactly that sharpness value -- but more than one may decay,\n  and values > 1 may also decay to 0 in a single step while others within [0,1] may\n  remain > 0.\n      So to properly determine a transitional weight, sharpness values for both the\n  parent and child must be inspected, combined and clamped accordingly.\n"]
377    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Sdc6Crease31ComputeFractionalWeightAtVertexEffiPKfS4_"]
378    pub fn OpenSubdiv_v3_7_0_Sdc_Crease_ComputeFractionalWeightAtVertex(
379        this: *const OpenSubdiv_v3_7_0_Sdc_Crease,
380        vertexSharpness: f32,
381        childVertexSharpness: f32,
382        incidentEdgeCount: ::std::os::raw::c_int,
383        incidentEdgeSharpness: *const f32,
384        childEdgesSharpness: *const f32,
385    ) -> f32;
386}
387impl OpenSubdiv_v3_7_0_Sdc_Crease {
388    #[inline]
389    pub unsafe fn SubdivideEdgeSharpnessAtVertex(
390        &self,
391        edgeSharpness: f32,
392        incidentEdgeCountAtEndVertex: ::std::os::raw::c_int,
393        edgeSharpnessAroundEndVertex: *const f32,
394    ) -> f32 {
395        OpenSubdiv_v3_7_0_Sdc_Crease_SubdivideEdgeSharpnessAtVertex(
396            self,
397            edgeSharpness,
398            incidentEdgeCountAtEndVertex,
399            edgeSharpnessAroundEndVertex,
400        )
401    }
402
403    #[inline]
404    pub unsafe fn SubdivideEdgeSharpnessesAroundVertex(
405        &self,
406        incidentEdgeCountAtVertex: ::std::os::raw::c_int,
407        incidentEdgeSharpnessAroundVertex: *const f32,
408        childEdgesSharpnessAroundVertex: *mut f32,
409    ) {
410        OpenSubdiv_v3_7_0_Sdc_Crease_SubdivideEdgeSharpnessesAroundVertex(
411            self,
412            incidentEdgeCountAtVertex,
413            incidentEdgeSharpnessAroundVertex,
414            childEdgesSharpnessAroundVertex,
415        )
416    }
417
418    #[inline]
419    pub unsafe fn DetermineVertexVertexRule(
420        &self,
421        vertexSharpness: f32,
422        incidentEdgeCount: ::std::os::raw::c_int,
423        incidentEdgeSharpness: *const f32,
424    ) -> OpenSubdiv_v3_7_0_Sdc_Crease_Rule {
425        OpenSubdiv_v3_7_0_Sdc_Crease_DetermineVertexVertexRule(
426            self,
427            vertexSharpness,
428            incidentEdgeCount,
429            incidentEdgeSharpness,
430        )
431    }
432
433    #[inline]
434    pub unsafe fn DetermineVertexVertexRule1(
435        &self,
436        vertexSharpness: f32,
437        sharpEdgeCount: ::std::os::raw::c_int,
438    ) -> OpenSubdiv_v3_7_0_Sdc_Crease_Rule {
439        OpenSubdiv_v3_7_0_Sdc_Crease_DetermineVertexVertexRule1(
440            self,
441            vertexSharpness,
442            sharpEdgeCount,
443        )
444    }
445
446    #[inline]
447    pub unsafe fn ComputeFractionalWeightAtVertex(
448        &self,
449        vertexSharpness: f32,
450        childVertexSharpness: f32,
451        incidentEdgeCount: ::std::os::raw::c_int,
452        incidentEdgeSharpness: *const f32,
453        childEdgesSharpness: *const f32,
454    ) -> f32 {
455        OpenSubdiv_v3_7_0_Sdc_Crease_ComputeFractionalWeightAtVertex(
456            self,
457            vertexSharpness,
458            childVertexSharpness,
459            incidentEdgeCount,
460            incidentEdgeSharpness,
461            childEdgesSharpness,
462        )
463    }
464}
465unsafe extern "C" {
466    #[link_name = "\u{1}GetTopologicalSplitType"]
467    pub fn OpenSubdiv_v3_7_0_Sdc_Scheme_GetTopologicalSplitType() -> OpenSubdiv_v3_7_0_Sdc_Split;
468}
469unsafe extern "C" {
470    #[link_name = "\u{1}GetRegularFaceSize"]
471    pub fn OpenSubdiv_v3_7_0_Sdc_Scheme_GetRegularFaceSize() -> ::std::os::raw::c_int;
472}
473unsafe extern "C" {
474    #[link_name = "\u{1}GetRegularVertexValence"]
475    pub fn OpenSubdiv_v3_7_0_Sdc_Scheme_GetRegularVertexValence() -> ::std::os::raw::c_int;
476}
477unsafe extern "C" {
478    #[link_name = "\u{1}GetLocalNeighborhoodSize"]
479    pub fn OpenSubdiv_v3_7_0_Sdc_Scheme_GetLocalNeighborhoodSize() -> ::std::os::raw::c_int;
480}
481#[repr(C)]
482#[derive(Debug, Hash, PartialEq, Eq)]
483pub struct OpenSubdiv_v3_7_0_Sdc_Scheme_LocalMask<WEIGHT> {
484    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<WEIGHT>>,
485    pub _vWeights: *mut OpenSubdiv_v3_7_0_Sdc_Scheme_LocalMask_Weight<WEIGHT>,
486    pub _eWeights: *mut OpenSubdiv_v3_7_0_Sdc_Scheme_LocalMask_Weight<WEIGHT>,
487    pub _fWeights: *mut OpenSubdiv_v3_7_0_Sdc_Scheme_LocalMask_Weight<WEIGHT>,
488    pub _vCount: ::std::os::raw::c_int,
489    pub _eCount: ::std::os::raw::c_int,
490    pub _fCount: ::std::os::raw::c_int,
491    pub _fWeightsForCenters: bool,
492}
493pub type OpenSubdiv_v3_7_0_Sdc_Scheme_LocalMask_Weight<WEIGHT> = WEIGHT;
494#[repr(C)]
495#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
496pub struct OpenSubdiv_v3_7_0_Vtr_ConstArray<TYPE> {
497    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<TYPE>>,
498    pub _begin: *const OpenSubdiv_v3_7_0_Vtr_ConstArray_value_type<TYPE>,
499    pub _size: OpenSubdiv_v3_7_0_Vtr_ConstArray_size_type,
500}
501pub type OpenSubdiv_v3_7_0_Vtr_ConstArray_value_type<TYPE> = TYPE;
502pub type OpenSubdiv_v3_7_0_Vtr_ConstArray_size_type = ::std::os::raw::c_int;
503pub type OpenSubdiv_v3_7_0_Vtr_ConstArray_const_reference<TYPE> = *const TYPE;
504pub type OpenSubdiv_v3_7_0_Vtr_ConstArray_const_iterator<TYPE> = *const TYPE;
505pub type OpenSubdiv_v3_7_0_Vtr_ConstArray_reference<TYPE> = *mut TYPE;
506pub type OpenSubdiv_v3_7_0_Vtr_ConstArray_iterator<TYPE> = *mut TYPE;
507#[repr(C)]
508#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
509pub struct OpenSubdiv_v3_7_0_Vtr_Array<TYPE> {
510    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<TYPE>>,
511    pub _base: OpenSubdiv_v3_7_0_Vtr_ConstArray<TYPE>,
512}
513pub type OpenSubdiv_v3_7_0_Vtr_Array_value_type<TYPE> = TYPE;
514pub type OpenSubdiv_v3_7_0_Vtr_Array_size_type = ::std::os::raw::c_int;
515pub type OpenSubdiv_v3_7_0_Vtr_Array_const_reference<TYPE> = *const TYPE;
516pub type OpenSubdiv_v3_7_0_Vtr_Array_reference<TYPE> = *mut TYPE;
517pub type OpenSubdiv_v3_7_0_Vtr_Array_iterator<TYPE> = *mut TYPE;
518pub type OpenSubdiv_v3_7_0_Vtr_Index = ::std::os::raw::c_int;
519pub type OpenSubdiv_v3_7_0_Vtr_LocalIndex = ::std::os::raw::c_ushort;
520pub type OpenSubdiv_v3_7_0_Vtr_IndexVector = __BindgenOpaqueArray<u64, 3usize>;
521pub type OpenSubdiv_v3_7_0_Vtr_IndexArray =
522    OpenSubdiv_v3_7_0_Vtr_Array<OpenSubdiv_v3_7_0_Vtr_Index>;
523pub type OpenSubdiv_v3_7_0_Vtr_ConstIndexArray =
524    OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Vtr_Index>;
525pub type OpenSubdiv_v3_7_0_Vtr_LocalIndexArray =
526    OpenSubdiv_v3_7_0_Vtr_Array<OpenSubdiv_v3_7_0_Vtr_LocalIndex>;
527pub type OpenSubdiv_v3_7_0_Vtr_ConstLocalIndexArray =
528    OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Vtr_LocalIndex>;
529#[repr(C)]
530#[derive(Debug, Copy, Clone)]
531pub struct OpenSubdiv_v3_7_0_Vtr_internal_TriRefinement {
532    _unused: [u8; 0],
533}
534#[repr(C)]
535#[derive(Debug, Copy, Clone)]
536pub struct OpenSubdiv_v3_7_0_Vtr_internal_QuadRefinement {
537    _unused: [u8; 0],
538}
539#[repr(C)]
540pub struct OpenSubdiv_v3_7_0_Vtr_internal_Level {
541    pub _faceCount: ::std::os::raw::c_int,
542    pub _edgeCount: ::std::os::raw::c_int,
543    pub _vertCount: ::std::os::raw::c_int,
544    pub _depth: ::std::os::raw::c_int,
545    pub _maxEdgeFaces: ::std::os::raw::c_int,
546    pub _maxValence: ::std::os::raw::c_int,
547    pub _faceVertCountsAndOffsets: __BindgenOpaqueArray<u64, 3usize>,
548    pub _faceVertIndices: __BindgenOpaqueArray<u64, 3usize>,
549    pub _faceEdgeIndices: __BindgenOpaqueArray<u64, 3usize>,
550    pub _faceTags: __BindgenOpaqueArray<u64, 3usize>,
551    pub _edgeVertIndices: __BindgenOpaqueArray<u64, 3usize>,
552    pub _edgeFaceCountsAndOffsets: __BindgenOpaqueArray<u64, 3usize>,
553    pub _edgeFaceIndices: __BindgenOpaqueArray<u64, 3usize>,
554    pub _edgeFaceLocalIndices: __BindgenOpaqueArray<u64, 3usize>,
555    pub _edgeSharpness: __BindgenOpaqueArray<u64, 3usize>,
556    pub _edgeTags: __BindgenOpaqueArray<u64, 3usize>,
557    pub _vertFaceCountsAndOffsets: __BindgenOpaqueArray<u64, 3usize>,
558    pub _vertFaceIndices: __BindgenOpaqueArray<u64, 3usize>,
559    pub _vertFaceLocalIndices: __BindgenOpaqueArray<u64, 3usize>,
560    pub _vertEdgeCountsAndOffsets: __BindgenOpaqueArray<u64, 3usize>,
561    pub _vertEdgeIndices: __BindgenOpaqueArray<u64, 3usize>,
562    pub _vertEdgeLocalIndices: __BindgenOpaqueArray<u64, 3usize>,
563    pub _vertSharpness: __BindgenOpaqueArray<u64, 3usize>,
564    pub _vertTags: __BindgenOpaqueArray<u64, 3usize>,
565    pub _fvarChannels: __BindgenOpaqueArray<u64, 3usize>,
566}
567#[repr(C)]
568#[repr(align(2))]
569#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
570pub struct OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag {
571    pub _bitfield_align_1: [u8; 0],
572    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
573}
574pub type OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize = ::std::os::raw::c_ushort;
575unsafe extern "C" {
576    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level4VTag9BitwiseOrEPKS4_i"]
577    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_BitwiseOr(
578        vTags: *const OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag,
579        size: ::std::os::raw::c_int,
580    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag;
581}
582impl OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag {
583    #[inline]
584    pub fn _nonManifold(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
585        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u16) }
586    }
587
588    #[inline]
589    pub fn set__nonManifold(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
590        unsafe {
591            let val: u16 = ::std::mem::transmute(val);
592            self._bitfield_1.set(0usize, 1u8, val as u64)
593        }
594    }
595
596    #[inline]
597    pub unsafe fn _nonManifold_raw(
598        this: *const Self,
599    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
600        unsafe {
601            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
602                ::std::ptr::addr_of!((*this)._bitfield_1),
603                0usize,
604                1u8,
605            ) as u16)
606        }
607    }
608
609    #[inline]
610    pub unsafe fn set__nonManifold_raw(
611        this: *mut Self,
612        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
613    ) {
614        unsafe {
615            let val: u16 = ::std::mem::transmute(val);
616            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
617                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
618                0usize,
619                1u8,
620                val as u64,
621            )
622        }
623    }
624
625    #[inline]
626    pub fn _xordinary(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
627        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u16) }
628    }
629
630    #[inline]
631    pub fn set__xordinary(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
632        unsafe {
633            let val: u16 = ::std::mem::transmute(val);
634            self._bitfield_1.set(1usize, 1u8, val as u64)
635        }
636    }
637
638    #[inline]
639    pub unsafe fn _xordinary_raw(
640        this: *const Self,
641    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
642        unsafe {
643            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
644                ::std::ptr::addr_of!((*this)._bitfield_1),
645                1usize,
646                1u8,
647            ) as u16)
648        }
649    }
650
651    #[inline]
652    pub unsafe fn set__xordinary_raw(
653        this: *mut Self,
654        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
655    ) {
656        unsafe {
657            let val: u16 = ::std::mem::transmute(val);
658            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
659                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
660                1usize,
661                1u8,
662                val as u64,
663            )
664        }
665    }
666
667    #[inline]
668    pub fn _boundary(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
669        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u16) }
670    }
671
672    #[inline]
673    pub fn set__boundary(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
674        unsafe {
675            let val: u16 = ::std::mem::transmute(val);
676            self._bitfield_1.set(2usize, 1u8, val as u64)
677        }
678    }
679
680    #[inline]
681    pub unsafe fn _boundary_raw(
682        this: *const Self,
683    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
684        unsafe {
685            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
686                ::std::ptr::addr_of!((*this)._bitfield_1),
687                2usize,
688                1u8,
689            ) as u16)
690        }
691    }
692
693    #[inline]
694    pub unsafe fn set__boundary_raw(
695        this: *mut Self,
696        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
697    ) {
698        unsafe {
699            let val: u16 = ::std::mem::transmute(val);
700            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
701                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
702                2usize,
703                1u8,
704                val as u64,
705            )
706        }
707    }
708
709    #[inline]
710    pub fn _corner(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
711        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u16) }
712    }
713
714    #[inline]
715    pub fn set__corner(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
716        unsafe {
717            let val: u16 = ::std::mem::transmute(val);
718            self._bitfield_1.set(3usize, 1u8, val as u64)
719        }
720    }
721
722    #[inline]
723    pub unsafe fn _corner_raw(
724        this: *const Self,
725    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
726        unsafe {
727            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
728                ::std::ptr::addr_of!((*this)._bitfield_1),
729                3usize,
730                1u8,
731            ) as u16)
732        }
733    }
734
735    #[inline]
736    pub unsafe fn set__corner_raw(
737        this: *mut Self,
738        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
739    ) {
740        unsafe {
741            let val: u16 = ::std::mem::transmute(val);
742            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
743                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
744                3usize,
745                1u8,
746                val as u64,
747            )
748        }
749    }
750
751    #[inline]
752    pub fn _infSharp(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
753        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u16) }
754    }
755
756    #[inline]
757    pub fn set__infSharp(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
758        unsafe {
759            let val: u16 = ::std::mem::transmute(val);
760            self._bitfield_1.set(4usize, 1u8, val as u64)
761        }
762    }
763
764    #[inline]
765    pub unsafe fn _infSharp_raw(
766        this: *const Self,
767    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
768        unsafe {
769            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
770                ::std::ptr::addr_of!((*this)._bitfield_1),
771                4usize,
772                1u8,
773            ) as u16)
774        }
775    }
776
777    #[inline]
778    pub unsafe fn set__infSharp_raw(
779        this: *mut Self,
780        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
781    ) {
782        unsafe {
783            let val: u16 = ::std::mem::transmute(val);
784            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
785                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
786                4usize,
787                1u8,
788                val as u64,
789            )
790        }
791    }
792
793    #[inline]
794    pub fn _semiSharp(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
795        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u16) }
796    }
797
798    #[inline]
799    pub fn set__semiSharp(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
800        unsafe {
801            let val: u16 = ::std::mem::transmute(val);
802            self._bitfield_1.set(5usize, 1u8, val as u64)
803        }
804    }
805
806    #[inline]
807    pub unsafe fn _semiSharp_raw(
808        this: *const Self,
809    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
810        unsafe {
811            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
812                ::std::ptr::addr_of!((*this)._bitfield_1),
813                5usize,
814                1u8,
815            ) as u16)
816        }
817    }
818
819    #[inline]
820    pub unsafe fn set__semiSharp_raw(
821        this: *mut Self,
822        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
823    ) {
824        unsafe {
825            let val: u16 = ::std::mem::transmute(val);
826            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
827                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
828                5usize,
829                1u8,
830                val as u64,
831            )
832        }
833    }
834
835    #[inline]
836    pub fn _semiSharpEdges(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
837        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u16) }
838    }
839
840    #[inline]
841    pub fn set__semiSharpEdges(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
842        unsafe {
843            let val: u16 = ::std::mem::transmute(val);
844            self._bitfield_1.set(6usize, 1u8, val as u64)
845        }
846    }
847
848    #[inline]
849    pub unsafe fn _semiSharpEdges_raw(
850        this: *const Self,
851    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
852        unsafe {
853            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
854                ::std::ptr::addr_of!((*this)._bitfield_1),
855                6usize,
856                1u8,
857            ) as u16)
858        }
859    }
860
861    #[inline]
862    pub unsafe fn set__semiSharpEdges_raw(
863        this: *mut Self,
864        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
865    ) {
866        unsafe {
867            let val: u16 = ::std::mem::transmute(val);
868            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
869                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
870                6usize,
871                1u8,
872                val as u64,
873            )
874        }
875    }
876
877    #[inline]
878    pub fn _rule(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
879        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 4u8) as u16) }
880    }
881
882    #[inline]
883    pub fn set__rule(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
884        unsafe {
885            let val: u16 = ::std::mem::transmute(val);
886            self._bitfield_1.set(7usize, 4u8, val as u64)
887        }
888    }
889
890    #[inline]
891    pub unsafe fn _rule_raw(
892        this: *const Self,
893    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
894        unsafe {
895            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
896                ::std::ptr::addr_of!((*this)._bitfield_1),
897                7usize,
898                4u8,
899            ) as u16)
900        }
901    }
902
903    #[inline]
904    pub unsafe fn set__rule_raw(
905        this: *mut Self,
906        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
907    ) {
908        unsafe {
909            let val: u16 = ::std::mem::transmute(val);
910            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
911                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
912                7usize,
913                4u8,
914                val as u64,
915            )
916        }
917    }
918
919    #[inline]
920    pub fn _incomplete(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
921        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
922    }
923
924    #[inline]
925    pub fn set__incomplete(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
926        unsafe {
927            let val: u16 = ::std::mem::transmute(val);
928            self._bitfield_1.set(11usize, 1u8, val as u64)
929        }
930    }
931
932    #[inline]
933    pub unsafe fn _incomplete_raw(
934        this: *const Self,
935    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
936        unsafe {
937            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
938                ::std::ptr::addr_of!((*this)._bitfield_1),
939                11usize,
940                1u8,
941            ) as u16)
942        }
943    }
944
945    #[inline]
946    pub unsafe fn set__incomplete_raw(
947        this: *mut Self,
948        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
949    ) {
950        unsafe {
951            let val: u16 = ::std::mem::transmute(val);
952            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
953                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
954                11usize,
955                1u8,
956                val as u64,
957            )
958        }
959    }
960
961    #[inline]
962    pub fn _incidIrregFace(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
963        unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
964    }
965
966    #[inline]
967    pub fn set__incidIrregFace(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
968        unsafe {
969            let val: u16 = ::std::mem::transmute(val);
970            self._bitfield_1.set(12usize, 1u8, val as u64)
971        }
972    }
973
974    #[inline]
975    pub unsafe fn _incidIrregFace_raw(
976        this: *const Self,
977    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
978        unsafe {
979            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
980                ::std::ptr::addr_of!((*this)._bitfield_1),
981                12usize,
982                1u8,
983            ) as u16)
984        }
985    }
986
987    #[inline]
988    pub unsafe fn set__incidIrregFace_raw(
989        this: *mut Self,
990        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
991    ) {
992        unsafe {
993            let val: u16 = ::std::mem::transmute(val);
994            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
995                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
996                12usize,
997                1u8,
998                val as u64,
999            )
1000        }
1001    }
1002
1003    #[inline]
1004    pub fn _infSharpEdges(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
1005        unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
1006    }
1007
1008    #[inline]
1009    pub fn set__infSharpEdges(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
1010        unsafe {
1011            let val: u16 = ::std::mem::transmute(val);
1012            self._bitfield_1.set(13usize, 1u8, val as u64)
1013        }
1014    }
1015
1016    #[inline]
1017    pub unsafe fn _infSharpEdges_raw(
1018        this: *const Self,
1019    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
1020        unsafe {
1021            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
1022                ::std::ptr::addr_of!((*this)._bitfield_1),
1023                13usize,
1024                1u8,
1025            ) as u16)
1026        }
1027    }
1028
1029    #[inline]
1030    pub unsafe fn set__infSharpEdges_raw(
1031        this: *mut Self,
1032        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1033    ) {
1034        unsafe {
1035            let val: u16 = ::std::mem::transmute(val);
1036            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
1037                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1038                13usize,
1039                1u8,
1040                val as u64,
1041            )
1042        }
1043    }
1044
1045    #[inline]
1046    pub fn _infSharpCrease(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
1047        unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
1048    }
1049
1050    #[inline]
1051    pub fn set__infSharpCrease(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
1052        unsafe {
1053            let val: u16 = ::std::mem::transmute(val);
1054            self._bitfield_1.set(14usize, 1u8, val as u64)
1055        }
1056    }
1057
1058    #[inline]
1059    pub unsafe fn _infSharpCrease_raw(
1060        this: *const Self,
1061    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
1062        unsafe {
1063            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
1064                ::std::ptr::addr_of!((*this)._bitfield_1),
1065                14usize,
1066                1u8,
1067            ) as u16)
1068        }
1069    }
1070
1071    #[inline]
1072    pub unsafe fn set__infSharpCrease_raw(
1073        this: *mut Self,
1074        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1075    ) {
1076        unsafe {
1077            let val: u16 = ::std::mem::transmute(val);
1078            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
1079                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1080                14usize,
1081                1u8,
1082                val as u64,
1083            )
1084        }
1085    }
1086
1087    #[inline]
1088    pub fn _infIrregular(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
1089        unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
1090    }
1091
1092    #[inline]
1093    pub fn set__infIrregular(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize) {
1094        unsafe {
1095            let val: u16 = ::std::mem::transmute(val);
1096            self._bitfield_1.set(15usize, 1u8, val as u64)
1097        }
1098    }
1099
1100    #[inline]
1101    pub unsafe fn _infIrregular_raw(
1102        this: *const Self,
1103    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize {
1104        unsafe {
1105            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
1106                ::std::ptr::addr_of!((*this)._bitfield_1),
1107                15usize,
1108                1u8,
1109            ) as u16)
1110        }
1111    }
1112
1113    #[inline]
1114    pub unsafe fn set__infIrregular_raw(
1115        this: *mut Self,
1116        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1117    ) {
1118        unsafe {
1119            let val: u16 = ::std::mem::transmute(val);
1120            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
1121                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1122                15usize,
1123                1u8,
1124                val as u64,
1125            )
1126        }
1127    }
1128
1129    #[inline]
1130    pub fn new_bitfield_1(
1131        _nonManifold: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1132        _xordinary: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1133        _boundary: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1134        _corner: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1135        _infSharp: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1136        _semiSharp: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1137        _semiSharpEdges: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1138        _rule: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1139        _incomplete: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1140        _incidIrregFace: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1141        _infSharpEdges: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1142        _infSharpCrease: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1143        _infIrregular: OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_VTagSize,
1144    ) -> __BindgenBitfieldUnit<[u8; 2usize]> {
1145        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
1146        __bindgen_bitfield_unit.set(0usize, 1u8, {
1147            let _nonManifold: u16 = unsafe { ::std::mem::transmute(_nonManifold) };
1148            _nonManifold as u64
1149        });
1150        __bindgen_bitfield_unit.set(1usize, 1u8, {
1151            let _xordinary: u16 = unsafe { ::std::mem::transmute(_xordinary) };
1152            _xordinary as u64
1153        });
1154        __bindgen_bitfield_unit.set(2usize, 1u8, {
1155            let _boundary: u16 = unsafe { ::std::mem::transmute(_boundary) };
1156            _boundary as u64
1157        });
1158        __bindgen_bitfield_unit.set(3usize, 1u8, {
1159            let _corner: u16 = unsafe { ::std::mem::transmute(_corner) };
1160            _corner as u64
1161        });
1162        __bindgen_bitfield_unit.set(4usize, 1u8, {
1163            let _infSharp: u16 = unsafe { ::std::mem::transmute(_infSharp) };
1164            _infSharp as u64
1165        });
1166        __bindgen_bitfield_unit.set(5usize, 1u8, {
1167            let _semiSharp: u16 = unsafe { ::std::mem::transmute(_semiSharp) };
1168            _semiSharp as u64
1169        });
1170        __bindgen_bitfield_unit.set(6usize, 1u8, {
1171            let _semiSharpEdges: u16 = unsafe { ::std::mem::transmute(_semiSharpEdges) };
1172            _semiSharpEdges as u64
1173        });
1174        __bindgen_bitfield_unit.set(7usize, 4u8, {
1175            let _rule: u16 = unsafe { ::std::mem::transmute(_rule) };
1176            _rule as u64
1177        });
1178        __bindgen_bitfield_unit.set(11usize, 1u8, {
1179            let _incomplete: u16 = unsafe { ::std::mem::transmute(_incomplete) };
1180            _incomplete as u64
1181        });
1182        __bindgen_bitfield_unit.set(12usize, 1u8, {
1183            let _incidIrregFace: u16 = unsafe { ::std::mem::transmute(_incidIrregFace) };
1184            _incidIrregFace as u64
1185        });
1186        __bindgen_bitfield_unit.set(13usize, 1u8, {
1187            let _infSharpEdges: u16 = unsafe { ::std::mem::transmute(_infSharpEdges) };
1188            _infSharpEdges as u64
1189        });
1190        __bindgen_bitfield_unit.set(14usize, 1u8, {
1191            let _infSharpCrease: u16 = unsafe { ::std::mem::transmute(_infSharpCrease) };
1192            _infSharpCrease as u64
1193        });
1194        __bindgen_bitfield_unit.set(15usize, 1u8, {
1195            let _infIrregular: u16 = unsafe { ::std::mem::transmute(_infIrregular) };
1196            _infIrregular as u64
1197        });
1198        __bindgen_bitfield_unit
1199    }
1200
1201    #[inline]
1202    pub unsafe fn BitwiseOr(
1203        vTags: *const OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag,
1204        size: ::std::os::raw::c_int,
1205    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag {
1206        OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag_BitwiseOr(vTags, size)
1207    }
1208}
1209#[repr(C)]
1210#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1211pub struct OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag {
1212    pub _bitfield_align_1: [u8; 0],
1213    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
1214}
1215pub type OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize = ::std::os::raw::c_uchar;
1216unsafe extern "C" {
1217    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level4ETag9BitwiseOrEPKS4_i"]
1218    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_BitwiseOr(
1219        eTags: *const OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag,
1220        size: ::std::os::raw::c_int,
1221    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag;
1222}
1223impl OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag {
1224    #[inline]
1225    pub fn _nonManifold(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1226        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
1227    }
1228
1229    #[inline]
1230    pub fn set__nonManifold(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize) {
1231        unsafe {
1232            let val: u8 = ::std::mem::transmute(val);
1233            self._bitfield_1.set(0usize, 1u8, val as u64)
1234        }
1235    }
1236
1237    #[inline]
1238    pub unsafe fn _nonManifold_raw(
1239        this: *const Self,
1240    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1241        unsafe {
1242            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1243                ::std::ptr::addr_of!((*this)._bitfield_1),
1244                0usize,
1245                1u8,
1246            ) as u8)
1247        }
1248    }
1249
1250    #[inline]
1251    pub unsafe fn set__nonManifold_raw(
1252        this: *mut Self,
1253        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1254    ) {
1255        unsafe {
1256            let val: u8 = ::std::mem::transmute(val);
1257            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1258                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1259                0usize,
1260                1u8,
1261                val as u64,
1262            )
1263        }
1264    }
1265
1266    #[inline]
1267    pub fn _boundary(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1268        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
1269    }
1270
1271    #[inline]
1272    pub fn set__boundary(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize) {
1273        unsafe {
1274            let val: u8 = ::std::mem::transmute(val);
1275            self._bitfield_1.set(1usize, 1u8, val as u64)
1276        }
1277    }
1278
1279    #[inline]
1280    pub unsafe fn _boundary_raw(
1281        this: *const Self,
1282    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1283        unsafe {
1284            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1285                ::std::ptr::addr_of!((*this)._bitfield_1),
1286                1usize,
1287                1u8,
1288            ) as u8)
1289        }
1290    }
1291
1292    #[inline]
1293    pub unsafe fn set__boundary_raw(
1294        this: *mut Self,
1295        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1296    ) {
1297        unsafe {
1298            let val: u8 = ::std::mem::transmute(val);
1299            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1300                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1301                1usize,
1302                1u8,
1303                val as u64,
1304            )
1305        }
1306    }
1307
1308    #[inline]
1309    pub fn _infSharp(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1310        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
1311    }
1312
1313    #[inline]
1314    pub fn set__infSharp(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize) {
1315        unsafe {
1316            let val: u8 = ::std::mem::transmute(val);
1317            self._bitfield_1.set(2usize, 1u8, val as u64)
1318        }
1319    }
1320
1321    #[inline]
1322    pub unsafe fn _infSharp_raw(
1323        this: *const Self,
1324    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1325        unsafe {
1326            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1327                ::std::ptr::addr_of!((*this)._bitfield_1),
1328                2usize,
1329                1u8,
1330            ) as u8)
1331        }
1332    }
1333
1334    #[inline]
1335    pub unsafe fn set__infSharp_raw(
1336        this: *mut Self,
1337        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1338    ) {
1339        unsafe {
1340            let val: u8 = ::std::mem::transmute(val);
1341            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1342                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1343                2usize,
1344                1u8,
1345                val as u64,
1346            )
1347        }
1348    }
1349
1350    #[inline]
1351    pub fn _semiSharp(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1352        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
1353    }
1354
1355    #[inline]
1356    pub fn set__semiSharp(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize) {
1357        unsafe {
1358            let val: u8 = ::std::mem::transmute(val);
1359            self._bitfield_1.set(3usize, 1u8, val as u64)
1360        }
1361    }
1362
1363    #[inline]
1364    pub unsafe fn _semiSharp_raw(
1365        this: *const Self,
1366    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize {
1367        unsafe {
1368            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1369                ::std::ptr::addr_of!((*this)._bitfield_1),
1370                3usize,
1371                1u8,
1372            ) as u8)
1373        }
1374    }
1375
1376    #[inline]
1377    pub unsafe fn set__semiSharp_raw(
1378        this: *mut Self,
1379        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1380    ) {
1381        unsafe {
1382            let val: u8 = ::std::mem::transmute(val);
1383            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1384                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1385                3usize,
1386                1u8,
1387                val as u64,
1388            )
1389        }
1390    }
1391
1392    #[inline]
1393    pub fn new_bitfield_1(
1394        _nonManifold: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1395        _boundary: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1396        _infSharp: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1397        _semiSharp: OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_ETagSize,
1398    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
1399        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
1400        __bindgen_bitfield_unit.set(0usize, 1u8, {
1401            let _nonManifold: u8 = unsafe { ::std::mem::transmute(_nonManifold) };
1402            _nonManifold as u64
1403        });
1404        __bindgen_bitfield_unit.set(1usize, 1u8, {
1405            let _boundary: u8 = unsafe { ::std::mem::transmute(_boundary) };
1406            _boundary as u64
1407        });
1408        __bindgen_bitfield_unit.set(2usize, 1u8, {
1409            let _infSharp: u8 = unsafe { ::std::mem::transmute(_infSharp) };
1410            _infSharp as u64
1411        });
1412        __bindgen_bitfield_unit.set(3usize, 1u8, {
1413            let _semiSharp: u8 = unsafe { ::std::mem::transmute(_semiSharp) };
1414            _semiSharp as u64
1415        });
1416        __bindgen_bitfield_unit
1417    }
1418
1419    #[inline]
1420    pub unsafe fn BitwiseOr(
1421        eTags: *const OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag,
1422        size: ::std::os::raw::c_int,
1423    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag {
1424        OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag_BitwiseOr(eTags, size)
1425    }
1426}
1427#[repr(C)]
1428#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1429pub struct OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag {
1430    pub _bitfield_align_1: [u8; 0],
1431    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
1432}
1433pub type OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag_FTagSize = ::std::os::raw::c_uchar;
1434impl OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag {
1435    #[inline]
1436    pub fn _hole(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag_FTagSize {
1437        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
1438    }
1439
1440    #[inline]
1441    pub fn set__hole(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag_FTagSize) {
1442        unsafe {
1443            let val: u8 = ::std::mem::transmute(val);
1444            self._bitfield_1.set(0usize, 1u8, val as u64)
1445        }
1446    }
1447
1448    #[inline]
1449    pub unsafe fn _hole_raw(
1450        this: *const Self,
1451    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag_FTagSize {
1452        unsafe {
1453            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1454                ::std::ptr::addr_of!((*this)._bitfield_1),
1455                0usize,
1456                1u8,
1457            ) as u8)
1458        }
1459    }
1460
1461    #[inline]
1462    pub unsafe fn set__hole_raw(
1463        this: *mut Self,
1464        val: OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag_FTagSize,
1465    ) {
1466        unsafe {
1467            let val: u8 = ::std::mem::transmute(val);
1468            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1469                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1470                0usize,
1471                1u8,
1472                val as u64,
1473            )
1474        }
1475    }
1476
1477    #[inline]
1478    pub fn new_bitfield_1(
1479        _hole: OpenSubdiv_v3_7_0_Vtr_internal_Level_FTag_FTagSize,
1480    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
1481        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
1482        __bindgen_bitfield_unit.set(0usize, 1u8, {
1483            let _hole: u8 = unsafe { ::std::mem::transmute(_hole) };
1484            _hole as u64
1485        });
1486        __bindgen_bitfield_unit
1487    }
1488}
1489#[repr(C)]
1490#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1491pub struct OpenSubdiv_v3_7_0_Vtr_internal_Level_VSpan {
1492    pub _numFaces: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
1493    pub _startFace: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
1494    pub _cornerInSpan: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
1495    pub _bitfield_align_1: [u8; 0],
1496    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
1497    pub __bindgen_padding_0: u8,
1498}
1499impl OpenSubdiv_v3_7_0_Vtr_internal_Level_VSpan {
1500    #[inline]
1501    pub fn _periodic(&self) -> ::std::os::raw::c_ushort {
1502        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u16) }
1503    }
1504
1505    #[inline]
1506    pub fn set__periodic(&mut self, val: ::std::os::raw::c_ushort) {
1507        unsafe {
1508            let val: u16 = ::std::mem::transmute(val);
1509            self._bitfield_1.set(0usize, 1u8, val as u64)
1510        }
1511    }
1512
1513    #[inline]
1514    pub unsafe fn _periodic_raw(this: *const Self) -> ::std::os::raw::c_ushort {
1515        unsafe {
1516            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1517                ::std::ptr::addr_of!((*this)._bitfield_1),
1518                0usize,
1519                1u8,
1520            ) as u16)
1521        }
1522    }
1523
1524    #[inline]
1525    pub unsafe fn set__periodic_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
1526        unsafe {
1527            let val: u16 = ::std::mem::transmute(val);
1528            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1529                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1530                0usize,
1531                1u8,
1532                val as u64,
1533            )
1534        }
1535    }
1536
1537    #[inline]
1538    pub fn _sharp(&self) -> ::std::os::raw::c_ushort {
1539        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u16) }
1540    }
1541
1542    #[inline]
1543    pub fn set__sharp(&mut self, val: ::std::os::raw::c_ushort) {
1544        unsafe {
1545            let val: u16 = ::std::mem::transmute(val);
1546            self._bitfield_1.set(1usize, 1u8, val as u64)
1547        }
1548    }
1549
1550    #[inline]
1551    pub unsafe fn _sharp_raw(this: *const Self) -> ::std::os::raw::c_ushort {
1552        unsafe {
1553            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
1554                ::std::ptr::addr_of!((*this)._bitfield_1),
1555                1usize,
1556                1u8,
1557            ) as u16)
1558        }
1559    }
1560
1561    #[inline]
1562    pub unsafe fn set__sharp_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
1563        unsafe {
1564            let val: u16 = ::std::mem::transmute(val);
1565            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
1566                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
1567                1usize,
1568                1u8,
1569                val as u64,
1570            )
1571        }
1572    }
1573
1574    #[inline]
1575    pub fn new_bitfield_1(
1576        _periodic: ::std::os::raw::c_ushort,
1577        _sharp: ::std::os::raw::c_ushort,
1578    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
1579        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
1580        __bindgen_bitfield_unit.set(0usize, 1u8, {
1581            let _periodic: u16 = unsafe { ::std::mem::transmute(_periodic) };
1582            _periodic as u64
1583        });
1584        __bindgen_bitfield_unit.set(1usize, 1u8, {
1585            let _sharp: u16 = unsafe { ::std::mem::transmute(_sharp) };
1586            _sharp as u64
1587        });
1588        __bindgen_bitfield_unit
1589    }
1590}
1591pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_MISSING_EDGE_FACES:
1592    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 0;
1593pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_MISSING_EDGE_VERTS:
1594    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 1;
1595pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_MISSING_FACE_EDGES:
1596    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 2;
1597pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_MISSING_FACE_VERTS:
1598    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 3;
1599pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_MISSING_VERT_FACES:
1600    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 4;
1601pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_MISSING_VERT_EDGES:
1602    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 5;
1603pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_FAILED_CORRELATION_EDGE_FACE : OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 6 ;
1604pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_FAILED_CORRELATION_FACE_VERT : OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 7 ;
1605pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_FAILED_CORRELATION_FACE_EDGE : OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 8 ;
1606pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_FAILED_ORIENTATION_INCIDENT_EDGE : OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 9 ;
1607pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACE : OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 10 ;
1608pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACES_EDGES : OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 11 ;
1609pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_DEGENERATE_EDGE:
1610    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 12;
1611pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_NON_MANIFOLD_EDGE:
1612    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 13;
1613pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_INVALID_CREASE_EDGE:
1614    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 14;
1615pub const OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError_TOPOLOGY_INVALID_CREASE_VERT:
1616    OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = 15;
1617pub type OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError = ::std::os::raw::c_uint;
1618pub type OpenSubdiv_v3_7_0_Vtr_internal_Level_ValidationCallback = ::std::option::Option<
1619    unsafe extern "C" fn(
1620        errCode: OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError,
1621        msg: *const ::std::os::raw::c_char,
1622        clientData: *const ::std::os::raw::c_void,
1623    ),
1624>;
1625unsafe extern "C" {
1626    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level8findEdgeEii"]
1627    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_findEdge(
1628        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1629        v0Index: OpenSubdiv_v3_7_0_Vtr_Index,
1630        v1Index: OpenSubdiv_v3_7_0_Vtr_Index,
1631    ) -> OpenSubdiv_v3_7_0_Vtr_Index;
1632}
1633unsafe extern "C" {
1634    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level14getFVarOptionsEi"]
1635    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFVarOptions(
1636        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1637        channel: ::std::os::raw::c_int,
1638    ) -> OpenSubdiv_v3_7_0_Sdc_Options;
1639}
1640unsafe extern "C" {
1641    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level16getNumFVarValuesEi"]
1642    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getNumFVarValues(
1643        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1644        channel: ::std::os::raw::c_int,
1645    ) -> ::std::os::raw::c_int;
1646}
1647unsafe extern "C" {
1648    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level17getFaceFVarValuesEii"]
1649    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceFVarValues(
1650        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1651        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1652        channel: ::std::os::raw::c_int,
1653    ) -> OpenSubdiv_v3_7_0_Vtr_ConstIndexArray;
1654}
1655unsafe extern "C" {
1656    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level22getTopologyErrorStringENS3_13TopologyErrorE"]
1657    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getTopologyErrorString(
1658        errCode: OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError,
1659    ) -> *const ::std::os::raw::c_char;
1660}
1661unsafe extern "C" {
1662    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level16validateTopologyEPFvNS3_13TopologyErrorEPKcPKvES8_"]
1663    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_validateTopology(
1664        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1665        callback: OpenSubdiv_v3_7_0_Vtr_internal_Level_ValidationCallback,
1666        clientData: *const ::std::os::raw::c_void,
1667    ) -> bool;
1668}
1669unsafe extern "C" {
1670    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level5printEPKNS2_10RefinementE"]
1671    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_print(
1672        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1673        parentRefinement: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
1674    );
1675}
1676unsafe extern "C" {
1677    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level19isSingleCreasePatchEiPfPi"]
1678    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_isSingleCreasePatch(
1679        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1680        face: OpenSubdiv_v3_7_0_Vtr_Index,
1681        sharpnessOut: *mut f32,
1682        rotationOut: *mut ::std::os::raw::c_int,
1683    ) -> bool;
1684}
1685unsafe extern "C" {
1686    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level27doesVertexFVarTopologyMatchEii"]
1687    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_doesVertexFVarTopologyMatch(
1688        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1689        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1690        fvarChannel: ::std::os::raw::c_int,
1691    ) -> bool;
1692}
1693unsafe extern "C" {
1694    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level25doesFaceFVarTopologyMatchEii"]
1695    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_doesFaceFVarTopologyMatch(
1696        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1697        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1698        fvarChannel: ::std::os::raw::c_int,
1699    ) -> bool;
1700}
1701unsafe extern "C" {
1702    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level25doesEdgeFVarTopologyMatchEii"]
1703    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_doesEdgeFVarTopologyMatch(
1704        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1705        eIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1706        fvarChannel: ::std::os::raw::c_int,
1707    ) -> bool;
1708}
1709unsafe extern "C" {
1710    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level12getFaceVTagsEiPNS3_4VTagEi"]
1711    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceVTags(
1712        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1713        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1714        vTags: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag,
1715        fvarChannel: ::std::os::raw::c_int,
1716    );
1717}
1718unsafe extern "C" {
1719    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level12getFaceETagsEiPNS3_4ETagEi"]
1720    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceETags(
1721        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1722        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1723        eTags: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag,
1724        fvarChannel: ::std::os::raw::c_int,
1725    );
1726}
1727unsafe extern "C" {
1728    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level20getFaceCompositeVTagEii"]
1729    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceCompositeVTag(
1730        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1731        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1732        fvarChannel: ::std::os::raw::c_int,
1733    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag;
1734}
1735unsafe extern "C" {
1736    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level20getFaceCompositeVTagERNS1_10ConstArrayIiEE"]
1737    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceCompositeVTag1(
1738        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1739        fVerts: *mut OpenSubdiv_v3_7_0_Vtr_ConstIndexArray,
1740    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag;
1741}
1742unsafe extern "C" {
1743    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level26getVertexCompositeFVarVTagEii"]
1744    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getVertexCompositeFVarVTag(
1745        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1746        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1747        fvarChannel: ::std::os::raw::c_int,
1748    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag;
1749}
1750unsafe extern "C" {
1751    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level27gatherQuadLinearPatchPointsEiPiii"]
1752    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadLinearPatchPoints(
1753        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1754        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1755        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1756        rotation: ::std::os::raw::c_int,
1757        fvarChannel: ::std::os::raw::c_int,
1758    ) -> ::std::os::raw::c_int;
1759}
1760unsafe extern "C" {
1761    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level36gatherQuadRegularInteriorPatchPointsEiPiii"]
1762    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularInteriorPatchPoints(
1763        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1764        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1765        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1766        rotation: ::std::os::raw::c_int,
1767        fvarChannel: ::std::os::raw::c_int,
1768    ) -> ::std::os::raw::c_int;
1769}
1770unsafe extern "C" {
1771    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level36gatherQuadRegularBoundaryPatchPointsEiPiii"]
1772    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularBoundaryPatchPoints(
1773        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1774        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1775        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1776        boundaryEdgeInFace: ::std::os::raw::c_int,
1777        fvarChannel: ::std::os::raw::c_int,
1778    ) -> ::std::os::raw::c_int;
1779}
1780unsafe extern "C" {
1781    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level34gatherQuadRegularCornerPatchPointsEiPiii"]
1782    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularCornerPatchPoints(
1783        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1784        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1785        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1786        cornerVertInFace: ::std::os::raw::c_int,
1787        fvarChannel: ::std::os::raw::c_int,
1788    ) -> ::std::os::raw::c_int;
1789}
1790unsafe extern "C" {
1791    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level33gatherQuadRegularRingAroundVertexEiPii"]
1792    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularRingAroundVertex(
1793        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1794        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1795        ringPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1796        fvarChannel: ::std::os::raw::c_int,
1797    ) -> ::std::os::raw::c_int;
1798}
1799unsafe extern "C" {
1800    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level40gatherQuadRegularPartialRingAroundVertexEiRKNS3_5VSpanEPii"]
1801    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularPartialRingAroundVertex(
1802        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1803        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1804        span: *const OpenSubdiv_v3_7_0_Vtr_internal_Level_VSpan,
1805        ringPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1806        fvarChannel: ::std::os::raw::c_int,
1807    ) -> ::std::os::raw::c_int;
1808}
1809unsafe extern "C" {
1810    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level35gatherTriRegularInteriorPatchPointsEiPii"]
1811    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularInteriorPatchPoints(
1812        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1813        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1814        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1815        rotation: ::std::os::raw::c_int,
1816    ) -> ::std::os::raw::c_int;
1817}
1818unsafe extern "C" {
1819    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level41gatherTriRegularBoundaryVertexPatchPointsEiPii"]
1820    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularBoundaryVertexPatchPoints(
1821        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1822        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1823        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1824        boundaryVertInFace: ::std::os::raw::c_int,
1825    ) -> ::std::os::raw::c_int;
1826}
1827unsafe extern "C" {
1828    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level39gatherTriRegularBoundaryEdgePatchPointsEiPii"]
1829    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularBoundaryEdgePatchPoints(
1830        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1831        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1832        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1833        boundaryEdgeInFace: ::std::os::raw::c_int,
1834    ) -> ::std::os::raw::c_int;
1835}
1836unsafe extern "C" {
1837    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level39gatherTriRegularCornerVertexPatchPointsEiPii"]
1838    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularCornerVertexPatchPoints(
1839        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1840        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1841        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1842        cornerVertInFace: ::std::os::raw::c_int,
1843    ) -> ::std::os::raw::c_int;
1844}
1845unsafe extern "C" {
1846    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level37gatherTriRegularCornerEdgePatchPointsEiPii"]
1847    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularCornerEdgePatchPoints(
1848        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1849        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1850        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1851        cornerEdgeInFace: ::std::os::raw::c_int,
1852    ) -> ::std::os::raw::c_int;
1853}
1854unsafe extern "C" {
1855    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level17createFVarChannelEiRKNS0_3Sdc7OptionsE"]
1856    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_createFVarChannel(
1857        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1858        fvarValueCount: ::std::os::raw::c_int,
1859        options: *const OpenSubdiv_v3_7_0_Sdc_Options,
1860    ) -> ::std::os::raw::c_int;
1861}
1862unsafe extern "C" {
1863    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level18destroyFVarChannelEi"]
1864    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_destroyFVarChannel(
1865        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1866        channel: ::std::os::raw::c_int,
1867    );
1868}
1869unsafe extern "C" {
1870    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level17getFaceFVarValuesEii"]
1871    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceFVarValues1(
1872        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1873        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1874        channel: ::std::os::raw::c_int,
1875    ) -> OpenSubdiv_v3_7_0_Vtr_IndexArray;
1876}
1877unsafe extern "C" {
1878    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level27completeFVarChannelTopologyEii"]
1879    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_completeFVarChannelTopology(
1880        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1881        channel: ::std::os::raw::c_int,
1882        regBoundaryValence: ::std::os::raw::c_int,
1883    );
1884}
1885unsafe extern "C" {
1886    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level32completeTopologyFromFaceVerticesEv"]
1887    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_completeTopologyFromFaceVertices(
1888        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1889    ) -> bool;
1890}
1891unsafe extern "C" {
1892    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level8findEdgeEiiNS1_10ConstArrayIiEE"]
1893    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_findEdge1(
1894        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1895        v0: OpenSubdiv_v3_7_0_Vtr_Index,
1896        v1: OpenSubdiv_v3_7_0_Vtr_Index,
1897        v0Edges: OpenSubdiv_v3_7_0_Vtr_ConstIndexArray,
1898    ) -> OpenSubdiv_v3_7_0_Vtr_Index;
1899}
1900unsafe extern "C" {
1901    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level24orientIncidentComponentsEv"]
1902    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_orientIncidentComponents(
1903        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1904    );
1905}
1906unsafe extern "C" {
1907    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level24orderVertexFacesAndEdgesEiPiS4_"]
1908    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_orderVertexFacesAndEdges(
1909        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1910        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1911        vFaces: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1912        vEdges: *mut OpenSubdiv_v3_7_0_Vtr_Index,
1913    ) -> bool;
1914}
1915unsafe extern "C" {
1916    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level24orderVertexFacesAndEdgesEi"]
1917    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_orderVertexFacesAndEdges1(
1918        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1919        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1920    ) -> bool;
1921}
1922unsafe extern "C" {
1923    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal5Level27testVertexNonManifoldCreaseEi"]
1924    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_testVertexNonManifoldCrease(
1925        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
1926        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1927    ) -> bool;
1928}
1929unsafe extern "C" {
1930    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5Level20populateLocalIndicesEv"]
1931    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_populateLocalIndices(
1932        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1933    );
1934}
1935unsafe extern "C" {
1936    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5LevelC1Ev"]
1937    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_Level(
1938        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1939    );
1940}
1941unsafe extern "C" {
1942    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal5LevelD1Ev"]
1943    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Level_Level_destructor(
1944        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
1945    );
1946}
1947impl OpenSubdiv_v3_7_0_Vtr_internal_Level {
1948    #[inline]
1949    pub unsafe fn findEdge(
1950        &self,
1951        v0Index: OpenSubdiv_v3_7_0_Vtr_Index,
1952        v1Index: OpenSubdiv_v3_7_0_Vtr_Index,
1953    ) -> OpenSubdiv_v3_7_0_Vtr_Index {
1954        OpenSubdiv_v3_7_0_Vtr_internal_Level_findEdge(self, v0Index, v1Index)
1955    }
1956
1957    #[inline]
1958    pub unsafe fn getFVarOptions(
1959        &self,
1960        channel: ::std::os::raw::c_int,
1961    ) -> OpenSubdiv_v3_7_0_Sdc_Options {
1962        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFVarOptions(self, channel)
1963    }
1964
1965    #[inline]
1966    pub unsafe fn getNumFVarValues(&self, channel: ::std::os::raw::c_int) -> ::std::os::raw::c_int {
1967        OpenSubdiv_v3_7_0_Vtr_internal_Level_getNumFVarValues(self, channel)
1968    }
1969
1970    #[inline]
1971    pub unsafe fn getFaceFVarValues(
1972        &self,
1973        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
1974        channel: ::std::os::raw::c_int,
1975    ) -> OpenSubdiv_v3_7_0_Vtr_ConstIndexArray {
1976        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceFVarValues(self, faceIndex, channel)
1977    }
1978
1979    #[inline]
1980    pub unsafe fn getTopologyErrorString(
1981        errCode: OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError,
1982    ) -> *const ::std::os::raw::c_char {
1983        OpenSubdiv_v3_7_0_Vtr_internal_Level_getTopologyErrorString(errCode)
1984    }
1985
1986    #[inline]
1987    pub unsafe fn validateTopology(
1988        &self,
1989        callback: OpenSubdiv_v3_7_0_Vtr_internal_Level_ValidationCallback,
1990        clientData: *const ::std::os::raw::c_void,
1991    ) -> bool {
1992        OpenSubdiv_v3_7_0_Vtr_internal_Level_validateTopology(self, callback, clientData)
1993    }
1994
1995    #[inline]
1996    pub unsafe fn print(&self, parentRefinement: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement) {
1997        OpenSubdiv_v3_7_0_Vtr_internal_Level_print(self, parentRefinement)
1998    }
1999
2000    #[inline]
2001    pub unsafe fn isSingleCreasePatch(
2002        &self,
2003        face: OpenSubdiv_v3_7_0_Vtr_Index,
2004        sharpnessOut: *mut f32,
2005        rotationOut: *mut ::std::os::raw::c_int,
2006    ) -> bool {
2007        OpenSubdiv_v3_7_0_Vtr_internal_Level_isSingleCreasePatch(
2008            self,
2009            face,
2010            sharpnessOut,
2011            rotationOut,
2012        )
2013    }
2014
2015    #[inline]
2016    pub unsafe fn doesVertexFVarTopologyMatch(
2017        &self,
2018        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2019        fvarChannel: ::std::os::raw::c_int,
2020    ) -> bool {
2021        OpenSubdiv_v3_7_0_Vtr_internal_Level_doesVertexFVarTopologyMatch(self, vIndex, fvarChannel)
2022    }
2023
2024    #[inline]
2025    pub unsafe fn doesFaceFVarTopologyMatch(
2026        &self,
2027        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2028        fvarChannel: ::std::os::raw::c_int,
2029    ) -> bool {
2030        OpenSubdiv_v3_7_0_Vtr_internal_Level_doesFaceFVarTopologyMatch(self, fIndex, fvarChannel)
2031    }
2032
2033    #[inline]
2034    pub unsafe fn doesEdgeFVarTopologyMatch(
2035        &self,
2036        eIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2037        fvarChannel: ::std::os::raw::c_int,
2038    ) -> bool {
2039        OpenSubdiv_v3_7_0_Vtr_internal_Level_doesEdgeFVarTopologyMatch(self, eIndex, fvarChannel)
2040    }
2041
2042    #[inline]
2043    pub unsafe fn getFaceVTags(
2044        &self,
2045        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2046        vTags: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag,
2047        fvarChannel: ::std::os::raw::c_int,
2048    ) {
2049        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceVTags(self, fIndex, vTags, fvarChannel)
2050    }
2051
2052    #[inline]
2053    pub unsafe fn getFaceETags(
2054        &self,
2055        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2056        eTags: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level_ETag,
2057        fvarChannel: ::std::os::raw::c_int,
2058    ) {
2059        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceETags(self, fIndex, eTags, fvarChannel)
2060    }
2061
2062    #[inline]
2063    pub unsafe fn getFaceCompositeVTag(
2064        &self,
2065        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2066        fvarChannel: ::std::os::raw::c_int,
2067    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag {
2068        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceCompositeVTag(self, fIndex, fvarChannel)
2069    }
2070
2071    #[inline]
2072    pub unsafe fn getFaceCompositeVTag1(
2073        &self,
2074        fVerts: *mut OpenSubdiv_v3_7_0_Vtr_ConstIndexArray,
2075    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag {
2076        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceCompositeVTag1(self, fVerts)
2077    }
2078
2079    #[inline]
2080    pub unsafe fn getVertexCompositeFVarVTag(
2081        &self,
2082        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2083        fvarChannel: ::std::os::raw::c_int,
2084    ) -> OpenSubdiv_v3_7_0_Vtr_internal_Level_VTag {
2085        OpenSubdiv_v3_7_0_Vtr_internal_Level_getVertexCompositeFVarVTag(self, vIndex, fvarChannel)
2086    }
2087
2088    #[inline]
2089    pub unsafe fn gatherQuadLinearPatchPoints(
2090        &self,
2091        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2092        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2093        rotation: ::std::os::raw::c_int,
2094        fvarChannel: ::std::os::raw::c_int,
2095    ) -> ::std::os::raw::c_int {
2096        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadLinearPatchPoints(
2097            self,
2098            fIndex,
2099            patchPoints,
2100            rotation,
2101            fvarChannel,
2102        )
2103    }
2104
2105    #[inline]
2106    pub unsafe fn gatherQuadRegularInteriorPatchPoints(
2107        &self,
2108        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2109        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2110        rotation: ::std::os::raw::c_int,
2111        fvarChannel: ::std::os::raw::c_int,
2112    ) -> ::std::os::raw::c_int {
2113        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularInteriorPatchPoints(
2114            self,
2115            fIndex,
2116            patchPoints,
2117            rotation,
2118            fvarChannel,
2119        )
2120    }
2121
2122    #[inline]
2123    pub unsafe fn gatherQuadRegularBoundaryPatchPoints(
2124        &self,
2125        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2126        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2127        boundaryEdgeInFace: ::std::os::raw::c_int,
2128        fvarChannel: ::std::os::raw::c_int,
2129    ) -> ::std::os::raw::c_int {
2130        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularBoundaryPatchPoints(
2131            self,
2132            fIndex,
2133            patchPoints,
2134            boundaryEdgeInFace,
2135            fvarChannel,
2136        )
2137    }
2138
2139    #[inline]
2140    pub unsafe fn gatherQuadRegularCornerPatchPoints(
2141        &self,
2142        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2143        patchPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2144        cornerVertInFace: ::std::os::raw::c_int,
2145        fvarChannel: ::std::os::raw::c_int,
2146    ) -> ::std::os::raw::c_int {
2147        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularCornerPatchPoints(
2148            self,
2149            fIndex,
2150            patchPoints,
2151            cornerVertInFace,
2152            fvarChannel,
2153        )
2154    }
2155
2156    #[inline]
2157    pub unsafe fn gatherQuadRegularRingAroundVertex(
2158        &self,
2159        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2160        ringPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2161        fvarChannel: ::std::os::raw::c_int,
2162    ) -> ::std::os::raw::c_int {
2163        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularRingAroundVertex(
2164            self,
2165            vIndex,
2166            ringPoints,
2167            fvarChannel,
2168        )
2169    }
2170
2171    #[inline]
2172    pub unsafe fn gatherQuadRegularPartialRingAroundVertex(
2173        &self,
2174        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2175        span: *const OpenSubdiv_v3_7_0_Vtr_internal_Level_VSpan,
2176        ringPoints: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2177        fvarChannel: ::std::os::raw::c_int,
2178    ) -> ::std::os::raw::c_int {
2179        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherQuadRegularPartialRingAroundVertex(
2180            self,
2181            vIndex,
2182            span,
2183            ringPoints,
2184            fvarChannel,
2185        )
2186    }
2187
2188    #[inline]
2189    pub unsafe fn gatherTriRegularInteriorPatchPoints(
2190        &self,
2191        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2192        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2193        rotation: ::std::os::raw::c_int,
2194    ) -> ::std::os::raw::c_int {
2195        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularInteriorPatchPoints(
2196            self, fIndex, patchVerts, rotation,
2197        )
2198    }
2199
2200    #[inline]
2201    pub unsafe fn gatherTriRegularBoundaryVertexPatchPoints(
2202        &self,
2203        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2204        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2205        boundaryVertInFace: ::std::os::raw::c_int,
2206    ) -> ::std::os::raw::c_int {
2207        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularBoundaryVertexPatchPoints(
2208            self,
2209            fIndex,
2210            patchVerts,
2211            boundaryVertInFace,
2212        )
2213    }
2214
2215    #[inline]
2216    pub unsafe fn gatherTriRegularBoundaryEdgePatchPoints(
2217        &self,
2218        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2219        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2220        boundaryEdgeInFace: ::std::os::raw::c_int,
2221    ) -> ::std::os::raw::c_int {
2222        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularBoundaryEdgePatchPoints(
2223            self,
2224            fIndex,
2225            patchVerts,
2226            boundaryEdgeInFace,
2227        )
2228    }
2229
2230    #[inline]
2231    pub unsafe fn gatherTriRegularCornerVertexPatchPoints(
2232        &self,
2233        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2234        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2235        cornerVertInFace: ::std::os::raw::c_int,
2236    ) -> ::std::os::raw::c_int {
2237        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularCornerVertexPatchPoints(
2238            self,
2239            fIndex,
2240            patchVerts,
2241            cornerVertInFace,
2242        )
2243    }
2244
2245    #[inline]
2246    pub unsafe fn gatherTriRegularCornerEdgePatchPoints(
2247        &self,
2248        fIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2249        patchVerts: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2250        cornerEdgeInFace: ::std::os::raw::c_int,
2251    ) -> ::std::os::raw::c_int {
2252        OpenSubdiv_v3_7_0_Vtr_internal_Level_gatherTriRegularCornerEdgePatchPoints(
2253            self,
2254            fIndex,
2255            patchVerts,
2256            cornerEdgeInFace,
2257        )
2258    }
2259
2260    #[inline]
2261    pub unsafe fn createFVarChannel(
2262        &mut self,
2263        fvarValueCount: ::std::os::raw::c_int,
2264        options: *const OpenSubdiv_v3_7_0_Sdc_Options,
2265    ) -> ::std::os::raw::c_int {
2266        OpenSubdiv_v3_7_0_Vtr_internal_Level_createFVarChannel(self, fvarValueCount, options)
2267    }
2268
2269    #[inline]
2270    pub unsafe fn destroyFVarChannel(&mut self, channel: ::std::os::raw::c_int) {
2271        OpenSubdiv_v3_7_0_Vtr_internal_Level_destroyFVarChannel(self, channel)
2272    }
2273
2274    #[inline]
2275    pub unsafe fn getFaceFVarValues1(
2276        &mut self,
2277        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2278        channel: ::std::os::raw::c_int,
2279    ) -> OpenSubdiv_v3_7_0_Vtr_IndexArray {
2280        OpenSubdiv_v3_7_0_Vtr_internal_Level_getFaceFVarValues1(self, faceIndex, channel)
2281    }
2282
2283    #[inline]
2284    pub unsafe fn completeFVarChannelTopology(
2285        &mut self,
2286        channel: ::std::os::raw::c_int,
2287        regBoundaryValence: ::std::os::raw::c_int,
2288    ) {
2289        OpenSubdiv_v3_7_0_Vtr_internal_Level_completeFVarChannelTopology(
2290            self,
2291            channel,
2292            regBoundaryValence,
2293        )
2294    }
2295
2296    #[inline]
2297    pub unsafe fn completeTopologyFromFaceVertices(&mut self) -> bool {
2298        OpenSubdiv_v3_7_0_Vtr_internal_Level_completeTopologyFromFaceVertices(self)
2299    }
2300
2301    #[inline]
2302    pub unsafe fn findEdge1(
2303        &self,
2304        v0: OpenSubdiv_v3_7_0_Vtr_Index,
2305        v1: OpenSubdiv_v3_7_0_Vtr_Index,
2306        v0Edges: OpenSubdiv_v3_7_0_Vtr_ConstIndexArray,
2307    ) -> OpenSubdiv_v3_7_0_Vtr_Index {
2308        OpenSubdiv_v3_7_0_Vtr_internal_Level_findEdge1(self, v0, v1, v0Edges)
2309    }
2310
2311    #[inline]
2312    pub unsafe fn orientIncidentComponents(&mut self) {
2313        OpenSubdiv_v3_7_0_Vtr_internal_Level_orientIncidentComponents(self)
2314    }
2315
2316    #[inline]
2317    pub unsafe fn orderVertexFacesAndEdges(
2318        &self,
2319        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2320        vFaces: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2321        vEdges: *mut OpenSubdiv_v3_7_0_Vtr_Index,
2322    ) -> bool {
2323        OpenSubdiv_v3_7_0_Vtr_internal_Level_orderVertexFacesAndEdges(self, vIndex, vFaces, vEdges)
2324    }
2325
2326    #[inline]
2327    pub unsafe fn orderVertexFacesAndEdges1(
2328        &mut self,
2329        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
2330    ) -> bool {
2331        OpenSubdiv_v3_7_0_Vtr_internal_Level_orderVertexFacesAndEdges1(self, vIndex)
2332    }
2333
2334    #[inline]
2335    pub unsafe fn testVertexNonManifoldCrease(&self, vIndex: OpenSubdiv_v3_7_0_Vtr_Index) -> bool {
2336        OpenSubdiv_v3_7_0_Vtr_internal_Level_testVertexNonManifoldCrease(self, vIndex)
2337    }
2338
2339    #[inline]
2340    pub unsafe fn populateLocalIndices(&mut self) {
2341        OpenSubdiv_v3_7_0_Vtr_internal_Level_populateLocalIndices(self)
2342    }
2343
2344    #[inline]
2345    pub unsafe fn new() -> Self {
2346        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
2347        OpenSubdiv_v3_7_0_Vtr_internal_Level_Level(__bindgen_tmp.as_mut_ptr());
2348        __bindgen_tmp.assume_init()
2349    }
2350
2351    #[inline]
2352    pub unsafe fn destruct(&mut self) {
2353        OpenSubdiv_v3_7_0_Vtr_internal_Level_Level_destructor(self)
2354    }
2355}
2356#[repr(C)]
2357pub struct OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel {
2358    pub _level: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
2359    pub _options: OpenSubdiv_v3_7_0_Sdc_Options,
2360    pub _isLinear: bool,
2361    pub _hasLinearBoundaries: bool,
2362    pub _hasDependentSharpness: bool,
2363    pub _valueCount: ::std::os::raw::c_int,
2364    pub _faceVertValues: __BindgenOpaqueArray<u64, 3usize>,
2365    pub _edgeTags: __BindgenOpaqueArray<u64, 3usize>,
2366    pub _vertSiblingCounts: __BindgenOpaqueArray<u64, 3usize>,
2367    pub _vertSiblingOffsets: __BindgenOpaqueArray<u64, 3usize>,
2368    pub _vertFaceSiblings: __BindgenOpaqueArray<u64, 3usize>,
2369    pub _vertValueIndices: __BindgenOpaqueArray<u64, 3usize>,
2370    pub _vertValueTags: __BindgenOpaqueArray<u64, 3usize>,
2371    pub _vertValueCreaseEnds: __BindgenOpaqueArray<u64, 3usize>,
2372}
2373#[repr(C)]
2374#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
2375pub struct OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag {
2376    pub _bitfield_align_1: [u8; 0],
2377    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
2378}
2379pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize = ::std::os::raw::c_uchar;
2380impl OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag {
2381    #[inline]
2382    pub fn _mismatch(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2383        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
2384    }
2385
2386    #[inline]
2387    pub fn set__mismatch(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize) {
2388        unsafe {
2389            let val: u8 = ::std::mem::transmute(val);
2390            self._bitfield_1.set(0usize, 1u8, val as u64)
2391        }
2392    }
2393
2394    #[inline]
2395    pub unsafe fn _mismatch_raw(
2396        this: *const Self,
2397    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2398        unsafe {
2399            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2400                ::std::ptr::addr_of!((*this)._bitfield_1),
2401                0usize,
2402                1u8,
2403            ) as u8)
2404        }
2405    }
2406
2407    #[inline]
2408    pub unsafe fn set__mismatch_raw(
2409        this: *mut Self,
2410        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2411    ) {
2412        unsafe {
2413            let val: u8 = ::std::mem::transmute(val);
2414            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2415                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2416                0usize,
2417                1u8,
2418                val as u64,
2419            )
2420        }
2421    }
2422
2423    #[inline]
2424    pub fn _disctsV0(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2425        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
2426    }
2427
2428    #[inline]
2429    pub fn set__disctsV0(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize) {
2430        unsafe {
2431            let val: u8 = ::std::mem::transmute(val);
2432            self._bitfield_1.set(1usize, 1u8, val as u64)
2433        }
2434    }
2435
2436    #[inline]
2437    pub unsafe fn _disctsV0_raw(
2438        this: *const Self,
2439    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2440        unsafe {
2441            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2442                ::std::ptr::addr_of!((*this)._bitfield_1),
2443                1usize,
2444                1u8,
2445            ) as u8)
2446        }
2447    }
2448
2449    #[inline]
2450    pub unsafe fn set__disctsV0_raw(
2451        this: *mut Self,
2452        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2453    ) {
2454        unsafe {
2455            let val: u8 = ::std::mem::transmute(val);
2456            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2457                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2458                1usize,
2459                1u8,
2460                val as u64,
2461            )
2462        }
2463    }
2464
2465    #[inline]
2466    pub fn _disctsV1(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2467        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
2468    }
2469
2470    #[inline]
2471    pub fn set__disctsV1(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize) {
2472        unsafe {
2473            let val: u8 = ::std::mem::transmute(val);
2474            self._bitfield_1.set(2usize, 1u8, val as u64)
2475        }
2476    }
2477
2478    #[inline]
2479    pub unsafe fn _disctsV1_raw(
2480        this: *const Self,
2481    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2482        unsafe {
2483            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2484                ::std::ptr::addr_of!((*this)._bitfield_1),
2485                2usize,
2486                1u8,
2487            ) as u8)
2488        }
2489    }
2490
2491    #[inline]
2492    pub unsafe fn set__disctsV1_raw(
2493        this: *mut Self,
2494        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2495    ) {
2496        unsafe {
2497            let val: u8 = ::std::mem::transmute(val);
2498            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2499                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2500                2usize,
2501                1u8,
2502                val as u64,
2503            )
2504        }
2505    }
2506
2507    #[inline]
2508    pub fn _linear(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2509        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
2510    }
2511
2512    #[inline]
2513    pub fn set__linear(&mut self, val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize) {
2514        unsafe {
2515            let val: u8 = ::std::mem::transmute(val);
2516            self._bitfield_1.set(3usize, 1u8, val as u64)
2517        }
2518    }
2519
2520    #[inline]
2521    pub unsafe fn _linear_raw(
2522        this: *const Self,
2523    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize {
2524        unsafe {
2525            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2526                ::std::ptr::addr_of!((*this)._bitfield_1),
2527                3usize,
2528                1u8,
2529            ) as u8)
2530        }
2531    }
2532
2533    #[inline]
2534    pub unsafe fn set__linear_raw(
2535        this: *mut Self,
2536        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2537    ) {
2538        unsafe {
2539            let val: u8 = ::std::mem::transmute(val);
2540            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2541                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2542                3usize,
2543                1u8,
2544                val as u64,
2545            )
2546        }
2547    }
2548
2549    #[inline]
2550    pub fn new_bitfield_1(
2551        _mismatch: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2552        _disctsV0: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2553        _disctsV1: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2554        _linear: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ETag_ETagSize,
2555    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
2556        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
2557        __bindgen_bitfield_unit.set(0usize, 1u8, {
2558            let _mismatch: u8 = unsafe { ::std::mem::transmute(_mismatch) };
2559            _mismatch as u64
2560        });
2561        __bindgen_bitfield_unit.set(1usize, 1u8, {
2562            let _disctsV0: u8 = unsafe { ::std::mem::transmute(_disctsV0) };
2563            _disctsV0 as u64
2564        });
2565        __bindgen_bitfield_unit.set(2usize, 1u8, {
2566            let _disctsV1: u8 = unsafe { ::std::mem::transmute(_disctsV1) };
2567            _disctsV1 as u64
2568        });
2569        __bindgen_bitfield_unit.set(3usize, 1u8, {
2570            let _linear: u8 = unsafe { ::std::mem::transmute(_linear) };
2571            _linear as u64
2572        });
2573        __bindgen_bitfield_unit
2574    }
2575}
2576#[repr(C)]
2577#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
2578pub struct OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag {
2579    pub _bitfield_align_1: [u8; 0],
2580    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
2581}
2582pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize = ::std::os::raw::c_uchar;
2583impl OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag {
2584    #[inline]
2585    pub fn _mismatch(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2586        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
2587    }
2588
2589    #[inline]
2590    pub fn set__mismatch(
2591        &mut self,
2592        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2593    ) {
2594        unsafe {
2595            let val: u8 = ::std::mem::transmute(val);
2596            self._bitfield_1.set(0usize, 1u8, val as u64)
2597        }
2598    }
2599
2600    #[inline]
2601    pub unsafe fn _mismatch_raw(
2602        this: *const Self,
2603    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2604        unsafe {
2605            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2606                ::std::ptr::addr_of!((*this)._bitfield_1),
2607                0usize,
2608                1u8,
2609            ) as u8)
2610        }
2611    }
2612
2613    #[inline]
2614    pub unsafe fn set__mismatch_raw(
2615        this: *mut Self,
2616        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2617    ) {
2618        unsafe {
2619            let val: u8 = ::std::mem::transmute(val);
2620            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2621                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2622                0usize,
2623                1u8,
2624                val as u64,
2625            )
2626        }
2627    }
2628
2629    #[inline]
2630    pub fn _xordinary(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2631        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
2632    }
2633
2634    #[inline]
2635    pub fn set__xordinary(
2636        &mut self,
2637        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2638    ) {
2639        unsafe {
2640            let val: u8 = ::std::mem::transmute(val);
2641            self._bitfield_1.set(1usize, 1u8, val as u64)
2642        }
2643    }
2644
2645    #[inline]
2646    pub unsafe fn _xordinary_raw(
2647        this: *const Self,
2648    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2649        unsafe {
2650            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2651                ::std::ptr::addr_of!((*this)._bitfield_1),
2652                1usize,
2653                1u8,
2654            ) as u8)
2655        }
2656    }
2657
2658    #[inline]
2659    pub unsafe fn set__xordinary_raw(
2660        this: *mut Self,
2661        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2662    ) {
2663        unsafe {
2664            let val: u8 = ::std::mem::transmute(val);
2665            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2666                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2667                1usize,
2668                1u8,
2669                val as u64,
2670            )
2671        }
2672    }
2673
2674    #[inline]
2675    pub fn _nonManifold(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2676        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
2677    }
2678
2679    #[inline]
2680    pub fn set__nonManifold(
2681        &mut self,
2682        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2683    ) {
2684        unsafe {
2685            let val: u8 = ::std::mem::transmute(val);
2686            self._bitfield_1.set(2usize, 1u8, val as u64)
2687        }
2688    }
2689
2690    #[inline]
2691    pub unsafe fn _nonManifold_raw(
2692        this: *const Self,
2693    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2694        unsafe {
2695            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2696                ::std::ptr::addr_of!((*this)._bitfield_1),
2697                2usize,
2698                1u8,
2699            ) as u8)
2700        }
2701    }
2702
2703    #[inline]
2704    pub unsafe fn set__nonManifold_raw(
2705        this: *mut Self,
2706        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2707    ) {
2708        unsafe {
2709            let val: u8 = ::std::mem::transmute(val);
2710            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2711                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2712                2usize,
2713                1u8,
2714                val as u64,
2715            )
2716        }
2717    }
2718
2719    #[inline]
2720    pub fn _crease(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2721        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
2722    }
2723
2724    #[inline]
2725    pub fn set__crease(
2726        &mut self,
2727        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2728    ) {
2729        unsafe {
2730            let val: u8 = ::std::mem::transmute(val);
2731            self._bitfield_1.set(3usize, 1u8, val as u64)
2732        }
2733    }
2734
2735    #[inline]
2736    pub unsafe fn _crease_raw(
2737        this: *const Self,
2738    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2739        unsafe {
2740            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2741                ::std::ptr::addr_of!((*this)._bitfield_1),
2742                3usize,
2743                1u8,
2744            ) as u8)
2745        }
2746    }
2747
2748    #[inline]
2749    pub unsafe fn set__crease_raw(
2750        this: *mut Self,
2751        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2752    ) {
2753        unsafe {
2754            let val: u8 = ::std::mem::transmute(val);
2755            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2756                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2757                3usize,
2758                1u8,
2759                val as u64,
2760            )
2761        }
2762    }
2763
2764    #[inline]
2765    pub fn _semiSharp(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2766        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) }
2767    }
2768
2769    #[inline]
2770    pub fn set__semiSharp(
2771        &mut self,
2772        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2773    ) {
2774        unsafe {
2775            let val: u8 = ::std::mem::transmute(val);
2776            self._bitfield_1.set(4usize, 1u8, val as u64)
2777        }
2778    }
2779
2780    #[inline]
2781    pub unsafe fn _semiSharp_raw(
2782        this: *const Self,
2783    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2784        unsafe {
2785            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2786                ::std::ptr::addr_of!((*this)._bitfield_1),
2787                4usize,
2788                1u8,
2789            ) as u8)
2790        }
2791    }
2792
2793    #[inline]
2794    pub unsafe fn set__semiSharp_raw(
2795        this: *mut Self,
2796        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2797    ) {
2798        unsafe {
2799            let val: u8 = ::std::mem::transmute(val);
2800            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2801                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2802                4usize,
2803                1u8,
2804                val as u64,
2805            )
2806        }
2807    }
2808
2809    #[inline]
2810    pub fn _depSharp(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2811        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) }
2812    }
2813
2814    #[inline]
2815    pub fn set__depSharp(
2816        &mut self,
2817        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2818    ) {
2819        unsafe {
2820            let val: u8 = ::std::mem::transmute(val);
2821            self._bitfield_1.set(5usize, 1u8, val as u64)
2822        }
2823    }
2824
2825    #[inline]
2826    pub unsafe fn _depSharp_raw(
2827        this: *const Self,
2828    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2829        unsafe {
2830            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2831                ::std::ptr::addr_of!((*this)._bitfield_1),
2832                5usize,
2833                1u8,
2834            ) as u8)
2835        }
2836    }
2837
2838    #[inline]
2839    pub unsafe fn set__depSharp_raw(
2840        this: *mut Self,
2841        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2842    ) {
2843        unsafe {
2844            let val: u8 = ::std::mem::transmute(val);
2845            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2846                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2847                5usize,
2848                1u8,
2849                val as u64,
2850            )
2851        }
2852    }
2853
2854    #[inline]
2855    pub fn _infSharpEdges(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2856        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) }
2857    }
2858
2859    #[inline]
2860    pub fn set__infSharpEdges(
2861        &mut self,
2862        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2863    ) {
2864        unsafe {
2865            let val: u8 = ::std::mem::transmute(val);
2866            self._bitfield_1.set(6usize, 1u8, val as u64)
2867        }
2868    }
2869
2870    #[inline]
2871    pub unsafe fn _infSharpEdges_raw(
2872        this: *const Self,
2873    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2874        unsafe {
2875            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2876                ::std::ptr::addr_of!((*this)._bitfield_1),
2877                6usize,
2878                1u8,
2879            ) as u8)
2880        }
2881    }
2882
2883    #[inline]
2884    pub unsafe fn set__infSharpEdges_raw(
2885        this: *mut Self,
2886        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2887    ) {
2888        unsafe {
2889            let val: u8 = ::std::mem::transmute(val);
2890            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2891                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2892                6usize,
2893                1u8,
2894                val as u64,
2895            )
2896        }
2897    }
2898
2899    #[inline]
2900    pub fn _infIrregular(&self) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2901        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) }
2902    }
2903
2904    #[inline]
2905    pub fn set__infIrregular(
2906        &mut self,
2907        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2908    ) {
2909        unsafe {
2910            let val: u8 = ::std::mem::transmute(val);
2911            self._bitfield_1.set(7usize, 1u8, val as u64)
2912        }
2913    }
2914
2915    #[inline]
2916    pub unsafe fn _infIrregular_raw(
2917        this: *const Self,
2918    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize {
2919        unsafe {
2920            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
2921                ::std::ptr::addr_of!((*this)._bitfield_1),
2922                7usize,
2923                1u8,
2924            ) as u8)
2925        }
2926    }
2927
2928    #[inline]
2929    pub unsafe fn set__infIrregular_raw(
2930        this: *mut Self,
2931        val: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2932    ) {
2933        unsafe {
2934            let val: u8 = ::std::mem::transmute(val);
2935            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
2936                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
2937                7usize,
2938                1u8,
2939                val as u64,
2940            )
2941        }
2942    }
2943
2944    #[inline]
2945    pub fn new_bitfield_1(
2946        _mismatch: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2947        _xordinary: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2948        _nonManifold: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2949        _crease: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2950        _semiSharp: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2951        _depSharp: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2952        _infSharpEdges: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2953        _infIrregular: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag_ValueTagSize,
2954    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
2955        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
2956        __bindgen_bitfield_unit.set(0usize, 1u8, {
2957            let _mismatch: u8 = unsafe { ::std::mem::transmute(_mismatch) };
2958            _mismatch as u64
2959        });
2960        __bindgen_bitfield_unit.set(1usize, 1u8, {
2961            let _xordinary: u8 = unsafe { ::std::mem::transmute(_xordinary) };
2962            _xordinary as u64
2963        });
2964        __bindgen_bitfield_unit.set(2usize, 1u8, {
2965            let _nonManifold: u8 = unsafe { ::std::mem::transmute(_nonManifold) };
2966            _nonManifold as u64
2967        });
2968        __bindgen_bitfield_unit.set(3usize, 1u8, {
2969            let _crease: u8 = unsafe { ::std::mem::transmute(_crease) };
2970            _crease as u64
2971        });
2972        __bindgen_bitfield_unit.set(4usize, 1u8, {
2973            let _semiSharp: u8 = unsafe { ::std::mem::transmute(_semiSharp) };
2974            _semiSharp as u64
2975        });
2976        __bindgen_bitfield_unit.set(5usize, 1u8, {
2977            let _depSharp: u8 = unsafe { ::std::mem::transmute(_depSharp) };
2978            _depSharp as u64
2979        });
2980        __bindgen_bitfield_unit.set(6usize, 1u8, {
2981            let _infSharpEdges: u8 = unsafe { ::std::mem::transmute(_infSharpEdges) };
2982            _infSharpEdges as u64
2983        });
2984        __bindgen_bitfield_unit.set(7usize, 1u8, {
2985            let _infIrregular: u8 = unsafe { ::std::mem::transmute(_infIrregular) };
2986            _infIrregular as u64
2987        });
2988        __bindgen_bitfield_unit
2989    }
2990}
2991pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ConstValueTagArray =
2992    OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag>;
2993pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTagArray =
2994    OpenSubdiv_v3_7_0_Vtr_Array<OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag>;
2995#[repr(C)]
2996#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
2997pub struct OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_CreaseEndPair {
2998    pub _startFace: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
2999    pub _endFace: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
3000}
3001pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ConstCreaseEndPairArray =
3002    OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_CreaseEndPair>;
3003pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_CreaseEndPairArray =
3004    OpenSubdiv_v3_7_0_Vtr_Array<OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_CreaseEndPair>;
3005pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_Sibling = OpenSubdiv_v3_7_0_Vtr_LocalIndex;
3006pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ConstSiblingArray =
3007    OpenSubdiv_v3_7_0_Vtr_ConstLocalIndexArray;
3008pub type OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_SiblingArray =
3009    OpenSubdiv_v3_7_0_Vtr_LocalIndexArray;
3010#[repr(C)]
3011#[derive(Debug, Copy, Clone)]
3012pub struct OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueSpan {
3013    _unused: [u8; 0],
3014}
3015unsafe extern "C" {
3016    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel16getFaceValueTagsEiPNS3_8ValueTagE"]
3017    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getFaceValueTags(
3018        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3019        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3020        valueTags: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag,
3021    );
3022}
3023unsafe extern "C" {
3024    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel24getFaceCompositeValueTagEi"]
3025    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getFaceCompositeValueTag(
3026        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3027        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3028    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag;
3029}
3030unsafe extern "C" {
3031    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel17getEdgeFaceValuesEiiPi"]
3032    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getEdgeFaceValues(
3033        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3034        eIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3035        fIncToEdge: ::std::os::raw::c_int,
3036        valuesPerVert: *mut OpenSubdiv_v3_7_0_Vtr_Index,
3037    );
3038}
3039unsafe extern "C" {
3040    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel19getVertexEdgeValuesEiPi"]
3041    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getVertexEdgeValues(
3042        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3043        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3044        valuesPerEdge: *mut OpenSubdiv_v3_7_0_Vtr_Index,
3045    );
3046}
3047unsafe extern "C" {
3048    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel24getVertexCreaseEndValuesEitPi"]
3049    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getVertexCreaseEndValues(
3050        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3051        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3052        sibling: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_Sibling,
3053        endValues: *mut OpenSubdiv_v3_7_0_Vtr_Index,
3054    );
3055}
3056unsafe extern "C" {
3057    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel10setOptionsERKNS0_3Sdc7OptionsE"]
3058    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_setOptions(
3059        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3060        options: *const OpenSubdiv_v3_7_0_Sdc_Options,
3061    );
3062}
3063unsafe extern "C" {
3064    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel18resizeVertexValuesEi"]
3065    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_resizeVertexValues(
3066        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3067        numVertexValues: ::std::os::raw::c_int,
3068    );
3069}
3070unsafe extern "C" {
3071    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel12resizeValuesEi"]
3072    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_resizeValues(
3073        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3074        numValues: ::std::os::raw::c_int,
3075    );
3076}
3077unsafe extern "C" {
3078    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel16resizeComponentsEv"]
3079    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_resizeComponents(
3080        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3081    );
3082}
3083unsafe extern "C" {
3084    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel30completeTopologyFromFaceValuesEi"]
3085    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_completeTopologyFromFaceValues(
3086        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3087        regBoundaryValence: ::std::os::raw::c_int,
3088    );
3089}
3090unsafe extern "C" {
3091    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel36initializeFaceValuesFromFaceVerticesEv"]
3092    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_initializeFaceValuesFromFaceVertices(
3093        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3094    );
3095}
3096unsafe extern "C" {
3097    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel42initializeFaceValuesFromVertexFaceSiblingsEv"]
3098    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_initializeFaceValuesFromVertexFaceSiblings(
3099        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3100    );
3101}
3102unsafe extern "C" {
3103    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel16gatherValueSpansEiPNS3_9ValueSpanE"]
3104    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_gatherValueSpans(
3105        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3106        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3107        vValueSpans: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueSpan,
3108    );
3109}
3110unsafe extern "C" {
3111    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel8validateEv"]
3112    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_validate(
3113        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3114    ) -> bool;
3115}
3116unsafe extern "C" {
3117    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel5printEv"]
3118    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_print(
3119        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3120    );
3121}
3122unsafe extern "C" {
3123    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal9FVarLevel45buildFaceVertexSiblingsFromVertexFaceSiblingsERSt6vectorItSaItEE"]
3124    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_buildFaceVertexSiblingsFromVertexFaceSiblings(
3125        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3126        fvSiblings: *mut __BindgenOpaqueArray<u64, 3usize>,
3127    );
3128}
3129unsafe extern "C" {
3130    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevelC1ERKNS2_5LevelE"]
3131    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_FVarLevel(
3132        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3133        level: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
3134    );
3135}
3136unsafe extern "C" {
3137    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal9FVarLevelD1Ev"]
3138    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_FVarLevel_destructor(
3139        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
3140    );
3141}
3142impl OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel {
3143    #[inline]
3144    pub unsafe fn getFaceValueTags(
3145        &self,
3146        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3147        valueTags: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag,
3148    ) {
3149        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getFaceValueTags(self, faceIndex, valueTags)
3150    }
3151
3152    #[inline]
3153    pub unsafe fn getFaceCompositeValueTag(
3154        &self,
3155        faceIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3156    ) -> OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueTag {
3157        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getFaceCompositeValueTag(self, faceIndex)
3158    }
3159
3160    #[inline]
3161    pub unsafe fn getEdgeFaceValues(
3162        &self,
3163        eIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3164        fIncToEdge: ::std::os::raw::c_int,
3165        valuesPerVert: *mut OpenSubdiv_v3_7_0_Vtr_Index,
3166    ) {
3167        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getEdgeFaceValues(
3168            self,
3169            eIndex,
3170            fIncToEdge,
3171            valuesPerVert,
3172        )
3173    }
3174
3175    #[inline]
3176    pub unsafe fn getVertexEdgeValues(
3177        &self,
3178        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3179        valuesPerEdge: *mut OpenSubdiv_v3_7_0_Vtr_Index,
3180    ) {
3181        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getVertexEdgeValues(self, vIndex, valuesPerEdge)
3182    }
3183
3184    #[inline]
3185    pub unsafe fn getVertexCreaseEndValues(
3186        &self,
3187        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3188        sibling: OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_Sibling,
3189        endValues: *mut OpenSubdiv_v3_7_0_Vtr_Index,
3190    ) {
3191        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_getVertexCreaseEndValues(
3192            self, vIndex, sibling, endValues,
3193        )
3194    }
3195
3196    #[inline]
3197    pub unsafe fn setOptions(&mut self, options: *const OpenSubdiv_v3_7_0_Sdc_Options) {
3198        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_setOptions(self, options)
3199    }
3200
3201    #[inline]
3202    pub unsafe fn resizeVertexValues(&mut self, numVertexValues: ::std::os::raw::c_int) {
3203        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_resizeVertexValues(self, numVertexValues)
3204    }
3205
3206    #[inline]
3207    pub unsafe fn resizeValues(&mut self, numValues: ::std::os::raw::c_int) {
3208        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_resizeValues(self, numValues)
3209    }
3210
3211    #[inline]
3212    pub unsafe fn resizeComponents(&mut self) {
3213        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_resizeComponents(self)
3214    }
3215
3216    #[inline]
3217    pub unsafe fn completeTopologyFromFaceValues(
3218        &mut self,
3219        regBoundaryValence: ::std::os::raw::c_int,
3220    ) {
3221        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_completeTopologyFromFaceValues(
3222            self,
3223            regBoundaryValence,
3224        )
3225    }
3226
3227    #[inline]
3228    pub unsafe fn initializeFaceValuesFromFaceVertices(&mut self) {
3229        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_initializeFaceValuesFromFaceVertices(self)
3230    }
3231
3232    #[inline]
3233    pub unsafe fn initializeFaceValuesFromVertexFaceSiblings(&mut self) {
3234        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_initializeFaceValuesFromVertexFaceSiblings(self)
3235    }
3236
3237    #[inline]
3238    pub unsafe fn gatherValueSpans(
3239        &self,
3240        vIndex: OpenSubdiv_v3_7_0_Vtr_Index,
3241        vValueSpans: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_ValueSpan,
3242    ) {
3243        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_gatherValueSpans(self, vIndex, vValueSpans)
3244    }
3245
3246    #[inline]
3247    pub unsafe fn validate(&self) -> bool {
3248        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_validate(self)
3249    }
3250
3251    #[inline]
3252    pub unsafe fn print(&self) {
3253        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_print(self)
3254    }
3255
3256    #[inline]
3257    pub unsafe fn buildFaceVertexSiblingsFromVertexFaceSiblings(
3258        &self,
3259        fvSiblings: *mut __BindgenOpaqueArray<u64, 3usize>,
3260    ) {
3261        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_buildFaceVertexSiblingsFromVertexFaceSiblings(
3262            self, fvSiblings,
3263        )
3264    }
3265
3266    #[inline]
3267    pub unsafe fn new(level: *const OpenSubdiv_v3_7_0_Vtr_internal_Level) -> Self {
3268        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
3269        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_FVarLevel(__bindgen_tmp.as_mut_ptr(), level);
3270        __bindgen_tmp.assume_init()
3271    }
3272
3273    #[inline]
3274    pub unsafe fn destruct(&mut self) {
3275        OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel_FVarLevel_destructor(self)
3276    }
3277}
3278#[repr(C)]
3279pub struct OpenSubdiv_v3_7_0_Vtr_internal_Refinement__bindgen_vtable(::std::os::raw::c_void);
3280#[repr(C)]
3281pub struct OpenSubdiv_v3_7_0_Vtr_internal_Refinement {
3282    pub vtable_: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement__bindgen_vtable,
3283    pub _parent: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
3284    pub _child: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
3285    pub _options: OpenSubdiv_v3_7_0_Sdc_Options,
3286    pub _splitType: OpenSubdiv_v3_7_0_Sdc_Split,
3287    pub _regFaceSize: ::std::os::raw::c_int,
3288    pub _uniform: bool,
3289    pub _faceVertsFirst: bool,
3290    pub _childFaceFromFaceCount: ::std::os::raw::c_int,
3291    pub _childEdgeFromFaceCount: ::std::os::raw::c_int,
3292    pub _childEdgeFromEdgeCount: ::std::os::raw::c_int,
3293    pub _childVertFromFaceCount: ::std::os::raw::c_int,
3294    pub _childVertFromEdgeCount: ::std::os::raw::c_int,
3295    pub _childVertFromVertCount: ::std::os::raw::c_int,
3296    pub _firstChildFaceFromFace: ::std::os::raw::c_int,
3297    pub _firstChildEdgeFromFace: ::std::os::raw::c_int,
3298    pub _firstChildEdgeFromEdge: ::std::os::raw::c_int,
3299    pub _firstChildVertFromFace: ::std::os::raw::c_int,
3300    pub _firstChildVertFromEdge: ::std::os::raw::c_int,
3301    pub _firstChildVertFromVert: ::std::os::raw::c_int,
3302    pub _faceChildFaceCountsAndOffsets: OpenSubdiv_v3_7_0_Vtr_IndexArray,
3303    pub _faceChildEdgeCountsAndOffsets: OpenSubdiv_v3_7_0_Vtr_IndexArray,
3304    pub _faceChildFaceIndices: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3305    pub _faceChildEdgeIndices: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3306    pub _faceChildVertIndex: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3307    pub _edgeChildEdgeIndices: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3308    pub _edgeChildVertIndex: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3309    pub _vertChildVertIndex: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3310    pub _childFaceParentIndex: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3311    pub _childEdgeParentIndex: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3312    pub _childVertexParentIndex: OpenSubdiv_v3_7_0_Vtr_IndexVector,
3313    pub _childFaceTag: __BindgenOpaqueArray<u64, 3usize>,
3314    pub _childEdgeTag: __BindgenOpaqueArray<u64, 3usize>,
3315    pub _childVertexTag: __BindgenOpaqueArray<u64, 3usize>,
3316    pub _parentFaceTag: __BindgenOpaqueArray<u64, 3usize>,
3317    pub _parentEdgeTag: __BindgenOpaqueArray<u64, 3usize>,
3318    pub _parentVertexTag: __BindgenOpaqueArray<u64, 3usize>,
3319    pub _fvarChannels: __BindgenOpaqueArray<u64, 3usize>,
3320}
3321#[repr(C)]
3322#[repr(align(4))]
3323#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3324pub struct OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Options {
3325    pub _bitfield_align_1: [u8; 0],
3326    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
3327    pub __bindgen_padding_0: [u8; 3usize],
3328}
3329impl OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Options {
3330    #[inline]
3331    pub fn _sparse(&self) -> ::std::os::raw::c_uint {
3332        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
3333    }
3334
3335    #[inline]
3336    pub fn set__sparse(&mut self, val: ::std::os::raw::c_uint) {
3337        unsafe {
3338            let val: u32 = ::std::mem::transmute(val);
3339            self._bitfield_1.set(0usize, 1u8, val as u64)
3340        }
3341    }
3342
3343    #[inline]
3344    pub unsafe fn _sparse_raw(this: *const Self) -> ::std::os::raw::c_uint {
3345        unsafe {
3346            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3347                ::std::ptr::addr_of!((*this)._bitfield_1),
3348                0usize,
3349                1u8,
3350            ) as u32)
3351        }
3352    }
3353
3354    #[inline]
3355    pub unsafe fn set__sparse_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3356        unsafe {
3357            let val: u32 = ::std::mem::transmute(val);
3358            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3359                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3360                0usize,
3361                1u8,
3362                val as u64,
3363            )
3364        }
3365    }
3366
3367    #[inline]
3368    pub fn _faceVertsFirst(&self) -> ::std::os::raw::c_uint {
3369        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
3370    }
3371
3372    #[inline]
3373    pub fn set__faceVertsFirst(&mut self, val: ::std::os::raw::c_uint) {
3374        unsafe {
3375            let val: u32 = ::std::mem::transmute(val);
3376            self._bitfield_1.set(1usize, 1u8, val as u64)
3377        }
3378    }
3379
3380    #[inline]
3381    pub unsafe fn _faceVertsFirst_raw(this: *const Self) -> ::std::os::raw::c_uint {
3382        unsafe {
3383            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3384                ::std::ptr::addr_of!((*this)._bitfield_1),
3385                1usize,
3386                1u8,
3387            ) as u32)
3388        }
3389    }
3390
3391    #[inline]
3392    pub unsafe fn set__faceVertsFirst_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3393        unsafe {
3394            let val: u32 = ::std::mem::transmute(val);
3395            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3396                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3397                1usize,
3398                1u8,
3399                val as u64,
3400            )
3401        }
3402    }
3403
3404    #[inline]
3405    pub fn _minimalTopology(&self) -> ::std::os::raw::c_uint {
3406        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
3407    }
3408
3409    #[inline]
3410    pub fn set__minimalTopology(&mut self, val: ::std::os::raw::c_uint) {
3411        unsafe {
3412            let val: u32 = ::std::mem::transmute(val);
3413            self._bitfield_1.set(2usize, 1u8, val as u64)
3414        }
3415    }
3416
3417    #[inline]
3418    pub unsafe fn _minimalTopology_raw(this: *const Self) -> ::std::os::raw::c_uint {
3419        unsafe {
3420            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3421                ::std::ptr::addr_of!((*this)._bitfield_1),
3422                2usize,
3423                1u8,
3424            ) as u32)
3425        }
3426    }
3427
3428    #[inline]
3429    pub unsafe fn set__minimalTopology_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3430        unsafe {
3431            let val: u32 = ::std::mem::transmute(val);
3432            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3433                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3434                2usize,
3435                1u8,
3436                val as u64,
3437            )
3438        }
3439    }
3440
3441    #[inline]
3442    pub fn new_bitfield_1(
3443        _sparse: ::std::os::raw::c_uint,
3444        _faceVertsFirst: ::std::os::raw::c_uint,
3445        _minimalTopology: ::std::os::raw::c_uint,
3446    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
3447        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
3448        __bindgen_bitfield_unit.set(0usize, 1u8, {
3449            let _sparse: u32 = unsafe { ::std::mem::transmute(_sparse) };
3450            _sparse as u64
3451        });
3452        __bindgen_bitfield_unit.set(1usize, 1u8, {
3453            let _faceVertsFirst: u32 = unsafe { ::std::mem::transmute(_faceVertsFirst) };
3454            _faceVertsFirst as u64
3455        });
3456        __bindgen_bitfield_unit.set(2usize, 1u8, {
3457            let _minimalTopology: u32 = unsafe { ::std::mem::transmute(_minimalTopology) };
3458            _minimalTopology as u64
3459        });
3460        __bindgen_bitfield_unit
3461    }
3462}
3463#[repr(C)]
3464#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3465pub struct OpenSubdiv_v3_7_0_Vtr_internal_Refinement_SparseTag {
3466    pub _bitfield_align_1: [u8; 0],
3467    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
3468}
3469impl OpenSubdiv_v3_7_0_Vtr_internal_Refinement_SparseTag {
3470    #[inline]
3471    pub fn _selected(&self) -> ::std::os::raw::c_uchar {
3472        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
3473    }
3474
3475    #[inline]
3476    pub fn set__selected(&mut self, val: ::std::os::raw::c_uchar) {
3477        unsafe {
3478            let val: u8 = ::std::mem::transmute(val);
3479            self._bitfield_1.set(0usize, 1u8, val as u64)
3480        }
3481    }
3482
3483    #[inline]
3484    pub unsafe fn _selected_raw(this: *const Self) -> ::std::os::raw::c_uchar {
3485        unsafe {
3486            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3487                ::std::ptr::addr_of!((*this)._bitfield_1),
3488                0usize,
3489                1u8,
3490            ) as u8)
3491        }
3492    }
3493
3494    #[inline]
3495    pub unsafe fn set__selected_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
3496        unsafe {
3497            let val: u8 = ::std::mem::transmute(val);
3498            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3499                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3500                0usize,
3501                1u8,
3502                val as u64,
3503            )
3504        }
3505    }
3506
3507    #[inline]
3508    pub fn _transitional(&self) -> ::std::os::raw::c_uchar {
3509        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 4u8) as u8) }
3510    }
3511
3512    #[inline]
3513    pub fn set__transitional(&mut self, val: ::std::os::raw::c_uchar) {
3514        unsafe {
3515            let val: u8 = ::std::mem::transmute(val);
3516            self._bitfield_1.set(1usize, 4u8, val as u64)
3517        }
3518    }
3519
3520    #[inline]
3521    pub unsafe fn _transitional_raw(this: *const Self) -> ::std::os::raw::c_uchar {
3522        unsafe {
3523            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3524                ::std::ptr::addr_of!((*this)._bitfield_1),
3525                1usize,
3526                4u8,
3527            ) as u8)
3528        }
3529    }
3530
3531    #[inline]
3532    pub unsafe fn set__transitional_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
3533        unsafe {
3534            let val: u8 = ::std::mem::transmute(val);
3535            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3536                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3537                1usize,
3538                4u8,
3539                val as u64,
3540            )
3541        }
3542    }
3543
3544    #[inline]
3545    pub fn new_bitfield_1(
3546        _selected: ::std::os::raw::c_uchar,
3547        _transitional: ::std::os::raw::c_uchar,
3548    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
3549        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
3550        __bindgen_bitfield_unit.set(0usize, 1u8, {
3551            let _selected: u8 = unsafe { ::std::mem::transmute(_selected) };
3552            _selected as u64
3553        });
3554        __bindgen_bitfield_unit.set(1usize, 4u8, {
3555            let _transitional: u8 = unsafe { ::std::mem::transmute(_transitional) };
3556            _transitional as u64
3557        });
3558        __bindgen_bitfield_unit
3559    }
3560}
3561#[repr(C)]
3562#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3563pub struct OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag {
3564    pub _bitfield_align_1: [u8; 0],
3565    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
3566}
3567impl OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag {
3568    #[inline]
3569    pub fn _incomplete(&self) -> ::std::os::raw::c_uchar {
3570        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
3571    }
3572
3573    #[inline]
3574    pub fn set__incomplete(&mut self, val: ::std::os::raw::c_uchar) {
3575        unsafe {
3576            let val: u8 = ::std::mem::transmute(val);
3577            self._bitfield_1.set(0usize, 1u8, val as u64)
3578        }
3579    }
3580
3581    #[inline]
3582    pub unsafe fn _incomplete_raw(this: *const Self) -> ::std::os::raw::c_uchar {
3583        unsafe {
3584            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3585                ::std::ptr::addr_of!((*this)._bitfield_1),
3586                0usize,
3587                1u8,
3588            ) as u8)
3589        }
3590    }
3591
3592    #[inline]
3593    pub unsafe fn set__incomplete_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
3594        unsafe {
3595            let val: u8 = ::std::mem::transmute(val);
3596            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3597                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3598                0usize,
3599                1u8,
3600                val as u64,
3601            )
3602        }
3603    }
3604
3605    #[inline]
3606    pub fn _parentType(&self) -> ::std::os::raw::c_uchar {
3607        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u8) }
3608    }
3609
3610    #[inline]
3611    pub fn set__parentType(&mut self, val: ::std::os::raw::c_uchar) {
3612        unsafe {
3613            let val: u8 = ::std::mem::transmute(val);
3614            self._bitfield_1.set(1usize, 2u8, val as u64)
3615        }
3616    }
3617
3618    #[inline]
3619    pub unsafe fn _parentType_raw(this: *const Self) -> ::std::os::raw::c_uchar {
3620        unsafe {
3621            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3622                ::std::ptr::addr_of!((*this)._bitfield_1),
3623                1usize,
3624                2u8,
3625            ) as u8)
3626        }
3627    }
3628
3629    #[inline]
3630    pub unsafe fn set__parentType_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
3631        unsafe {
3632            let val: u8 = ::std::mem::transmute(val);
3633            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3634                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3635                1usize,
3636                2u8,
3637                val as u64,
3638            )
3639        }
3640    }
3641
3642    #[inline]
3643    pub fn _indexInParent(&self) -> ::std::os::raw::c_uchar {
3644        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 2u8) as u8) }
3645    }
3646
3647    #[inline]
3648    pub fn set__indexInParent(&mut self, val: ::std::os::raw::c_uchar) {
3649        unsafe {
3650            let val: u8 = ::std::mem::transmute(val);
3651            self._bitfield_1.set(3usize, 2u8, val as u64)
3652        }
3653    }
3654
3655    #[inline]
3656    pub unsafe fn _indexInParent_raw(this: *const Self) -> ::std::os::raw::c_uchar {
3657        unsafe {
3658            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3659                ::std::ptr::addr_of!((*this)._bitfield_1),
3660                3usize,
3661                2u8,
3662            ) as u8)
3663        }
3664    }
3665
3666    #[inline]
3667    pub unsafe fn set__indexInParent_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
3668        unsafe {
3669            let val: u8 = ::std::mem::transmute(val);
3670            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3671                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3672                3usize,
3673                2u8,
3674                val as u64,
3675            )
3676        }
3677    }
3678
3679    #[inline]
3680    pub fn new_bitfield_1(
3681        _incomplete: ::std::os::raw::c_uchar,
3682        _parentType: ::std::os::raw::c_uchar,
3683        _indexInParent: ::std::os::raw::c_uchar,
3684    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
3685        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
3686        __bindgen_bitfield_unit.set(0usize, 1u8, {
3687            let _incomplete: u8 = unsafe { ::std::mem::transmute(_incomplete) };
3688            _incomplete as u64
3689        });
3690        __bindgen_bitfield_unit.set(1usize, 2u8, {
3691            let _parentType: u8 = unsafe { ::std::mem::transmute(_parentType) };
3692            _parentType as u64
3693        });
3694        __bindgen_bitfield_unit.set(3usize, 2u8, {
3695            let _indexInParent: u8 = unsafe { ::std::mem::transmute(_indexInParent) };
3696            _indexInParent as u64
3697        });
3698        __bindgen_bitfield_unit
3699    }
3700}
3701#[repr(C)]
3702#[repr(align(4))]
3703#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3704pub struct OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Relations {
3705    pub _bitfield_align_1: [u8; 0],
3706    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
3707    pub __bindgen_padding_0: [u8; 3usize],
3708}
3709impl OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Relations {
3710    #[inline]
3711    pub fn _faceVertices(&self) -> ::std::os::raw::c_uint {
3712        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
3713    }
3714
3715    #[inline]
3716    pub fn set__faceVertices(&mut self, val: ::std::os::raw::c_uint) {
3717        unsafe {
3718            let val: u32 = ::std::mem::transmute(val);
3719            self._bitfield_1.set(0usize, 1u8, val as u64)
3720        }
3721    }
3722
3723    #[inline]
3724    pub unsafe fn _faceVertices_raw(this: *const Self) -> ::std::os::raw::c_uint {
3725        unsafe {
3726            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3727                ::std::ptr::addr_of!((*this)._bitfield_1),
3728                0usize,
3729                1u8,
3730            ) as u32)
3731        }
3732    }
3733
3734    #[inline]
3735    pub unsafe fn set__faceVertices_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3736        unsafe {
3737            let val: u32 = ::std::mem::transmute(val);
3738            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3739                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3740                0usize,
3741                1u8,
3742                val as u64,
3743            )
3744        }
3745    }
3746
3747    #[inline]
3748    pub fn _faceEdges(&self) -> ::std::os::raw::c_uint {
3749        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
3750    }
3751
3752    #[inline]
3753    pub fn set__faceEdges(&mut self, val: ::std::os::raw::c_uint) {
3754        unsafe {
3755            let val: u32 = ::std::mem::transmute(val);
3756            self._bitfield_1.set(1usize, 1u8, val as u64)
3757        }
3758    }
3759
3760    #[inline]
3761    pub unsafe fn _faceEdges_raw(this: *const Self) -> ::std::os::raw::c_uint {
3762        unsafe {
3763            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3764                ::std::ptr::addr_of!((*this)._bitfield_1),
3765                1usize,
3766                1u8,
3767            ) as u32)
3768        }
3769    }
3770
3771    #[inline]
3772    pub unsafe fn set__faceEdges_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3773        unsafe {
3774            let val: u32 = ::std::mem::transmute(val);
3775            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3776                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3777                1usize,
3778                1u8,
3779                val as u64,
3780            )
3781        }
3782    }
3783
3784    #[inline]
3785    pub fn _edgeVertices(&self) -> ::std::os::raw::c_uint {
3786        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
3787    }
3788
3789    #[inline]
3790    pub fn set__edgeVertices(&mut self, val: ::std::os::raw::c_uint) {
3791        unsafe {
3792            let val: u32 = ::std::mem::transmute(val);
3793            self._bitfield_1.set(2usize, 1u8, val as u64)
3794        }
3795    }
3796
3797    #[inline]
3798    pub unsafe fn _edgeVertices_raw(this: *const Self) -> ::std::os::raw::c_uint {
3799        unsafe {
3800            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3801                ::std::ptr::addr_of!((*this)._bitfield_1),
3802                2usize,
3803                1u8,
3804            ) as u32)
3805        }
3806    }
3807
3808    #[inline]
3809    pub unsafe fn set__edgeVertices_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3810        unsafe {
3811            let val: u32 = ::std::mem::transmute(val);
3812            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3813                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3814                2usize,
3815                1u8,
3816                val as u64,
3817            )
3818        }
3819    }
3820
3821    #[inline]
3822    pub fn _edgeFaces(&self) -> ::std::os::raw::c_uint {
3823        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
3824    }
3825
3826    #[inline]
3827    pub fn set__edgeFaces(&mut self, val: ::std::os::raw::c_uint) {
3828        unsafe {
3829            let val: u32 = ::std::mem::transmute(val);
3830            self._bitfield_1.set(3usize, 1u8, val as u64)
3831        }
3832    }
3833
3834    #[inline]
3835    pub unsafe fn _edgeFaces_raw(this: *const Self) -> ::std::os::raw::c_uint {
3836        unsafe {
3837            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3838                ::std::ptr::addr_of!((*this)._bitfield_1),
3839                3usize,
3840                1u8,
3841            ) as u32)
3842        }
3843    }
3844
3845    #[inline]
3846    pub unsafe fn set__edgeFaces_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3847        unsafe {
3848            let val: u32 = ::std::mem::transmute(val);
3849            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3850                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3851                3usize,
3852                1u8,
3853                val as u64,
3854            )
3855        }
3856    }
3857
3858    #[inline]
3859    pub fn _vertexFaces(&self) -> ::std::os::raw::c_uint {
3860        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
3861    }
3862
3863    #[inline]
3864    pub fn set__vertexFaces(&mut self, val: ::std::os::raw::c_uint) {
3865        unsafe {
3866            let val: u32 = ::std::mem::transmute(val);
3867            self._bitfield_1.set(4usize, 1u8, val as u64)
3868        }
3869    }
3870
3871    #[inline]
3872    pub unsafe fn _vertexFaces_raw(this: *const Self) -> ::std::os::raw::c_uint {
3873        unsafe {
3874            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3875                ::std::ptr::addr_of!((*this)._bitfield_1),
3876                4usize,
3877                1u8,
3878            ) as u32)
3879        }
3880    }
3881
3882    #[inline]
3883    pub unsafe fn set__vertexFaces_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3884        unsafe {
3885            let val: u32 = ::std::mem::transmute(val);
3886            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3887                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3888                4usize,
3889                1u8,
3890                val as u64,
3891            )
3892        }
3893    }
3894
3895    #[inline]
3896    pub fn _vertexEdges(&self) -> ::std::os::raw::c_uint {
3897        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
3898    }
3899
3900    #[inline]
3901    pub fn set__vertexEdges(&mut self, val: ::std::os::raw::c_uint) {
3902        unsafe {
3903            let val: u32 = ::std::mem::transmute(val);
3904            self._bitfield_1.set(5usize, 1u8, val as u64)
3905        }
3906    }
3907
3908    #[inline]
3909    pub unsafe fn _vertexEdges_raw(this: *const Self) -> ::std::os::raw::c_uint {
3910        unsafe {
3911            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
3912                ::std::ptr::addr_of!((*this)._bitfield_1),
3913                5usize,
3914                1u8,
3915            ) as u32)
3916        }
3917    }
3918
3919    #[inline]
3920    pub unsafe fn set__vertexEdges_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
3921        unsafe {
3922            let val: u32 = ::std::mem::transmute(val);
3923            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
3924                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
3925                5usize,
3926                1u8,
3927                val as u64,
3928            )
3929        }
3930    }
3931
3932    #[inline]
3933    pub fn new_bitfield_1(
3934        _faceVertices: ::std::os::raw::c_uint,
3935        _faceEdges: ::std::os::raw::c_uint,
3936        _edgeVertices: ::std::os::raw::c_uint,
3937        _edgeFaces: ::std::os::raw::c_uint,
3938        _vertexFaces: ::std::os::raw::c_uint,
3939        _vertexEdges: ::std::os::raw::c_uint,
3940    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
3941        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
3942        __bindgen_bitfield_unit.set(0usize, 1u8, {
3943            let _faceVertices: u32 = unsafe { ::std::mem::transmute(_faceVertices) };
3944            _faceVertices as u64
3945        });
3946        __bindgen_bitfield_unit.set(1usize, 1u8, {
3947            let _faceEdges: u32 = unsafe { ::std::mem::transmute(_faceEdges) };
3948            _faceEdges as u64
3949        });
3950        __bindgen_bitfield_unit.set(2usize, 1u8, {
3951            let _edgeVertices: u32 = unsafe { ::std::mem::transmute(_edgeVertices) };
3952            _edgeVertices as u64
3953        });
3954        __bindgen_bitfield_unit.set(3usize, 1u8, {
3955            let _edgeFaces: u32 = unsafe { ::std::mem::transmute(_edgeFaces) };
3956            _edgeFaces as u64
3957        });
3958        __bindgen_bitfield_unit.set(4usize, 1u8, {
3959            let _vertexFaces: u32 = unsafe { ::std::mem::transmute(_vertexFaces) };
3960            _vertexFaces as u64
3961        });
3962        __bindgen_bitfield_unit.set(5usize, 1u8, {
3963            let _vertexEdges: u32 = unsafe { ::std::mem::transmute(_vertexEdges) };
3964            _vertexEdges as u64
3965        });
3966        __bindgen_bitfield_unit
3967    }
3968}
3969unsafe extern "C" {
3970    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement6refineENS3_7OptionsE"]
3971    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_refine(
3972        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
3973        options: OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Options,
3974    );
3975}
3976unsafe extern "C" {
3977    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement28populateParentToChildMappingEv"]
3978    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateParentToChildMapping(
3979        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
3980    );
3981}
3982unsafe extern "C" {
3983    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement26populateParentChildIndicesEv"]
3984    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateParentChildIndices(
3985        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
3986    );
3987}
3988unsafe extern "C" {
3989    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal10Refinement25printParentToChildMappingEv"]
3990    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_printParentToChildMapping(
3991        this: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
3992    );
3993}
3994unsafe extern "C" {
3995    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement29initializeSparseSelectionTagsEv"]
3996    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_initializeSparseSelectionTags(
3997        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
3998    );
3999}
4000unsafe extern "C" {
4001    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement31markSparseChildComponentIndicesEv"]
4002    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_markSparseChildComponentIndices(
4003        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4004    );
4005}
4006unsafe extern "C" {
4007    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement24markSparseVertexChildrenEv"]
4008    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_markSparseVertexChildren(
4009        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4010    );
4011}
4012unsafe extern "C" {
4013    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement22markSparseEdgeChildrenEv"]
4014    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_markSparseEdgeChildren(
4015        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4016    );
4017}
4018unsafe extern "C" {
4019    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement30initializeChildComponentCountsEv"]
4020    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_initializeChildComponentCounts(
4021        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4022    );
4023}
4024unsafe extern "C" {
4025    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement28populateChildToParentMappingEv"]
4026    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateChildToParentMapping(
4027        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4028    );
4029}
4030unsafe extern "C" {
4031    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement25populateFaceParentVectorsEPA4_KNS3_8ChildTagE"]
4032    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceParentVectors(
4033        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4034        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4035    );
4036}
4037unsafe extern "C" {
4038    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement33populateFaceParentFromParentFacesEPA4_KNS3_8ChildTagE"]
4039    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceParentFromParentFaces(
4040        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4041        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4042    );
4043}
4044unsafe extern "C" {
4045    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement25populateEdgeParentVectorsEPA4_KNS3_8ChildTagE"]
4046    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeParentVectors(
4047        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4048        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4049    );
4050}
4051unsafe extern "C" {
4052    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement33populateEdgeParentFromParentFacesEPA4_KNS3_8ChildTagE"]
4053    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeParentFromParentFaces(
4054        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4055        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4056    );
4057}
4058unsafe extern "C" {
4059    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement33populateEdgeParentFromParentEdgesEPA4_KNS3_8ChildTagE"]
4060    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeParentFromParentEdges(
4061        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4062        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4063    );
4064}
4065unsafe extern "C" {
4066    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement27populateVertexParentVectorsEPA4_KNS3_8ChildTagE"]
4067    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentVectors(
4068        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4069        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4070    );
4071}
4072unsafe extern "C" {
4073    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement35populateVertexParentFromParentFacesEPA4_KNS3_8ChildTagE"]
4074    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentFromParentFaces(
4075        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4076        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4077    );
4078}
4079unsafe extern "C" {
4080    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement35populateVertexParentFromParentEdgesEPA4_KNS3_8ChildTagE"]
4081    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentFromParentEdges(
4082        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4083        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4084    );
4085}
4086unsafe extern "C" {
4087    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement38populateVertexParentFromParentVerticesEPA4_KNS3_8ChildTagE"]
4088    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentFromParentVertices(
4089        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4090        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4091    );
4092}
4093unsafe extern "C" {
4094    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement22propagateComponentTagsEv"]
4095    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_propagateComponentTags(
4096        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4097    );
4098}
4099unsafe extern "C" {
4100    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement22populateFaceTagVectorsEv"]
4101    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceTagVectors(
4102        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4103    );
4104}
4105unsafe extern "C" {
4106    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement31populateFaceTagsFromParentFacesEv"]
4107    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceTagsFromParentFaces(
4108        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4109    );
4110}
4111unsafe extern "C" {
4112    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement22populateEdgeTagVectorsEv"]
4113    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeTagVectors(
4114        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4115    );
4116}
4117unsafe extern "C" {
4118    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement31populateEdgeTagsFromParentFacesEv"]
4119    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeTagsFromParentFaces(
4120        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4121    );
4122}
4123unsafe extern "C" {
4124    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement31populateEdgeTagsFromParentEdgesEv"]
4125    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeTagsFromParentEdges(
4126        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4127    );
4128}
4129unsafe extern "C" {
4130    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement24populateVertexTagVectorsEv"]
4131    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagVectors(
4132        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4133    );
4134}
4135unsafe extern "C" {
4136    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement33populateVertexTagsFromParentFacesEv"]
4137    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagsFromParentFaces(
4138        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4139    );
4140}
4141unsafe extern "C" {
4142    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement33populateVertexTagsFromParentEdgesEv"]
4143    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagsFromParentEdges(
4144        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4145    );
4146}
4147unsafe extern "C" {
4148    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement36populateVertexTagsFromParentVerticesEv"]
4149    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagsFromParentVertices(
4150        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4151    );
4152}
4153unsafe extern "C" {
4154    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement17subdivideTopologyERKNS3_9RelationsE"]
4155    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideTopology(
4156        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4157        relationsToSubdivide: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Relations,
4158    );
4159}
4160unsafe extern "C" {
4161    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement24subdivideSharpnessValuesEv"]
4162    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideSharpnessValues(
4163        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4164    );
4165}
4166unsafe extern "C" {
4167    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement24subdivideVertexSharpnessEv"]
4168    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideVertexSharpness(
4169        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4170    );
4171}
4172unsafe extern "C" {
4173    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement22subdivideEdgeSharpnessEv"]
4174    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideEdgeSharpness(
4175        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4176    );
4177}
4178unsafe extern "C" {
4179    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement27reclassifySemisharpVerticesEv"]
4180    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_reclassifySemisharpVertices(
4181        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4182    );
4183}
4184unsafe extern "C" {
4185    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10Refinement21subdivideFVarChannelsEv"]
4186    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideFVarChannels(
4187        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4188    );
4189}
4190unsafe extern "C" {
4191    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10RefinementC2ERKNS2_5LevelERS4_RKNS0_3Sdc7OptionsE"]
4192    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Refinement(
4193        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4194        parent: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4195        child: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
4196        schemeOptions: *const OpenSubdiv_v3_7_0_Sdc_Options,
4197    );
4198}
4199impl OpenSubdiv_v3_7_0_Vtr_internal_Refinement {
4200    #[inline]
4201    pub unsafe fn refine(&mut self, options: OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Options) {
4202        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_refine(self, options)
4203    }
4204
4205    #[inline]
4206    pub unsafe fn populateParentToChildMapping(&mut self) {
4207        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateParentToChildMapping(self)
4208    }
4209
4210    #[inline]
4211    pub unsafe fn populateParentChildIndices(&mut self) {
4212        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateParentChildIndices(self)
4213    }
4214
4215    #[inline]
4216    pub unsafe fn printParentToChildMapping(&self) {
4217        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_printParentToChildMapping(self)
4218    }
4219
4220    #[inline]
4221    pub unsafe fn initializeSparseSelectionTags(&mut self) {
4222        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_initializeSparseSelectionTags(self)
4223    }
4224
4225    #[inline]
4226    pub unsafe fn markSparseChildComponentIndices(&mut self) {
4227        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_markSparseChildComponentIndices(self)
4228    }
4229
4230    #[inline]
4231    pub unsafe fn markSparseVertexChildren(&mut self) {
4232        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_markSparseVertexChildren(self)
4233    }
4234
4235    #[inline]
4236    pub unsafe fn markSparseEdgeChildren(&mut self) {
4237        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_markSparseEdgeChildren(self)
4238    }
4239
4240    #[inline]
4241    pub unsafe fn initializeChildComponentCounts(&mut self) {
4242        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_initializeChildComponentCounts(self)
4243    }
4244
4245    #[inline]
4246    pub unsafe fn populateChildToParentMapping(&mut self) {
4247        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateChildToParentMapping(self)
4248    }
4249
4250    #[inline]
4251    pub unsafe fn populateFaceParentVectors(
4252        &mut self,
4253        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4254    ) {
4255        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceParentVectors(self, initialChildTags)
4256    }
4257
4258    #[inline]
4259    pub unsafe fn populateFaceParentFromParentFaces(
4260        &mut self,
4261        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4262    ) {
4263        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceParentFromParentFaces(
4264            self,
4265            initialChildTags,
4266        )
4267    }
4268
4269    #[inline]
4270    pub unsafe fn populateEdgeParentVectors(
4271        &mut self,
4272        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4273    ) {
4274        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeParentVectors(self, initialChildTags)
4275    }
4276
4277    #[inline]
4278    pub unsafe fn populateEdgeParentFromParentFaces(
4279        &mut self,
4280        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4281    ) {
4282        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeParentFromParentFaces(
4283            self,
4284            initialChildTags,
4285        )
4286    }
4287
4288    #[inline]
4289    pub unsafe fn populateEdgeParentFromParentEdges(
4290        &mut self,
4291        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4292    ) {
4293        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeParentFromParentEdges(
4294            self,
4295            initialChildTags,
4296        )
4297    }
4298
4299    #[inline]
4300    pub unsafe fn populateVertexParentVectors(
4301        &mut self,
4302        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4303    ) {
4304        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentVectors(
4305            self,
4306            initialChildTags,
4307        )
4308    }
4309
4310    #[inline]
4311    pub unsafe fn populateVertexParentFromParentFaces(
4312        &mut self,
4313        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4314    ) {
4315        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentFromParentFaces(
4316            self,
4317            initialChildTags,
4318        )
4319    }
4320
4321    #[inline]
4322    pub unsafe fn populateVertexParentFromParentEdges(
4323        &mut self,
4324        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4325    ) {
4326        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentFromParentEdges(
4327            self,
4328            initialChildTags,
4329        )
4330    }
4331
4332    #[inline]
4333    pub unsafe fn populateVertexParentFromParentVertices(
4334        &mut self,
4335        initialChildTags: *const [OpenSubdiv_v3_7_0_Vtr_internal_Refinement_ChildTag; 4usize],
4336    ) {
4337        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexParentFromParentVertices(
4338            self,
4339            initialChildTags,
4340        )
4341    }
4342
4343    #[inline]
4344    pub unsafe fn propagateComponentTags(&mut self) {
4345        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_propagateComponentTags(self)
4346    }
4347
4348    #[inline]
4349    pub unsafe fn populateFaceTagVectors(&mut self) {
4350        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceTagVectors(self)
4351    }
4352
4353    #[inline]
4354    pub unsafe fn populateFaceTagsFromParentFaces(&mut self) {
4355        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateFaceTagsFromParentFaces(self)
4356    }
4357
4358    #[inline]
4359    pub unsafe fn populateEdgeTagVectors(&mut self) {
4360        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeTagVectors(self)
4361    }
4362
4363    #[inline]
4364    pub unsafe fn populateEdgeTagsFromParentFaces(&mut self) {
4365        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeTagsFromParentFaces(self)
4366    }
4367
4368    #[inline]
4369    pub unsafe fn populateEdgeTagsFromParentEdges(&mut self) {
4370        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateEdgeTagsFromParentEdges(self)
4371    }
4372
4373    #[inline]
4374    pub unsafe fn populateVertexTagVectors(&mut self) {
4375        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagVectors(self)
4376    }
4377
4378    #[inline]
4379    pub unsafe fn populateVertexTagsFromParentFaces(&mut self) {
4380        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagsFromParentFaces(self)
4381    }
4382
4383    #[inline]
4384    pub unsafe fn populateVertexTagsFromParentEdges(&mut self) {
4385        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagsFromParentEdges(self)
4386    }
4387
4388    #[inline]
4389    pub unsafe fn populateVertexTagsFromParentVertices(&mut self) {
4390        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_populateVertexTagsFromParentVertices(self)
4391    }
4392
4393    #[inline]
4394    pub unsafe fn subdivideTopology(
4395        &mut self,
4396        relationsToSubdivide: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Relations,
4397    ) {
4398        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideTopology(self, relationsToSubdivide)
4399    }
4400
4401    #[inline]
4402    pub unsafe fn subdivideSharpnessValues(&mut self) {
4403        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideSharpnessValues(self)
4404    }
4405
4406    #[inline]
4407    pub unsafe fn subdivideVertexSharpness(&mut self) {
4408        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideVertexSharpness(self)
4409    }
4410
4411    #[inline]
4412    pub unsafe fn subdivideEdgeSharpness(&mut self) {
4413        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideEdgeSharpness(self)
4414    }
4415
4416    #[inline]
4417    pub unsafe fn reclassifySemisharpVertices(&mut self) {
4418        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_reclassifySemisharpVertices(self)
4419    }
4420
4421    #[inline]
4422    pub unsafe fn subdivideFVarChannels(&mut self) {
4423        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_subdivideFVarChannels(self)
4424    }
4425
4426    #[inline]
4427    pub unsafe fn new(
4428        parent: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4429        child: *mut OpenSubdiv_v3_7_0_Vtr_internal_Level,
4430        schemeOptions: *const OpenSubdiv_v3_7_0_Sdc_Options,
4431    ) -> Self {
4432        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
4433        OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Refinement(
4434            __bindgen_tmp.as_mut_ptr(),
4435            parent,
4436            child,
4437            schemeOptions,
4438        );
4439        __bindgen_tmp.assume_init()
4440    }
4441}
4442unsafe extern "C" {
4443    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal10RefinementD1Ev"]
4444    pub fn OpenSubdiv_v3_7_0_Vtr_internal_Refinement_Refinement_destructor(
4445        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4446    );
4447}
4448#[repr(C)]
4449pub struct OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement {
4450    pub _refinement: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4451    pub _parentLevel: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4452    pub _parentFVar: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
4453    pub _childLevel: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4454    pub _childFVar: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
4455    pub _childValueParentSource: __BindgenOpaqueArray<u64, 3usize>,
4456}
4457unsafe extern "C" {
4458    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement19getFractionalWeightEitit"]
4459    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_getFractionalWeight(
4460        this: *const OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4461        pVert: OpenSubdiv_v3_7_0_Vtr_Index,
4462        pSibling: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
4463        cVert: OpenSubdiv_v3_7_0_Vtr_Index,
4464        cSibling: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
4465    ) -> f32;
4466}
4467unsafe extern "C" {
4468    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement15applyRefinementEv"]
4469    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_applyRefinement(
4470        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4471    );
4472}
4473unsafe extern "C" {
4474    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement30estimateAndAllocateChildValuesEv"]
4475    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_estimateAndAllocateChildValues(
4476        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4477    );
4478}
4479unsafe extern "C" {
4480    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement19populateChildValuesEv"]
4481    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValues(
4482        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4483    );
4484}
4485unsafe extern "C" {
4486    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement35populateChildValuesFromFaceVerticesEv"]
4487    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesFromFaceVertices(
4488        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4489    );
4490}
4491unsafe extern "C" {
4492    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement35populateChildValuesFromEdgeVerticesEv"]
4493    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesFromEdgeVertices(
4494        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4495    );
4496}
4497unsafe extern "C" {
4498    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement32populateChildValuesForEdgeVertexEii"]
4499    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesForEdgeVertex(
4500        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4501        cVert: OpenSubdiv_v3_7_0_Vtr_Index,
4502        pEdge: OpenSubdiv_v3_7_0_Vtr_Index,
4503    ) -> ::std::os::raw::c_int;
4504}
4505unsafe extern "C" {
4506    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement37populateChildValuesFromVertexVerticesEv"]
4507    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesFromVertexVertices(
4508        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4509    );
4510}
4511unsafe extern "C" {
4512    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement34populateChildValuesForVertexVertexEii"]
4513    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesForVertexVertex(
4514        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4515        cVert: OpenSubdiv_v3_7_0_Vtr_Index,
4516        pVert: OpenSubdiv_v3_7_0_Vtr_Index,
4517    ) -> ::std::os::raw::c_int;
4518}
4519unsafe extern "C" {
4520    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement26trimAndFinalizeChildValuesEv"]
4521    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_trimAndFinalizeChildValues(
4522        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4523    );
4524}
4525unsafe extern "C" {
4526    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement17propagateEdgeTagsEv"]
4527    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_propagateEdgeTags(
4528        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4529    );
4530}
4531unsafe extern "C" {
4532    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement18propagateValueTagsEv"]
4533    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_propagateValueTags(
4534        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4535    );
4536}
4537unsafe extern "C" {
4538    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement21propagateValueCreasesEv"]
4539    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_propagateValueCreases(
4540        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4541    );
4542}
4543unsafe extern "C" {
4544    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinement25reclassifySemisharpValuesEv"]
4545    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_reclassifySemisharpValues(
4546        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4547    );
4548}
4549unsafe extern "C" {
4550    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinementC1ERKNS2_10RefinementERNS2_9FVarLevelES8_"]
4551    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_FVarRefinement(
4552        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4553        refinement: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4554        parent: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
4555        child: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
4556    );
4557}
4558unsafe extern "C" {
4559    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Vtr8internal14FVarRefinementD1Ev"]
4560    pub fn OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_FVarRefinement_destructor(
4561        this: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement,
4562    );
4563}
4564impl OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement {
4565    #[inline]
4566    pub unsafe fn getFractionalWeight(
4567        &self,
4568        pVert: OpenSubdiv_v3_7_0_Vtr_Index,
4569        pSibling: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
4570        cVert: OpenSubdiv_v3_7_0_Vtr_Index,
4571        cSibling: OpenSubdiv_v3_7_0_Vtr_LocalIndex,
4572    ) -> f32 {
4573        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_getFractionalWeight(
4574            self, pVert, pSibling, cVert, cSibling,
4575        )
4576    }
4577
4578    #[inline]
4579    pub unsafe fn applyRefinement(&mut self) {
4580        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_applyRefinement(self)
4581    }
4582
4583    #[inline]
4584    pub unsafe fn estimateAndAllocateChildValues(&mut self) {
4585        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_estimateAndAllocateChildValues(self)
4586    }
4587
4588    #[inline]
4589    pub unsafe fn populateChildValues(&mut self) {
4590        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValues(self)
4591    }
4592
4593    #[inline]
4594    pub unsafe fn populateChildValuesFromFaceVertices(&mut self) {
4595        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesFromFaceVertices(self)
4596    }
4597
4598    #[inline]
4599    pub unsafe fn populateChildValuesFromEdgeVertices(&mut self) {
4600        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesFromEdgeVertices(self)
4601    }
4602
4603    #[inline]
4604    pub unsafe fn populateChildValuesForEdgeVertex(
4605        &mut self,
4606        cVert: OpenSubdiv_v3_7_0_Vtr_Index,
4607        pEdge: OpenSubdiv_v3_7_0_Vtr_Index,
4608    ) -> ::std::os::raw::c_int {
4609        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesForEdgeVertex(
4610            self, cVert, pEdge,
4611        )
4612    }
4613
4614    #[inline]
4615    pub unsafe fn populateChildValuesFromVertexVertices(&mut self) {
4616        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesFromVertexVertices(self)
4617    }
4618
4619    #[inline]
4620    pub unsafe fn populateChildValuesForVertexVertex(
4621        &mut self,
4622        cVert: OpenSubdiv_v3_7_0_Vtr_Index,
4623        pVert: OpenSubdiv_v3_7_0_Vtr_Index,
4624    ) -> ::std::os::raw::c_int {
4625        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_populateChildValuesForVertexVertex(
4626            self, cVert, pVert,
4627        )
4628    }
4629
4630    #[inline]
4631    pub unsafe fn trimAndFinalizeChildValues(&mut self) {
4632        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_trimAndFinalizeChildValues(self)
4633    }
4634
4635    #[inline]
4636    pub unsafe fn propagateEdgeTags(&mut self) {
4637        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_propagateEdgeTags(self)
4638    }
4639
4640    #[inline]
4641    pub unsafe fn propagateValueTags(&mut self) {
4642        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_propagateValueTags(self)
4643    }
4644
4645    #[inline]
4646    pub unsafe fn propagateValueCreases(&mut self) {
4647        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_propagateValueCreases(self)
4648    }
4649
4650    #[inline]
4651    pub unsafe fn reclassifySemisharpValues(&mut self) {
4652        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_reclassifySemisharpValues(self)
4653    }
4654
4655    #[inline]
4656    pub unsafe fn new(
4657        refinement: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4658        parent: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
4659        child: *mut OpenSubdiv_v3_7_0_Vtr_internal_FVarLevel,
4660    ) -> Self {
4661        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
4662        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_FVarRefinement(
4663            __bindgen_tmp.as_mut_ptr(),
4664            refinement,
4665            parent,
4666            child,
4667        );
4668        __bindgen_tmp.assume_init()
4669    }
4670
4671    #[inline]
4672    pub unsafe fn destruct(&mut self) {
4673        OpenSubdiv_v3_7_0_Vtr_internal_FVarRefinement_FVarRefinement_destructor(self)
4674    }
4675}
4676pub type OpenSubdiv_v3_7_0_Vtr_internal_StackBuffer_size_type = ::std::os::raw::c_uint;
4677#[repr(C)]
4678#[derive(Debug, Hash, PartialEq, Eq)]
4679pub struct OpenSubdiv_v3_7_0_Vtr_internal_FaceInterface {
4680    pub _vertCount: ::std::os::raw::c_int,
4681}
4682#[repr(C)]
4683#[derive(Debug, Hash, PartialEq, Eq)]
4684pub struct OpenSubdiv_v3_7_0_Vtr_internal_EdgeInterface {
4685    pub _level: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4686    pub _eIndex: ::std::os::raw::c_int,
4687}
4688#[repr(C)]
4689#[derive(Debug, Hash, PartialEq, Eq)]
4690pub struct OpenSubdiv_v3_7_0_Vtr_internal_VertexInterface {
4691    pub _parent: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4692    pub _child: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4693    pub _pIndex: ::std::os::raw::c_int,
4694    pub _cIndex: ::std::os::raw::c_int,
4695    pub _eCount: ::std::os::raw::c_int,
4696    pub _fCount: ::std::os::raw::c_int,
4697}
4698#[repr(C)]
4699#[derive(Debug, Copy, Clone)]
4700pub struct OpenSubdiv_v3_7_0_Vtr_internal_SparseSelector {
4701    _unused: [u8; 0],
4702}
4703pub type OpenSubdiv_v3_7_0_Far_Index = OpenSubdiv_v3_7_0_Vtr_Index;
4704pub type OpenSubdiv_v3_7_0_Far_LocalIndex = OpenSubdiv_v3_7_0_Vtr_LocalIndex;
4705pub type OpenSubdiv_v3_7_0_Far_IndexArray = OpenSubdiv_v3_7_0_Vtr_IndexArray;
4706pub type OpenSubdiv_v3_7_0_Far_LocalIndexArray = OpenSubdiv_v3_7_0_Vtr_LocalIndexArray;
4707pub type OpenSubdiv_v3_7_0_Far_ConstIndexArray = OpenSubdiv_v3_7_0_Vtr_ConstIndexArray;
4708pub type OpenSubdiv_v3_7_0_Far_ConstLocalIndexArray = OpenSubdiv_v3_7_0_Vtr_ConstLocalIndexArray;
4709#[doc = "< No error. Move along."]
4710pub const OpenSubdiv_v3_7_0_Far_ErrorType_FAR_NO_ERROR: OpenSubdiv_v3_7_0_Far_ErrorType = 0;
4711#[doc = "< Issue a fatal error and end the program."]
4712pub const OpenSubdiv_v3_7_0_Far_ErrorType_FAR_FATAL_ERROR: OpenSubdiv_v3_7_0_Far_ErrorType = 1;
4713#[doc = "< Issue an internal programming error, but continue execution."]
4714pub const OpenSubdiv_v3_7_0_Far_ErrorType_FAR_INTERNAL_CODING_ERROR:
4715    OpenSubdiv_v3_7_0_Far_ErrorType = 2;
4716#[doc = "< Issue a generic programming error, but continue execution."]
4717pub const OpenSubdiv_v3_7_0_Far_ErrorType_FAR_CODING_ERROR: OpenSubdiv_v3_7_0_Far_ErrorType = 3;
4718#[doc = "< Issue a generic runtime error, but continue execution."]
4719pub const OpenSubdiv_v3_7_0_Far_ErrorType_FAR_RUNTIME_ERROR: OpenSubdiv_v3_7_0_Far_ErrorType = 4;
4720pub type OpenSubdiv_v3_7_0_Far_ErrorType = ::std::os::raw::c_uint;
4721#[doc = " \\brief The error callback function type (default is \"printf\")"]
4722pub type OpenSubdiv_v3_7_0_Far_ErrorCallbackFunc = ::std::option::Option<
4723    unsafe extern "C" fn(
4724        err: OpenSubdiv_v3_7_0_Far_ErrorType,
4725        message: *const ::std::os::raw::c_char,
4726    ),
4727>;
4728#[doc = " \\brief The warning callback function type (default is \"printf\")"]
4729pub type OpenSubdiv_v3_7_0_Far_WarningCallbackFunc =
4730    ::std::option::Option<unsafe extern "C" fn(message: *const ::std::os::raw::c_char)>;
4731#[doc = "\n \\brief An interface for accessing data in a specific level of a refined topology hierarchy.\n\n TopologyLevel provides an interface to data in a specific level of a topology hierarchy.\n Instances of TopologyLevel are created and owned by a TopologyRefiner,\n which will return const-references to them.  Such references are only valid during the\n lifetime of the TopologyRefiner that created and returned them, and only for a given refinement,\n i.e. if the TopologyRefiner is re-refined, any references to TopoologyLevels are invalidated.\n"]
4732#[repr(C)]
4733#[derive(Debug, Hash, PartialEq, Eq)]
4734pub struct OpenSubdiv_v3_7_0_Far_TopologyLevel {
4735    pub _level: *const OpenSubdiv_v3_7_0_Vtr_internal_Level,
4736    pub _refToParent: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4737    pub _refToChild: *const OpenSubdiv_v3_7_0_Vtr_internal_Refinement,
4738}
4739#[repr(C)]
4740#[derive(Debug, Copy, Clone)]
4741pub struct OpenSubdiv_v3_7_0_Far_internal_FeatureMask {
4742    _unused: [u8; 0],
4743}
4744#[doc = "\n  \\brief Stores topology data for a specified set of refinement options.\n"]
4745#[repr(C)]
4746pub struct OpenSubdiv_v3_7_0_Far_TopologyRefiner {
4747    pub _subdivType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
4748    pub _subdivOptions: OpenSubdiv_v3_7_0_Sdc_Options,
4749    pub _bitfield_align_1: [u8; 0],
4750    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
4751    pub _uniformOptions: OpenSubdiv_v3_7_0_Far_TopologyRefiner_UniformOptions,
4752    pub _adaptiveOptions: OpenSubdiv_v3_7_0_Far_TopologyRefiner_AdaptiveOptions,
4753    pub _totalVertices: ::std::os::raw::c_int,
4754    pub _totalEdges: ::std::os::raw::c_int,
4755    pub _totalFaces: ::std::os::raw::c_int,
4756    pub _totalFaceVertices: ::std::os::raw::c_int,
4757    pub _maxValence: ::std::os::raw::c_int,
4758    pub _baseLevelOwned: bool,
4759    pub _levels: __BindgenOpaqueArray<u64, 3usize>,
4760    pub _refinements: __BindgenOpaqueArray<u64, 3usize>,
4761    pub _farLevels: __BindgenOpaqueArray<u64, 3usize>,
4762}
4763#[doc = " \\brief Uniform refinement options\n\n Options for uniform refinement, including the number of levels, vertex\n ordering and generation of topology information.\n\n Note the impact of the option to generate fullTopologyInLastLevel.  Given\n subsequent levels of uniform refinement typically reguire 4x the data\n of the previous level, only the minimum amount of data is generated in the\n last level by default, i.e. a vertex and face-vertex list.  If requiring\n topology traversal of the last level, e.g. inspecting edges or incident\n faces of vertices, the option to generate full topology in the last\n level should be enabled.\n"]
4764#[repr(C)]
4765#[repr(align(4))]
4766#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
4767pub struct OpenSubdiv_v3_7_0_Far_TopologyRefiner_UniformOptions {
4768    pub _bitfield_align_1: [u8; 0],
4769    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
4770    pub __bindgen_padding_0: [u8; 3usize],
4771}
4772impl OpenSubdiv_v3_7_0_Far_TopologyRefiner_UniformOptions {
4773    #[inline]
4774    pub fn refinementLevel(&self) -> ::std::os::raw::c_uint {
4775        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u32) }
4776    }
4777
4778    #[inline]
4779    pub fn set_refinementLevel(&mut self, val: ::std::os::raw::c_uint) {
4780        unsafe {
4781            let val: u32 = ::std::mem::transmute(val);
4782            self._bitfield_1.set(0usize, 4u8, val as u64)
4783        }
4784    }
4785
4786    #[inline]
4787    pub unsafe fn refinementLevel_raw(this: *const Self) -> ::std::os::raw::c_uint {
4788        unsafe {
4789            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
4790                ::std::ptr::addr_of!((*this)._bitfield_1),
4791                0usize,
4792                4u8,
4793            ) as u32)
4794        }
4795    }
4796
4797    #[inline]
4798    pub unsafe fn set_refinementLevel_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
4799        unsafe {
4800            let val: u32 = ::std::mem::transmute(val);
4801            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
4802                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
4803                0usize,
4804                4u8,
4805                val as u64,
4806            )
4807        }
4808    }
4809
4810    #[inline]
4811    pub fn orderVerticesFromFacesFirst(&self) -> ::std::os::raw::c_uint {
4812        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
4813    }
4814
4815    #[inline]
4816    pub fn set_orderVerticesFromFacesFirst(&mut self, val: ::std::os::raw::c_uint) {
4817        unsafe {
4818            let val: u32 = ::std::mem::transmute(val);
4819            self._bitfield_1.set(4usize, 1u8, val as u64)
4820        }
4821    }
4822
4823    #[inline]
4824    pub unsafe fn orderVerticesFromFacesFirst_raw(this: *const Self) -> ::std::os::raw::c_uint {
4825        unsafe {
4826            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
4827                ::std::ptr::addr_of!((*this)._bitfield_1),
4828                4usize,
4829                1u8,
4830            ) as u32)
4831        }
4832    }
4833
4834    #[inline]
4835    pub unsafe fn set_orderVerticesFromFacesFirst_raw(
4836        this: *mut Self,
4837        val: ::std::os::raw::c_uint,
4838    ) {
4839        unsafe {
4840            let val: u32 = ::std::mem::transmute(val);
4841            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
4842                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
4843                4usize,
4844                1u8,
4845                val as u64,
4846            )
4847        }
4848    }
4849
4850    #[inline]
4851    pub fn fullTopologyInLastLevel(&self) -> ::std::os::raw::c_uint {
4852        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
4853    }
4854
4855    #[inline]
4856    pub fn set_fullTopologyInLastLevel(&mut self, val: ::std::os::raw::c_uint) {
4857        unsafe {
4858            let val: u32 = ::std::mem::transmute(val);
4859            self._bitfield_1.set(5usize, 1u8, val as u64)
4860        }
4861    }
4862
4863    #[inline]
4864    pub unsafe fn fullTopologyInLastLevel_raw(this: *const Self) -> ::std::os::raw::c_uint {
4865        unsafe {
4866            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
4867                ::std::ptr::addr_of!((*this)._bitfield_1),
4868                5usize,
4869                1u8,
4870            ) as u32)
4871        }
4872    }
4873
4874    #[inline]
4875    pub unsafe fn set_fullTopologyInLastLevel_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
4876        unsafe {
4877            let val: u32 = ::std::mem::transmute(val);
4878            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
4879                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
4880                5usize,
4881                1u8,
4882                val as u64,
4883            )
4884        }
4885    }
4886
4887    #[inline]
4888    pub fn new_bitfield_1(
4889        refinementLevel: ::std::os::raw::c_uint,
4890        orderVerticesFromFacesFirst: ::std::os::raw::c_uint,
4891        fullTopologyInLastLevel: ::std::os::raw::c_uint,
4892    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
4893        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
4894        __bindgen_bitfield_unit.set(0usize, 4u8, {
4895            let refinementLevel: u32 = unsafe { ::std::mem::transmute(refinementLevel) };
4896            refinementLevel as u64
4897        });
4898        __bindgen_bitfield_unit.set(4usize, 1u8, {
4899            let orderVerticesFromFacesFirst: u32 =
4900                unsafe { ::std::mem::transmute(orderVerticesFromFacesFirst) };
4901            orderVerticesFromFacesFirst as u64
4902        });
4903        __bindgen_bitfield_unit.set(5usize, 1u8, {
4904            let fullTopologyInLastLevel: u32 =
4905                unsafe { ::std::mem::transmute(fullTopologyInLastLevel) };
4906            fullTopologyInLastLevel as u64
4907        });
4908        __bindgen_bitfield_unit
4909    }
4910}
4911#[doc = " \\brief Adaptive refinement options"]
4912#[repr(C)]
4913#[repr(align(4))]
4914#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
4915pub struct OpenSubdiv_v3_7_0_Far_TopologyRefiner_AdaptiveOptions {
4916    pub _bitfield_align_1: [u8; 0],
4917    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
4918    pub __bindgen_padding_0: u16,
4919}
4920impl OpenSubdiv_v3_7_0_Far_TopologyRefiner_AdaptiveOptions {
4921    #[inline]
4922    pub fn isolationLevel(&self) -> ::std::os::raw::c_uint {
4923        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u32) }
4924    }
4925
4926    #[inline]
4927    pub fn set_isolationLevel(&mut self, val: ::std::os::raw::c_uint) {
4928        unsafe {
4929            let val: u32 = ::std::mem::transmute(val);
4930            self._bitfield_1.set(0usize, 4u8, val as u64)
4931        }
4932    }
4933
4934    #[inline]
4935    pub unsafe fn isolationLevel_raw(this: *const Self) -> ::std::os::raw::c_uint {
4936        unsafe {
4937            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
4938                ::std::ptr::addr_of!((*this)._bitfield_1),
4939                0usize,
4940                4u8,
4941            ) as u32)
4942        }
4943    }
4944
4945    #[inline]
4946    pub unsafe fn set_isolationLevel_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
4947        unsafe {
4948            let val: u32 = ::std::mem::transmute(val);
4949            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
4950                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
4951                0usize,
4952                4u8,
4953                val as u64,
4954            )
4955        }
4956    }
4957
4958    #[inline]
4959    pub fn secondaryLevel(&self) -> ::std::os::raw::c_uint {
4960        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u32) }
4961    }
4962
4963    #[inline]
4964    pub fn set_secondaryLevel(&mut self, val: ::std::os::raw::c_uint) {
4965        unsafe {
4966            let val: u32 = ::std::mem::transmute(val);
4967            self._bitfield_1.set(4usize, 4u8, val as u64)
4968        }
4969    }
4970
4971    #[inline]
4972    pub unsafe fn secondaryLevel_raw(this: *const Self) -> ::std::os::raw::c_uint {
4973        unsafe {
4974            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
4975                ::std::ptr::addr_of!((*this)._bitfield_1),
4976                4usize,
4977                4u8,
4978            ) as u32)
4979        }
4980    }
4981
4982    #[inline]
4983    pub unsafe fn set_secondaryLevel_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
4984        unsafe {
4985            let val: u32 = ::std::mem::transmute(val);
4986            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
4987                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
4988                4usize,
4989                4u8,
4990                val as u64,
4991            )
4992        }
4993    }
4994
4995    #[inline]
4996    pub fn useSingleCreasePatch(&self) -> ::std::os::raw::c_uint {
4997        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u32) }
4998    }
4999
5000    #[inline]
5001    pub fn set_useSingleCreasePatch(&mut self, val: ::std::os::raw::c_uint) {
5002        unsafe {
5003            let val: u32 = ::std::mem::transmute(val);
5004            self._bitfield_1.set(8usize, 1u8, val as u64)
5005        }
5006    }
5007
5008    #[inline]
5009    pub unsafe fn useSingleCreasePatch_raw(this: *const Self) -> ::std::os::raw::c_uint {
5010        unsafe {
5011            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5012                ::std::ptr::addr_of!((*this)._bitfield_1),
5013                8usize,
5014                1u8,
5015            ) as u32)
5016        }
5017    }
5018
5019    #[inline]
5020    pub unsafe fn set_useSingleCreasePatch_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5021        unsafe {
5022            let val: u32 = ::std::mem::transmute(val);
5023            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5024                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5025                8usize,
5026                1u8,
5027                val as u64,
5028            )
5029        }
5030    }
5031
5032    #[inline]
5033    pub fn useInfSharpPatch(&self) -> ::std::os::raw::c_uint {
5034        unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u32) }
5035    }
5036
5037    #[inline]
5038    pub fn set_useInfSharpPatch(&mut self, val: ::std::os::raw::c_uint) {
5039        unsafe {
5040            let val: u32 = ::std::mem::transmute(val);
5041            self._bitfield_1.set(9usize, 1u8, val as u64)
5042        }
5043    }
5044
5045    #[inline]
5046    pub unsafe fn useInfSharpPatch_raw(this: *const Self) -> ::std::os::raw::c_uint {
5047        unsafe {
5048            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5049                ::std::ptr::addr_of!((*this)._bitfield_1),
5050                9usize,
5051                1u8,
5052            ) as u32)
5053        }
5054    }
5055
5056    #[inline]
5057    pub unsafe fn set_useInfSharpPatch_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5058        unsafe {
5059            let val: u32 = ::std::mem::transmute(val);
5060            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5061                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5062                9usize,
5063                1u8,
5064                val as u64,
5065            )
5066        }
5067    }
5068
5069    #[inline]
5070    pub fn considerFVarChannels(&self) -> ::std::os::raw::c_uint {
5071        unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u32) }
5072    }
5073
5074    #[inline]
5075    pub fn set_considerFVarChannels(&mut self, val: ::std::os::raw::c_uint) {
5076        unsafe {
5077            let val: u32 = ::std::mem::transmute(val);
5078            self._bitfield_1.set(10usize, 1u8, val as u64)
5079        }
5080    }
5081
5082    #[inline]
5083    pub unsafe fn considerFVarChannels_raw(this: *const Self) -> ::std::os::raw::c_uint {
5084        unsafe {
5085            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5086                ::std::ptr::addr_of!((*this)._bitfield_1),
5087                10usize,
5088                1u8,
5089            ) as u32)
5090        }
5091    }
5092
5093    #[inline]
5094    pub unsafe fn set_considerFVarChannels_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5095        unsafe {
5096            let val: u32 = ::std::mem::transmute(val);
5097            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5098                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5099                10usize,
5100                1u8,
5101                val as u64,
5102            )
5103        }
5104    }
5105
5106    #[inline]
5107    pub fn orderVerticesFromFacesFirst(&self) -> ::std::os::raw::c_uint {
5108        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u32) }
5109    }
5110
5111    #[inline]
5112    pub fn set_orderVerticesFromFacesFirst(&mut self, val: ::std::os::raw::c_uint) {
5113        unsafe {
5114            let val: u32 = ::std::mem::transmute(val);
5115            self._bitfield_1.set(11usize, 1u8, val as u64)
5116        }
5117    }
5118
5119    #[inline]
5120    pub unsafe fn orderVerticesFromFacesFirst_raw(this: *const Self) -> ::std::os::raw::c_uint {
5121        unsafe {
5122            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5123                ::std::ptr::addr_of!((*this)._bitfield_1),
5124                11usize,
5125                1u8,
5126            ) as u32)
5127        }
5128    }
5129
5130    #[inline]
5131    pub unsafe fn set_orderVerticesFromFacesFirst_raw(
5132        this: *mut Self,
5133        val: ::std::os::raw::c_uint,
5134    ) {
5135        unsafe {
5136            let val: u32 = ::std::mem::transmute(val);
5137            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5138                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5139                11usize,
5140                1u8,
5141                val as u64,
5142            )
5143        }
5144    }
5145
5146    #[inline]
5147    pub fn new_bitfield_1(
5148        isolationLevel: ::std::os::raw::c_uint,
5149        secondaryLevel: ::std::os::raw::c_uint,
5150        useSingleCreasePatch: ::std::os::raw::c_uint,
5151        useInfSharpPatch: ::std::os::raw::c_uint,
5152        considerFVarChannels: ::std::os::raw::c_uint,
5153        orderVerticesFromFacesFirst: ::std::os::raw::c_uint,
5154    ) -> __BindgenBitfieldUnit<[u8; 2usize]> {
5155        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
5156        __bindgen_bitfield_unit.set(0usize, 4u8, {
5157            let isolationLevel: u32 = unsafe { ::std::mem::transmute(isolationLevel) };
5158            isolationLevel as u64
5159        });
5160        __bindgen_bitfield_unit.set(4usize, 4u8, {
5161            let secondaryLevel: u32 = unsafe { ::std::mem::transmute(secondaryLevel) };
5162            secondaryLevel as u64
5163        });
5164        __bindgen_bitfield_unit.set(8usize, 1u8, {
5165            let useSingleCreasePatch: u32 = unsafe { ::std::mem::transmute(useSingleCreasePatch) };
5166            useSingleCreasePatch as u64
5167        });
5168        __bindgen_bitfield_unit.set(9usize, 1u8, {
5169            let useInfSharpPatch: u32 = unsafe { ::std::mem::transmute(useInfSharpPatch) };
5170            useInfSharpPatch as u64
5171        });
5172        __bindgen_bitfield_unit.set(10usize, 1u8, {
5173            let considerFVarChannels: u32 = unsafe { ::std::mem::transmute(considerFVarChannels) };
5174            considerFVarChannels as u64
5175        });
5176        __bindgen_bitfield_unit.set(11usize, 1u8, {
5177            let orderVerticesFromFacesFirst: u32 =
5178                unsafe { ::std::mem::transmute(orderVerticesFromFacesFirst) };
5179            orderVerticesFromFacesFirst as u64
5180        });
5181        __bindgen_bitfield_unit
5182    }
5183}
5184unsafe extern "C" {
5185    #[doc = " \\brief Refine the topology uniformly\n\n This method applies uniform refinement to the level specified in the\n given UniformOptions.\n\n Note the impact of the UniformOption to generate fullTopologyInLastLevel\n and be sure it is assigned to satisfy the needs of the resulting refinement.\n\n @param options   Options controlling uniform refinement\n"]
5186    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15TopologyRefiner13RefineUniformENS2_14UniformOptionsE"]
5187    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_RefineUniform(
5188        this: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5189        options: OpenSubdiv_v3_7_0_Far_TopologyRefiner_UniformOptions,
5190    );
5191}
5192unsafe extern "C" {
5193    #[doc = " \\brief Feature Adaptive topology refinement\n\n @param options         Options controlling adaptive refinement\n\n @param selectedFaces   Limit adaptive refinement to the specified faces\n"]
5194    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15TopologyRefiner14RefineAdaptiveENS2_15AdaptiveOptionsENS0_3Vtr10ConstArrayIiEE"]
5195    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_RefineAdaptive(
5196        this: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5197        options: OpenSubdiv_v3_7_0_Far_TopologyRefiner_AdaptiveOptions,
5198        selectedFaces: OpenSubdiv_v3_7_0_Far_ConstIndexArray,
5199    );
5200}
5201unsafe extern "C" {
5202    #[doc = " \\brief Unrefine the topology, keeping only the base level."]
5203    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15TopologyRefiner8UnrefineEv"]
5204    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_Unrefine(
5205        this: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5206    );
5207}
5208unsafe extern "C" {
5209    #[doc = " \\brief Returns the total number of face-varying values in all levels"]
5210    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far15TopologyRefiner21GetNumFVarValuesTotalEi"]
5211    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_GetNumFVarValuesTotal(
5212        this: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5213        channel: ::std::os::raw::c_int,
5214    ) -> ::std::os::raw::c_int;
5215}
5216unsafe extern "C" {
5217    #[doc = " \\brief Constructor"]
5218    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15TopologyRefinerC1ENS0_3Sdc10SchemeTypeENS3_7OptionsE"]
5219    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_TopologyRefiner(
5220        this: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5221        type_: OpenSubdiv_v3_7_0_Sdc_SchemeType,
5222        options: OpenSubdiv_v3_7_0_Sdc_Options,
5223    );
5224}
5225unsafe extern "C" {
5226    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15TopologyRefinerC1ERKS2_"]
5227    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_TopologyRefiner1(
5228        this: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5229        source: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5230    );
5231}
5232unsafe extern "C" {
5233    #[doc = " \\brief Destructor"]
5234    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15TopologyRefinerD1Ev"]
5235    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefiner_TopologyRefiner_destructor(
5236        this: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5237    );
5238}
5239impl OpenSubdiv_v3_7_0_Far_TopologyRefiner {
5240    #[inline]
5241    pub fn _isUniform(&self) -> ::std::os::raw::c_uint {
5242        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
5243    }
5244
5245    #[inline]
5246    pub fn set__isUniform(&mut self, val: ::std::os::raw::c_uint) {
5247        unsafe {
5248            let val: u32 = ::std::mem::transmute(val);
5249            self._bitfield_1.set(0usize, 1u8, val as u64)
5250        }
5251    }
5252
5253    #[inline]
5254    pub unsafe fn _isUniform_raw(this: *const Self) -> ::std::os::raw::c_uint {
5255        unsafe {
5256            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5257                ::std::ptr::addr_of!((*this)._bitfield_1),
5258                0usize,
5259                1u8,
5260            ) as u32)
5261        }
5262    }
5263
5264    #[inline]
5265    pub unsafe fn set__isUniform_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5266        unsafe {
5267            let val: u32 = ::std::mem::transmute(val);
5268            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5269                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5270                0usize,
5271                1u8,
5272                val as u64,
5273            )
5274        }
5275    }
5276
5277    #[inline]
5278    pub fn _hasHoles(&self) -> ::std::os::raw::c_uint {
5279        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
5280    }
5281
5282    #[inline]
5283    pub fn set__hasHoles(&mut self, val: ::std::os::raw::c_uint) {
5284        unsafe {
5285            let val: u32 = ::std::mem::transmute(val);
5286            self._bitfield_1.set(1usize, 1u8, val as u64)
5287        }
5288    }
5289
5290    #[inline]
5291    pub unsafe fn _hasHoles_raw(this: *const Self) -> ::std::os::raw::c_uint {
5292        unsafe {
5293            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5294                ::std::ptr::addr_of!((*this)._bitfield_1),
5295                1usize,
5296                1u8,
5297            ) as u32)
5298        }
5299    }
5300
5301    #[inline]
5302    pub unsafe fn set__hasHoles_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5303        unsafe {
5304            let val: u32 = ::std::mem::transmute(val);
5305            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5306                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5307                1usize,
5308                1u8,
5309                val as u64,
5310            )
5311        }
5312    }
5313
5314    #[inline]
5315    pub fn _hasIrregFaces(&self) -> ::std::os::raw::c_uint {
5316        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
5317    }
5318
5319    #[inline]
5320    pub fn set__hasIrregFaces(&mut self, val: ::std::os::raw::c_uint) {
5321        unsafe {
5322            let val: u32 = ::std::mem::transmute(val);
5323            self._bitfield_1.set(2usize, 1u8, val as u64)
5324        }
5325    }
5326
5327    #[inline]
5328    pub unsafe fn _hasIrregFaces_raw(this: *const Self) -> ::std::os::raw::c_uint {
5329        unsafe {
5330            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5331                ::std::ptr::addr_of!((*this)._bitfield_1),
5332                2usize,
5333                1u8,
5334            ) as u32)
5335        }
5336    }
5337
5338    #[inline]
5339    pub unsafe fn set__hasIrregFaces_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5340        unsafe {
5341            let val: u32 = ::std::mem::transmute(val);
5342            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5343                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5344                2usize,
5345                1u8,
5346                val as u64,
5347            )
5348        }
5349    }
5350
5351    #[inline]
5352    pub fn _regFaceSize(&self) -> ::std::os::raw::c_uint {
5353        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 3u8) as u32) }
5354    }
5355
5356    #[inline]
5357    pub fn set__regFaceSize(&mut self, val: ::std::os::raw::c_uint) {
5358        unsafe {
5359            let val: u32 = ::std::mem::transmute(val);
5360            self._bitfield_1.set(3usize, 3u8, val as u64)
5361        }
5362    }
5363
5364    #[inline]
5365    pub unsafe fn _regFaceSize_raw(this: *const Self) -> ::std::os::raw::c_uint {
5366        unsafe {
5367            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5368                ::std::ptr::addr_of!((*this)._bitfield_1),
5369                3usize,
5370                3u8,
5371            ) as u32)
5372        }
5373    }
5374
5375    #[inline]
5376    pub unsafe fn set__regFaceSize_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5377        unsafe {
5378            let val: u32 = ::std::mem::transmute(val);
5379            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5380                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5381                3usize,
5382                3u8,
5383                val as u64,
5384            )
5385        }
5386    }
5387
5388    #[inline]
5389    pub fn _maxLevel(&self) -> ::std::os::raw::c_uint {
5390        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 4u8) as u32) }
5391    }
5392
5393    #[inline]
5394    pub fn set__maxLevel(&mut self, val: ::std::os::raw::c_uint) {
5395        unsafe {
5396            let val: u32 = ::std::mem::transmute(val);
5397            self._bitfield_1.set(6usize, 4u8, val as u64)
5398        }
5399    }
5400
5401    #[inline]
5402    pub unsafe fn _maxLevel_raw(this: *const Self) -> ::std::os::raw::c_uint {
5403        unsafe {
5404            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 2usize]>>::raw_get(
5405                ::std::ptr::addr_of!((*this)._bitfield_1),
5406                6usize,
5407                4u8,
5408            ) as u32)
5409        }
5410    }
5411
5412    #[inline]
5413    pub unsafe fn set__maxLevel_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5414        unsafe {
5415            let val: u32 = ::std::mem::transmute(val);
5416            <__BindgenBitfieldUnit<[u8; 2usize]>>::raw_set(
5417                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5418                6usize,
5419                4u8,
5420                val as u64,
5421            )
5422        }
5423    }
5424
5425    #[inline]
5426    pub fn new_bitfield_1(
5427        _isUniform: ::std::os::raw::c_uint,
5428        _hasHoles: ::std::os::raw::c_uint,
5429        _hasIrregFaces: ::std::os::raw::c_uint,
5430        _regFaceSize: ::std::os::raw::c_uint,
5431        _maxLevel: ::std::os::raw::c_uint,
5432    ) -> __BindgenBitfieldUnit<[u8; 2usize]> {
5433        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
5434        __bindgen_bitfield_unit.set(0usize, 1u8, {
5435            let _isUniform: u32 = unsafe { ::std::mem::transmute(_isUniform) };
5436            _isUniform as u64
5437        });
5438        __bindgen_bitfield_unit.set(1usize, 1u8, {
5439            let _hasHoles: u32 = unsafe { ::std::mem::transmute(_hasHoles) };
5440            _hasHoles as u64
5441        });
5442        __bindgen_bitfield_unit.set(2usize, 1u8, {
5443            let _hasIrregFaces: u32 = unsafe { ::std::mem::transmute(_hasIrregFaces) };
5444            _hasIrregFaces as u64
5445        });
5446        __bindgen_bitfield_unit.set(3usize, 3u8, {
5447            let _regFaceSize: u32 = unsafe { ::std::mem::transmute(_regFaceSize) };
5448            _regFaceSize as u64
5449        });
5450        __bindgen_bitfield_unit.set(6usize, 4u8, {
5451            let _maxLevel: u32 = unsafe { ::std::mem::transmute(_maxLevel) };
5452            _maxLevel as u64
5453        });
5454        __bindgen_bitfield_unit
5455    }
5456
5457    #[inline]
5458    pub unsafe fn RefineUniform(
5459        &mut self,
5460        options: OpenSubdiv_v3_7_0_Far_TopologyRefiner_UniformOptions,
5461    ) {
5462        OpenSubdiv_v3_7_0_Far_TopologyRefiner_RefineUniform(self, options)
5463    }
5464
5465    #[inline]
5466    pub unsafe fn RefineAdaptive(
5467        &mut self,
5468        options: OpenSubdiv_v3_7_0_Far_TopologyRefiner_AdaptiveOptions,
5469        selectedFaces: OpenSubdiv_v3_7_0_Far_ConstIndexArray,
5470    ) {
5471        OpenSubdiv_v3_7_0_Far_TopologyRefiner_RefineAdaptive(self, options, selectedFaces)
5472    }
5473
5474    #[inline]
5475    pub unsafe fn Unrefine(&mut self) {
5476        OpenSubdiv_v3_7_0_Far_TopologyRefiner_Unrefine(self)
5477    }
5478
5479    #[inline]
5480    pub unsafe fn GetNumFVarValuesTotal(
5481        &self,
5482        channel: ::std::os::raw::c_int,
5483    ) -> ::std::os::raw::c_int {
5484        OpenSubdiv_v3_7_0_Far_TopologyRefiner_GetNumFVarValuesTotal(self, channel)
5485    }
5486
5487    #[inline]
5488    pub unsafe fn new(
5489        type_: OpenSubdiv_v3_7_0_Sdc_SchemeType,
5490        options: OpenSubdiv_v3_7_0_Sdc_Options,
5491    ) -> Self {
5492        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
5493        OpenSubdiv_v3_7_0_Far_TopologyRefiner_TopologyRefiner(
5494            __bindgen_tmp.as_mut_ptr(),
5495            type_,
5496            options,
5497        );
5498        __bindgen_tmp.assume_init()
5499    }
5500
5501    #[inline]
5502    pub unsafe fn new1(source: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner) -> Self {
5503        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
5504        OpenSubdiv_v3_7_0_Far_TopologyRefiner_TopologyRefiner1(__bindgen_tmp.as_mut_ptr(), source);
5505        __bindgen_tmp.assume_init()
5506    }
5507
5508    #[inline]
5509    pub unsafe fn destruct(&mut self) {
5510        OpenSubdiv_v3_7_0_Far_TopologyRefiner_TopologyRefiner_destructor(self)
5511    }
5512}
5513#[doc = "\n  \\brief Applies refinement operations to generic primvar data.\n"]
5514#[repr(C)]
5515#[derive(Debug, Hash, PartialEq, Eq)]
5516pub struct OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal {
5517    pub _refiner: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5518}
5519pub type OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal_Weight<REAL> = REAL;
5520#[repr(C)]
5521#[derive(Debug, Hash, PartialEq, Eq)]
5522pub struct OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal_Mask<REAL> {
5523    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<REAL>>,
5524    pub _vertWeights: *mut OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal_Mask_Weight<REAL>,
5525    pub _edgeWeights: *mut OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal_Mask_Weight<REAL>,
5526    pub _faceWeights: *mut OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal_Mask_Weight<REAL>,
5527    pub _vertCount: ::std::os::raw::c_int,
5528    pub _edgeCount: ::std::os::raw::c_int,
5529    pub _faceCount: ::std::os::raw::c_int,
5530    pub _faceWeightsForFaceCenters: bool,
5531}
5532pub type OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal_Mask_Weight<REAL> = REAL;
5533#[repr(C)]
5534#[derive(Debug, PartialEq)]
5535pub struct OpenSubdiv_v3_7_0_Far_PrimvarRefiner {
5536    pub _base: OpenSubdiv_v3_7_0_Far_PrimvarRefinerReal,
5537}
5538#[doc = " \\brief Vertex stencil descriptor\n\n Allows access and manipulation of a single stencil in a StencilTable.\n"]
5539#[repr(C)]
5540#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5541pub struct OpenSubdiv_v3_7_0_Far_StencilReal<REAL> {
5542    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<REAL>>,
5543    pub _size: *mut ::std::os::raw::c_int,
5544    pub _indices: *mut OpenSubdiv_v3_7_0_Far_Index,
5545    pub _weights: *mut REAL,
5546}
5547#[doc = " \\brief Vertex stencil class wrapping the template for compatibility.\n"]
5548#[repr(C)]
5549#[derive(Debug, Copy, Clone, PartialEq)]
5550pub struct OpenSubdiv_v3_7_0_Far_Stencil {
5551    pub _base: OpenSubdiv_v3_7_0_Far_StencilReal<f32>,
5552}
5553#[doc = " \\brief Vertex stencil descriptor\n\n Allows access and manipulation of a single stencil in a StencilTable.\n"]
5554pub type OpenSubdiv_v3_7_0_Far_Stencil_BaseStencil = OpenSubdiv_v3_7_0_Far_StencilReal<f32>;
5555#[doc = " \\brief Stencil table class wrapping the template for compatibility.\n"]
5556#[repr(C)]
5557pub struct OpenSubdiv_v3_7_0_Far_StencilTable {
5558    pub _address: u8,
5559}
5560#[doc = " \\brief Limit point stencil descriptor\n"]
5561#[repr(C)]
5562#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5563pub struct OpenSubdiv_v3_7_0_Far_LimitStencilReal<REAL> {
5564    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<REAL>>,
5565    pub _base: OpenSubdiv_v3_7_0_Far_StencilReal<REAL>,
5566    pub _duWeights: *mut REAL,
5567    pub _dvWeights: *mut REAL,
5568    pub _duuWeights: *mut REAL,
5569    pub _duvWeights: *mut REAL,
5570    pub _dvvWeights: *mut REAL,
5571}
5572#[doc = " \\brief Limit point stencil class wrapping the template for compatibility.\n"]
5573#[repr(C)]
5574#[derive(Debug, Copy, Clone, PartialEq)]
5575pub struct OpenSubdiv_v3_7_0_Far_LimitStencil {
5576    pub _base: OpenSubdiv_v3_7_0_Far_LimitStencilReal<f32>,
5577}
5578#[doc = " \\brief Limit point stencil descriptor\n"]
5579pub type OpenSubdiv_v3_7_0_Far_LimitStencil_BaseStencil =
5580    OpenSubdiv_v3_7_0_Far_LimitStencilReal<f32>;
5581#[doc = " \\brief Limit stencil table class wrapping the template for compatibility.\n"]
5582#[repr(C)]
5583pub struct OpenSubdiv_v3_7_0_Far_LimitStencilTable {
5584    pub _address: u8,
5585}
5586#[doc = "\\brief Private base class of Factories for constructing TopologyRefiners\n\n TopologyRefinerFactoryBase is the base class for subclasses that are intended to\n construct TopologyRefiners directly from meshes in their native representations.\n The subclasses are parameterized by the mesh type \\<class MESH\\> and are expected\n to inherit the details related to assembly and validation provided here that are\n independent of the subclass' mesh type."]
5587#[repr(C)]
5588#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5589pub struct OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase {
5590    pub _address: u8,
5591}
5592pub type OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_TopologyCallback =
5593    OpenSubdiv_v3_7_0_Vtr_internal_Level_ValidationCallback;
5594unsafe extern "C" {
5595    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far26TopologyRefinerFactoryBase30prepareComponentTopologySizingERNS1_15TopologyRefinerE"]
5596    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareComponentTopologySizing(
5597        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5598    ) -> bool;
5599}
5600unsafe extern "C" {
5601    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far26TopologyRefinerFactoryBase34prepareComponentTopologyAssignmentERNS1_15TopologyRefinerEbPFvNS0_3Vtr8internal5Level13TopologyErrorEPKcPKvESC_"]
5602    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareComponentTopologyAssignment(
5603        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5604        fullValidation: bool,
5605        callback: OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_TopologyCallback,
5606        callbackData: *const ::std::os::raw::c_void,
5607    ) -> bool;
5608}
5609unsafe extern "C" {
5610    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far26TopologyRefinerFactoryBase32prepareComponentTagsAndSharpnessERNS1_15TopologyRefinerE"]
5611    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareComponentTagsAndSharpness(
5612        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5613    ) -> bool;
5614}
5615unsafe extern "C" {
5616    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far26TopologyRefinerFactoryBase26prepareFaceVaryingChannelsERNS1_15TopologyRefinerE"]
5617    pub fn OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareFaceVaryingChannels(
5618        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5619    ) -> bool;
5620}
5621impl OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase {
5622    #[inline]
5623    pub unsafe fn prepareComponentTopologySizing(
5624        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5625    ) -> bool {
5626        OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareComponentTopologySizing(refiner)
5627    }
5628
5629    #[inline]
5630    pub unsafe fn prepareComponentTopologyAssignment(
5631        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5632        fullValidation: bool,
5633        callback: OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_TopologyCallback,
5634        callbackData: *const ::std::os::raw::c_void,
5635    ) -> bool {
5636        OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareComponentTopologyAssignment(
5637            refiner,
5638            fullValidation,
5639            callback,
5640            callbackData,
5641        )
5642    }
5643
5644    #[inline]
5645    pub unsafe fn prepareComponentTagsAndSharpness(
5646        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5647    ) -> bool {
5648        OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareComponentTagsAndSharpness(refiner)
5649    }
5650
5651    #[inline]
5652    pub unsafe fn prepareFaceVaryingChannels(
5653        refiner: *mut OpenSubdiv_v3_7_0_Far_TopologyRefiner,
5654    ) -> bool {
5655        OpenSubdiv_v3_7_0_Far_TopologyRefinerFactoryBase_prepareFaceVaryingChannels(refiner)
5656    }
5657}
5658#[doc = "\\brief Factory for constructing TopologyRefiners from specific mesh classes.\n\n TopologyRefinerFactory<MESH> is the factory class template to convert an instance of\n TopologyRefiner from an arbitrary mesh class.  While a class template, the implementation\n is not (cannot) be complete, so specialization of a few methods is required (it is a\n stateless factory, so no instance and only static methods).\n\n This template provides both the interface and high level assembly for the construction\n of the TopologyRefiner instance.  The high level construction executes a specific set\n of operations to convert the client's MESH into TopologyRefiner.  This set of operations\n combines methods independent of MESH from the base class with those specialized here for\n class MESH.\n"]
5659#[repr(C)]
5660#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5661pub struct OpenSubdiv_v3_7_0_Far_TopologyRefinerFactory {
5662    pub _address: u8,
5663}
5664#[doc = " \\brief Options related to the construction of each TopologyRefiner.\n"]
5665#[repr(C)]
5666#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5667pub struct OpenSubdiv_v3_7_0_Far_TopologyRefinerFactory_Options {
5668    #[doc = "< The subdivision scheme type identifier"]
5669    pub schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
5670    #[doc = "< The full set of options for the scheme,\n< e.g. boundary interpolation rules..."]
5671    pub schemeOptions: OpenSubdiv_v3_7_0_Sdc_Options,
5672    pub _bitfield_align_1: [u8; 0],
5673    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
5674}
5675impl OpenSubdiv_v3_7_0_Far_TopologyRefinerFactory_Options {
5676    #[inline]
5677    pub fn validateFullTopology(&self) -> ::std::os::raw::c_uint {
5678        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
5679    }
5680
5681    #[inline]
5682    pub fn set_validateFullTopology(&mut self, val: ::std::os::raw::c_uint) {
5683        unsafe {
5684            let val: u32 = ::std::mem::transmute(val);
5685            self._bitfield_1.set(0usize, 1u8, val as u64)
5686        }
5687    }
5688
5689    #[inline]
5690    pub unsafe fn validateFullTopology_raw(this: *const Self) -> ::std::os::raw::c_uint {
5691        unsafe {
5692            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
5693                ::std::ptr::addr_of!((*this)._bitfield_1),
5694                0usize,
5695                1u8,
5696            ) as u32)
5697        }
5698    }
5699
5700    #[inline]
5701    pub unsafe fn set_validateFullTopology_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5702        unsafe {
5703            let val: u32 = ::std::mem::transmute(val);
5704            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
5705                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5706                0usize,
5707                1u8,
5708                val as u64,
5709            )
5710        }
5711    }
5712
5713    #[inline]
5714    pub fn new_bitfield_1(
5715        validateFullTopology: ::std::os::raw::c_uint,
5716    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
5717        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
5718        __bindgen_bitfield_unit.set(0usize, 1u8, {
5719            let validateFullTopology: u32 = unsafe { ::std::mem::transmute(validateFullTopology) };
5720            validateFullTopology as u64
5721        });
5722        __bindgen_bitfield_unit
5723    }
5724}
5725pub use self::OpenSubdiv_v3_7_0_Vtr_internal_Level_TopologyError as OpenSubdiv_v3_7_0_Far_TopologyRefinerFactory_TopologyError;
5726#[doc = "\n \\brief  A simple reference to raw topology data for use with TopologyRefinerFactory\n\n TopologyDescriptor is a simple struct containing references to raw topology data used\n to construct a TopologyRefiner.  It is not a requirement but a convenience for use\n with TopologyRefinerFactory when mesh topology is not available in an existing mesh\n data structure.  It should be functionally complete and simple to use, but for more\n demanding situations, writing a custom Factory is usually warranted.\n"]
5727#[repr(C)]
5728#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5729pub struct OpenSubdiv_v3_7_0_Far_TopologyDescriptor {
5730    pub numVertices: ::std::os::raw::c_int,
5731    pub numFaces: ::std::os::raw::c_int,
5732    pub numVertsPerFace: *const ::std::os::raw::c_int,
5733    pub vertIndicesPerFace: *const OpenSubdiv_v3_7_0_Far_Index,
5734    pub numCreases: ::std::os::raw::c_int,
5735    pub creaseVertexIndexPairs: *const OpenSubdiv_v3_7_0_Far_Index,
5736    pub creaseWeights: *const f32,
5737    pub numCorners: ::std::os::raw::c_int,
5738    pub cornerVertexIndices: *const OpenSubdiv_v3_7_0_Far_Index,
5739    pub cornerWeights: *const f32,
5740    pub numHoles: ::std::os::raw::c_int,
5741    pub holeIndices: *const OpenSubdiv_v3_7_0_Far_Index,
5742    pub isLeftHanded: bool,
5743    pub numFVarChannels: ::std::os::raw::c_int,
5744    pub fvarChannels: *const OpenSubdiv_v3_7_0_Far_TopologyDescriptor_FVarChannel,
5745}
5746#[repr(C)]
5747#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5748pub struct OpenSubdiv_v3_7_0_Far_TopologyDescriptor_FVarChannel {
5749    pub numValues: ::std::os::raw::c_int,
5750    pub valueIndices: *const OpenSubdiv_v3_7_0_Far_Index,
5751}
5752unsafe extern "C" {
5753    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far18TopologyDescriptorC1Ev"]
5754    pub fn OpenSubdiv_v3_7_0_Far_TopologyDescriptor_TopologyDescriptor(
5755        this: *mut OpenSubdiv_v3_7_0_Far_TopologyDescriptor,
5756    );
5757}
5758impl OpenSubdiv_v3_7_0_Far_TopologyDescriptor {
5759    #[inline]
5760    pub unsafe fn new() -> Self {
5761        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
5762        OpenSubdiv_v3_7_0_Far_TopologyDescriptor_TopologyDescriptor(__bindgen_tmp.as_mut_ptr());
5763        __bindgen_tmp.assume_init()
5764    }
5765}
5766#[doc = " \\brief Describes the type of a patch\n\n Uniquely identifies all the different types of patches\n"]
5767#[repr(C)]
5768#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5769pub struct OpenSubdiv_v3_7_0_Far_PatchDescriptor {
5770    pub _type: ::std::os::raw::c_uint,
5771}
5772#[doc = "< undefined"]
5773pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_NON_PATCH:
5774    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 0;
5775#[doc = "< points (useful for cage drawing)"]
5776pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_POINTS:
5777    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 1;
5778#[doc = "< lines  (useful for cage drawing)"]
5779pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_LINES:
5780    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 2;
5781#[doc = "< 4-sided quadrilateral (bilinear)"]
5782pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_QUADS:
5783    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 3;
5784#[doc = "< 3-sided triangle"]
5785pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_TRIANGLES:
5786    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 4;
5787#[doc = "< regular triangular patch for the Loop scheme"]
5788pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_LOOP:
5789    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 5;
5790#[doc = "< regular B-Spline patch for the Catmark scheme"]
5791pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_REGULAR:
5792    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 6;
5793pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_GREGORY:
5794    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 7;
5795pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_GREGORY_BOUNDARY:
5796    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 8;
5797pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_GREGORY_BASIS:
5798    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 9;
5799pub const OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type_GREGORY_TRIANGLE:
5800    OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = 10;
5801pub type OpenSubdiv_v3_7_0_Far_PatchDescriptor_Type = ::std::os::raw::c_uint;
5802unsafe extern "C" {
5803    #[doc = " \\brief Returns a vector of all the legal patch descriptors for the\n        given adaptive subdivision scheme"]
5804    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far15PatchDescriptor27GetAdaptivePatchDescriptorsENS0_3Sdc10SchemeTypeE"]
5805    pub fn OpenSubdiv_v3_7_0_Far_PatchDescriptor_GetAdaptivePatchDescriptors(
5806        type_: OpenSubdiv_v3_7_0_Sdc_SchemeType,
5807    ) -> OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Far_PatchDescriptor>;
5808}
5809unsafe extern "C" {
5810    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far15PatchDescriptor5printEv"]
5811    pub fn OpenSubdiv_v3_7_0_Far_PatchDescriptor_print(
5812        this: *const OpenSubdiv_v3_7_0_Far_PatchDescriptor,
5813    );
5814}
5815impl OpenSubdiv_v3_7_0_Far_PatchDescriptor {
5816    #[inline]
5817    pub unsafe fn GetAdaptivePatchDescriptors(
5818        type_: OpenSubdiv_v3_7_0_Sdc_SchemeType,
5819    ) -> OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Far_PatchDescriptor> {
5820        OpenSubdiv_v3_7_0_Far_PatchDescriptor_GetAdaptivePatchDescriptors(type_)
5821    }
5822
5823    #[inline]
5824    pub unsafe fn print(&self) {
5825        OpenSubdiv_v3_7_0_Far_PatchDescriptor_print(self)
5826    }
5827}
5828pub type OpenSubdiv_v3_7_0_Far_ConstPatchDescriptorArray =
5829    OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Far_PatchDescriptor>;
5830#[doc = " \\brief Patch parameterization\n\n Topological refinement splits coarse mesh faces into refined faces.\n\n This patch parameterzation describes the relationship between one\n of these refined faces and its corresponding coarse face. It is used\n both for refined faces that are represented as full limit surface\n parametric patches as well as for refined faces represented as simple\n triangles or quads. This parameterization is needed to interpolate\n primvar data across a refined face.\n\n The U,V and refinement level parameters describe the scale and offset\n needed to map a location on the patch between levels of refinement.\n The encoding of these values exploits the quad-tree organization of\n the faces produced by subdivision. We encode the U,V origin of the\n patch using two 10-bit integer values and the refinement level as\n a 4-bit integer. This is sufficient to represent up through 10 levels\n of refinement.\n\n Special consideration must be given to the refined faces resulting from\n irregular coarse faces. We adopt a convention similar to Ptex texture\n mapping and define the parameterization for these faces in terms of the\n regular faces resulting from the first topological splitting of the\n irregular coarse face.\n\n When computing the basis functions needed to evaluate the limit surface\n parametric patch representing a refined face, we also need to know which\n edges of the patch are interpolated boundaries. These edges are encoded\n as a boundary bitmask identifying the boundary edges of the patch in\n sequential order starting from the first vertex of the refined face.\n\n A sparse topological refinement (like feature adaptive refinement) can\n produce refined faces that are adjacent to faces at the next level of\n subdivision. We identify these transitional edges with a transition\n bitmask using the same encoding as the boundary bitmask.\n\n For triangular subdivision schemes we specify the parameterization using\n a similar method. Alternate triangles at a given level of refinement\n are parameterized from their opposite corners and encoded as occupying\n the opposite diagonal of the quad-tree hierarchy. The third barycentric\n coordinate is dependent on and can be derived from the other two\n coordinates. This encoding also takes inspiration from the Ptex\n texture mapping specification.\n\n Bitfield layout :\n\n  Field0     | Bits | Content\n  -----------|:----:|------------------------------------------------------\n  faceId     | 28   | the faceId of the patch\n  transition | 4    | transition edge mask encoding\n\n  Field1     | Bits | Content\n  -----------|:----:|------------------------------------------------------\n  level      | 4    | the subdivision level of the patch\n  nonquad    | 1    | whether patch is refined from a non-quad face\n  regular    | 1    | whether patch is regular\n  unused     | 1    | unused\n  boundary   | 5    | boundary edge mask encoding\n  v          | 10   | log2 value of u parameter at first patch corner\n  u          | 10   | log2 value of v parameter at first patch corner\n\n Note : the bitfield is not expanded in the struct due to differences in how\n        GPU & CPU compilers pack bit-fields and endian-ness.\n\n*!\n\\verbatim\nQuad Patch Parameterization\n\n(0,1)                           (1,1)\n+-------+-------+---------------+\n|       |       |               |\n|   L2  |   L2  |               |\n|0,3    |1,3    |               |\n+-------+-------+       L1      |\n|       |       |               |\n|   L2  |   L2  |               |\n|0,2    |1,2    |1,1            |\n+-------+-------+---------------+\n|               |               |\n|               |               |\n|               |               |\n|       L1      |       L1      |\n|               |               |\n|               |               |\n|0,0            |1,0            |\n+---------------+---------------+\n(0,0)                           (1,0)\n\\endverbatim\n*/\n*!\n\\verbatim\nTriangle Patch Parameterization\n\n(0,1)                           (1,1)  (0,1,0)\n+-------+-------+---------------+       +\n| \\     | \\     | \\             |       | \\\n|L2 \\   |L2 \\   |   \\           |       |   \\\n|0,3  \\ |1,3  \\ |     \\         |       | L2  \\\n+-------+-------+       \\       |       +-------+\n| \\     | \\     |   L1    \\     |       | \\  L2 | \\\n|L2 \\   |L2 \\   |           \\   |       |   \\   |   \\\n|0,2  \\ |1,2  \\ |1,1          \\ |       | L2  \\ | L2  \\\n+-------+-------+---------------+       +-------+-------+\n| \\             | \\             |       | \\             | \\\n|   \\           |   \\           |       |   \\           |   \\\n|     \\         |     \\         |       |     \\    L1   |     \\\n|       \\       |       \\       |       |       \\       |       \\\n|   L1    \\     |   L1    \\     |       |   L1    \\     |   L1    \\\n|           \\   |           \\   |       |           \\   |           \\\n|0,0          \\ |1,0          \\ |       |             \\ |             \\\n+---------------+---------------+       +---------------+---------------+\n(0,0)                           (1,0)  (0,0,1)                         (1,0,0)\n\\endverbatim\n*/"]
5831#[repr(C)]
5832#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5833pub struct OpenSubdiv_v3_7_0_Far_PatchParam {
5834    pub _bitfield_align_1: [u32; 0],
5835    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
5836}
5837impl OpenSubdiv_v3_7_0_Far_PatchParam {
5838    #[inline]
5839    pub fn field0(&self) -> ::std::os::raw::c_uint {
5840        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 32u8) as u32) }
5841    }
5842
5843    #[inline]
5844    pub fn set_field0(&mut self, val: ::std::os::raw::c_uint) {
5845        unsafe {
5846            let val: u32 = ::std::mem::transmute(val);
5847            self._bitfield_1.set(0usize, 32u8, val as u64)
5848        }
5849    }
5850
5851    #[inline]
5852    pub unsafe fn field0_raw(this: *const Self) -> ::std::os::raw::c_uint {
5853        unsafe {
5854            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 8usize]>>::raw_get(
5855                ::std::ptr::addr_of!((*this)._bitfield_1),
5856                0usize,
5857                32u8,
5858            ) as u32)
5859        }
5860    }
5861
5862    #[inline]
5863    pub unsafe fn set_field0_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5864        unsafe {
5865            let val: u32 = ::std::mem::transmute(val);
5866            <__BindgenBitfieldUnit<[u8; 8usize]>>::raw_set(
5867                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5868                0usize,
5869                32u8,
5870                val as u64,
5871            )
5872        }
5873    }
5874
5875    #[inline]
5876    pub fn field1(&self) -> ::std::os::raw::c_uint {
5877        unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 32u8) as u32) }
5878    }
5879
5880    #[inline]
5881    pub fn set_field1(&mut self, val: ::std::os::raw::c_uint) {
5882        unsafe {
5883            let val: u32 = ::std::mem::transmute(val);
5884            self._bitfield_1.set(32usize, 32u8, val as u64)
5885        }
5886    }
5887
5888    #[inline]
5889    pub unsafe fn field1_raw(this: *const Self) -> ::std::os::raw::c_uint {
5890        unsafe {
5891            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 8usize]>>::raw_get(
5892                ::std::ptr::addr_of!((*this)._bitfield_1),
5893                32usize,
5894                32u8,
5895            ) as u32)
5896        }
5897    }
5898
5899    #[inline]
5900    pub unsafe fn set_field1_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
5901        unsafe {
5902            let val: u32 = ::std::mem::transmute(val);
5903            <__BindgenBitfieldUnit<[u8; 8usize]>>::raw_set(
5904                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
5905                32usize,
5906                32u8,
5907                val as u64,
5908            )
5909        }
5910    }
5911
5912    #[inline]
5913    pub fn new_bitfield_1(
5914        field0: ::std::os::raw::c_uint,
5915        field1: ::std::os::raw::c_uint,
5916    ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
5917        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
5918        __bindgen_bitfield_unit.set(0usize, 32u8, {
5919            let field0: u32 = unsafe { ::std::mem::transmute(field0) };
5920            field0 as u64
5921        });
5922        __bindgen_bitfield_unit.set(32usize, 32u8, {
5923            let field1: u32 = unsafe { ::std::mem::transmute(field1) };
5924            field1 as u64
5925        });
5926        __bindgen_bitfield_unit
5927    }
5928}
5929pub type OpenSubdiv_v3_7_0_Far_PatchParamTable = __BindgenOpaqueArray<u64, 3usize>;
5930pub type OpenSubdiv_v3_7_0_Far_PatchParamArray =
5931    OpenSubdiv_v3_7_0_Vtr_Array<OpenSubdiv_v3_7_0_Far_PatchParam>;
5932pub type OpenSubdiv_v3_7_0_Far_ConstPatchParamArray =
5933    OpenSubdiv_v3_7_0_Vtr_ConstArray<OpenSubdiv_v3_7_0_Far_PatchParam>;
5934#[doc = " \\brief Container for arrays of parametric patches\n\n PatchTable contains topology and parametric information about the patches\n generated by the Refinement process. Patches in the table are sorted into\n arrays based on their PatchDescriptor Type.\n\n Note : PatchTable can be accessed either using a PatchHandle or a\n        combination of array and patch indices.\n\n XXXX manuelk we should add a PatchIterator that can dereference into\n              a PatchHandle for fast linear traversal of the table\n"]
5935#[repr(C)]
5936pub struct OpenSubdiv_v3_7_0_Far_PatchTable {
5937    pub _maxValence: ::std::os::raw::c_int,
5938    pub _numPtexFaces: ::std::os::raw::c_int,
5939    pub _patchArrays: OpenSubdiv_v3_7_0_Far_PatchTable_PatchArrayVector,
5940    pub _patchVerts: __BindgenOpaqueArray<u64, 3usize>,
5941    pub _paramTable: OpenSubdiv_v3_7_0_Far_PatchParamTable,
5942    pub _quadOffsetsTable: OpenSubdiv_v3_7_0_Far_PatchTable_QuadOffsetsTable,
5943    pub _vertexValenceTable: OpenSubdiv_v3_7_0_Far_PatchTable_VertexValenceTable,
5944    pub _localPointStencils: OpenSubdiv_v3_7_0_Far_PatchTable_StencilTablePtr,
5945    pub _localPointVaryingStencils: OpenSubdiv_v3_7_0_Far_PatchTable_StencilTablePtr,
5946    pub _varyingDesc: OpenSubdiv_v3_7_0_Far_PatchDescriptor,
5947    pub _varyingVerts: __BindgenOpaqueArray<u64, 3usize>,
5948    pub _fvarChannels: OpenSubdiv_v3_7_0_Far_PatchTable_FVarPatchChannelVector,
5949    pub _localPointFaceVaryingStencils: __BindgenOpaqueArray<u64, 3usize>,
5950    pub _sharpnessIndices: __BindgenOpaqueArray<u64, 3usize>,
5951    pub _sharpnessValues: __BindgenOpaqueArray<u64, 3usize>,
5952    pub _bitfield_align_1: [u8; 0],
5953    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
5954    pub __bindgen_padding_0: [u8; 7usize],
5955}
5956#[doc = " \\brief Handle that can be used as unique patch identifier within PatchTable"]
5957#[repr(C)]
5958#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5959pub struct OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle {
5960    pub arrayIndex: OpenSubdiv_v3_7_0_Far_Index,
5961    pub patchIndex: OpenSubdiv_v3_7_0_Far_Index,
5962    pub vertIndex: OpenSubdiv_v3_7_0_Far_Index,
5963}
5964#[doc = " \\brief Accessors for the gregory patch evaluation buffers.\n        These methods will be deprecated.\n"]
5965pub type OpenSubdiv_v3_7_0_Far_PatchTable_ConstQuadOffsetsArray =
5966    OpenSubdiv_v3_7_0_Vtr_ConstArray<::std::os::raw::c_uint>;
5967pub type OpenSubdiv_v3_7_0_Far_PatchTable_VertexValenceTable = __BindgenOpaqueArray<u64, 3usize>;
5968#[doc = "  @name Direct accessors\n\n \\warning These direct accessors are left for convenience, but they are\n          likely going to be deprecated in future releases\n"]
5969pub type OpenSubdiv_v3_7_0_Far_PatchTable_PatchVertsTable = __BindgenOpaqueArray<u64, 3usize>;
5970pub type OpenSubdiv_v3_7_0_Far_PatchTable_QuadOffsetsTable = __BindgenOpaqueArray<u64, 3usize>;
5971#[repr(C)]
5972#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5973pub struct OpenSubdiv_v3_7_0_Far_PatchTable_PatchArray {
5974    pub desc: OpenSubdiv_v3_7_0_Far_PatchDescriptor,
5975    pub numPatches: ::std::os::raw::c_int,
5976    pub vertIndex: OpenSubdiv_v3_7_0_Far_Index,
5977    pub patchIndex: OpenSubdiv_v3_7_0_Far_Index,
5978    pub quadOffsetIndex: OpenSubdiv_v3_7_0_Far_Index,
5979}
5980unsafe extern "C" {
5981    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable10PatchArray5printEv"]
5982    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_PatchArray_print(
5983        this: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchArray,
5984    );
5985}
5986impl OpenSubdiv_v3_7_0_Far_PatchTable_PatchArray {
5987    #[inline]
5988    pub unsafe fn print(&self) {
5989        OpenSubdiv_v3_7_0_Far_PatchTable_PatchArray_print(self)
5990    }
5991}
5992pub type OpenSubdiv_v3_7_0_Far_PatchTable_PatchArrayVector = __BindgenOpaqueArray<u64, 3usize>;
5993#[repr(C)]
5994pub struct OpenSubdiv_v3_7_0_Far_PatchTable_FVarPatchChannel {
5995    pub interpolation: OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation,
5996    pub regDesc: OpenSubdiv_v3_7_0_Far_PatchDescriptor,
5997    pub irregDesc: OpenSubdiv_v3_7_0_Far_PatchDescriptor,
5998    pub stride: ::std::os::raw::c_int,
5999    pub patchValues: __BindgenOpaqueArray<u64, 3usize>,
6000    pub patchParam: __BindgenOpaqueArray<u64, 3usize>,
6001}
6002pub type OpenSubdiv_v3_7_0_Far_PatchTable_FVarPatchChannelVector =
6003    __BindgenOpaqueArray<u64, 3usize>;
6004unsafe extern "C" {
6005    #[doc = " \\brief True if the patches are of feature adaptive types"]
6006    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable17IsFeatureAdaptiveEv"]
6007    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_IsFeatureAdaptive(
6008        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6009    ) -> bool;
6010}
6011unsafe extern "C" {
6012    #[doc = " \\brief Returns the total number of patches stored in the table"]
6013    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetNumPatchesTotalEv"]
6014    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumPatchesTotal(
6015        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6016    ) -> ::std::os::raw::c_int;
6017}
6018unsafe extern "C" {
6019    #[doc = " \\brief Returns the PatchDescriptor for the patch identified by \\p handle"]
6020    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetPatchDescriptorERKNS2_11PatchHandleE"]
6021    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchDescriptor(
6022        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6023        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6024    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor;
6025}
6026unsafe extern "C" {
6027    #[doc = " \\brief Returns the control vertex indices for the patch identified by \\p handle"]
6028    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable16GetPatchVerticesERKNS2_11PatchHandleE"]
6029    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVertices(
6030        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6031        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6032    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6033}
6034unsafe extern "C" {
6035    #[doc = " \\brief Returns a PatchParam for the patch identified by \\p handle"]
6036    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable13GetPatchParamERKNS2_11PatchHandleE"]
6037    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchParam(
6038        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6039        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6040    ) -> OpenSubdiv_v3_7_0_Far_PatchParam;
6041}
6042unsafe extern "C" {
6043    #[doc = " \\brief Returns the control vertex indices for \\p patch in \\p array"]
6044    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable16GetPatchVerticesEii"]
6045    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVertices1(
6046        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6047        array: ::std::os::raw::c_int,
6048        patch: ::std::os::raw::c_int,
6049    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6050}
6051unsafe extern "C" {
6052    #[doc = " \\brief Returns the PatchParam for \\p patch in \\p array"]
6053    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable13GetPatchParamEii"]
6054    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchParam1(
6055        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6056        array: ::std::os::raw::c_int,
6057        patch: ::std::os::raw::c_int,
6058    ) -> OpenSubdiv_v3_7_0_Far_PatchParam;
6059}
6060unsafe extern "C" {
6061    #[doc = " \\brief Returns the number of patch arrays in the table"]
6062    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable17GetNumPatchArraysEv"]
6063    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumPatchArrays(
6064        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6065    ) -> ::std::os::raw::c_int;
6066}
6067unsafe extern "C" {
6068    #[doc = " \\brief Returns the number of patches in \\p array"]
6069    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable13GetNumPatchesEi"]
6070    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumPatches(
6071        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6072        array: ::std::os::raw::c_int,
6073    ) -> ::std::os::raw::c_int;
6074}
6075unsafe extern "C" {
6076    #[doc = " \\brief Returns the number of control vertices in \\p array"]
6077    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable21GetNumControlVerticesEi"]
6078    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumControlVertices(
6079        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6080        array: ::std::os::raw::c_int,
6081    ) -> ::std::os::raw::c_int;
6082}
6083unsafe extern "C" {
6084    #[doc = " \\brief Returns the PatchDescriptor for the patches in \\p array"]
6085    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable23GetPatchArrayDescriptorEi"]
6086    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayDescriptor(
6087        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6088        array: ::std::os::raw::c_int,
6089    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor;
6090}
6091unsafe extern "C" {
6092    #[doc = " \\brief Returns the control vertex indices for the patches in \\p array"]
6093    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable21GetPatchArrayVerticesEi"]
6094    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayVertices(
6095        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6096        array: ::std::os::raw::c_int,
6097    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6098}
6099unsafe extern "C" {
6100    #[doc = " \\brief Returns the PatchParams for the patches in \\p array"]
6101    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable14GetPatchParamsEi"]
6102    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchParams(
6103        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6104        array: ::std::os::raw::c_int,
6105    ) -> OpenSubdiv_v3_7_0_Far_ConstPatchParamArray;
6106}
6107unsafe extern "C" {
6108    #[doc = " \\brief Returns the number of local vertex points."]
6109    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable17GetNumLocalPointsEv"]
6110    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumLocalPoints(
6111        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6112    ) -> ::std::os::raw::c_int;
6113}
6114unsafe extern "C" {
6115    #[doc = " \\brief Returns the number of local varying points."]
6116    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable24GetNumLocalPointsVaryingEv"]
6117    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumLocalPointsVarying(
6118        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6119    ) -> ::std::os::raw::c_int;
6120}
6121unsafe extern "C" {
6122    #[doc = " \\brief Returns the number of local face-varying points for \\p channel"]
6123    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable28GetNumLocalPointsFaceVaryingEi"]
6124    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumLocalPointsFaceVarying(
6125        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6126        channel: ::std::os::raw::c_int,
6127    ) -> ::std::os::raw::c_int;
6128}
6129unsafe extern "C" {
6130    #[doc = " \\brief Returns the 'QuadOffsets' for the Gregory patch identified by \\p handle"]
6131    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable19GetPatchQuadOffsetsERKNS2_11PatchHandleE"]
6132    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchQuadOffsets(
6133        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6134        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6135    ) -> OpenSubdiv_v3_7_0_Far_PatchTable_ConstQuadOffsetsArray;
6136}
6137unsafe extern "C" {
6138    #[doc = " \\brief Returns the crease sharpness for the patch identified by \\p handle\n        if it is a single-crease patch, or 0.0f"]
6139    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable34GetSingleCreasePatchSharpnessValueERKNS2_11PatchHandleE"]
6140    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetSingleCreasePatchSharpnessValue(
6141        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6142        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6143    ) -> f32;
6144}
6145unsafe extern "C" {
6146    #[doc = " \\brief Returns the crease sharpness for the \\p patch in \\p array\n        if it is a single-crease patch, or 0.0f"]
6147    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable34GetSingleCreasePatchSharpnessValueEii"]
6148    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetSingleCreasePatchSharpnessValue1(
6149        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6150        array: ::std::os::raw::c_int,
6151        patch: ::std::os::raw::c_int,
6152    ) -> f32;
6153}
6154unsafe extern "C" {
6155    #[doc = " \\brief Returns the varying patch descriptor"]
6156    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable25GetVaryingPatchDescriptorEv"]
6157    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetVaryingPatchDescriptor(
6158        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6159    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor;
6160}
6161unsafe extern "C" {
6162    #[doc = " \\brief Returns the varying vertex indices for a given patch"]
6163    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable23GetPatchVaryingVerticesERKNS2_11PatchHandleE"]
6164    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVaryingVertices(
6165        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6166        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6167    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6168}
6169unsafe extern "C" {
6170    #[doc = " \\brief Returns the varying vertex indices for a given patch"]
6171    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable23GetPatchVaryingVerticesEii"]
6172    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVaryingVertices1(
6173        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6174        array: ::std::os::raw::c_int,
6175        patch: ::std::os::raw::c_int,
6176    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6177}
6178unsafe extern "C" {
6179    #[doc = " \\brief Returns the varying vertex indices for the patches in \\p array"]
6180    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable28GetPatchArrayVaryingVerticesEi"]
6181    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayVaryingVertices(
6182        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6183        array: ::std::os::raw::c_int,
6184    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6185}
6186unsafe extern "C" {
6187    #[doc = " \\brief Returns an array of varying vertex indices for the patches."]
6188    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetVaryingVerticesEv"]
6189    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetVaryingVertices(
6190        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6191    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6192}
6193unsafe extern "C" {
6194    #[doc = " \\brief Returns the number of face-varying channels"]
6195    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetNumFVarChannelsEv"]
6196    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetNumFVarChannels(
6197        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6198    ) -> ::std::os::raw::c_int;
6199}
6200unsafe extern "C" {
6201    #[doc = " \\brief Returns the regular patch descriptor for \\p channel"]
6202    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable29GetFVarPatchDescriptorRegularEi"]
6203    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchDescriptorRegular(
6204        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6205        channel: ::std::os::raw::c_int,
6206    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor;
6207}
6208unsafe extern "C" {
6209    #[doc = " \\brief Returns the irregular patch descriptor for \\p channel"]
6210    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable31GetFVarPatchDescriptorIrregularEi"]
6211    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchDescriptorIrregular(
6212        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6213        channel: ::std::os::raw::c_int,
6214    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor;
6215}
6216unsafe extern "C" {
6217    #[doc = " \\brief Returns the default/irregular patch descriptor for \\p channel"]
6218    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable22GetFVarPatchDescriptorEi"]
6219    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchDescriptor(
6220        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6221        channel: ::std::os::raw::c_int,
6222    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor;
6223}
6224unsafe extern "C" {
6225    #[doc = " \\brief Returns the value indices for a given patch in \\p channel"]
6226    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetPatchFVarValuesERKNS2_11PatchHandleEi"]
6227    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarValues(
6228        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6229        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6230        channel: ::std::os::raw::c_int,
6231    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6232}
6233unsafe extern "C" {
6234    #[doc = " \\brief Returns the value indices for a given patch in \\p channel"]
6235    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetPatchFVarValuesEiii"]
6236    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarValues1(
6237        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6238        array: ::std::os::raw::c_int,
6239        patch: ::std::os::raw::c_int,
6240        channel: ::std::os::raw::c_int,
6241    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6242}
6243unsafe extern "C" {
6244    #[doc = " \\brief Returns the value indices for the patches in \\p array in \\p channel"]
6245    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable23GetPatchArrayFVarValuesEii"]
6246    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayFVarValues(
6247        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6248        array: ::std::os::raw::c_int,
6249        channel: ::std::os::raw::c_int,
6250    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6251}
6252unsafe extern "C" {
6253    #[doc = " \\brief Returns an array of value indices for the patches in \\p channel"]
6254    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable13GetFVarValuesEi"]
6255    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarValues(
6256        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6257        channel: ::std::os::raw::c_int,
6258    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray;
6259}
6260unsafe extern "C" {
6261    #[doc = " \\brief Returns the stride between patches in the value index array of \\p channel"]
6262    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetFVarValueStrideEi"]
6263    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarValueStride(
6264        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6265        channel: ::std::os::raw::c_int,
6266    ) -> ::std::os::raw::c_int;
6267}
6268unsafe extern "C" {
6269    #[doc = " \\brief Returns the value indices for a given patch in \\p channel"]
6270    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable22GetPatchFVarPatchParamERKNS2_11PatchHandleEi"]
6271    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarPatchParam(
6272        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6273        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6274        channel: ::std::os::raw::c_int,
6275    ) -> OpenSubdiv_v3_7_0_Far_PatchParam;
6276}
6277unsafe extern "C" {
6278    #[doc = " \\brief Returns the face-varying params for a given patch \\p channel"]
6279    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable22GetPatchFVarPatchParamEiii"]
6280    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarPatchParam1(
6281        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6282        array: ::std::os::raw::c_int,
6283        patch: ::std::os::raw::c_int,
6284        channel: ::std::os::raw::c_int,
6285    ) -> OpenSubdiv_v3_7_0_Far_PatchParam;
6286}
6287unsafe extern "C" {
6288    #[doc = " \\brief Returns the face-varying for a given patch in \\p array in \\p channel"]
6289    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable28GetPatchArrayFVarPatchParamsEii"]
6290    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayFVarPatchParams(
6291        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6292        array: ::std::os::raw::c_int,
6293        channel: ::std::os::raw::c_int,
6294    ) -> OpenSubdiv_v3_7_0_Far_ConstPatchParamArray;
6295}
6296unsafe extern "C" {
6297    #[doc = " \\brief Returns an array of face-varying patch param for \\p channel"]
6298    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable18GetFVarPatchParamsEi"]
6299    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchParams(
6300        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6301        channel: ::std::os::raw::c_int,
6302    ) -> OpenSubdiv_v3_7_0_Far_ConstPatchParamArray;
6303}
6304unsafe extern "C" {
6305    #[doc = " \\brief Deprecated @see PatchTable#GetFVarPatchDescriptor"]
6306    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable33GetFVarChannelLinearInterpolationEi"]
6307    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarChannelLinearInterpolation(
6308        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6309        channel: ::std::os::raw::c_int,
6310    ) -> OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation;
6311}
6312unsafe extern "C" {
6313    #[doc = " debug helper"]
6314    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable5printEv"]
6315    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_print(this: *const OpenSubdiv_v3_7_0_Far_PatchTable);
6316}
6317unsafe extern "C" {
6318    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Far10PatchTable13getPatchIndexEii"]
6319    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_getPatchIndex(
6320        this: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6321        array: ::std::os::raw::c_int,
6322        patch: ::std::os::raw::c_int,
6323    ) -> OpenSubdiv_v3_7_0_Far_Index;
6324}
6325unsafe extern "C" {
6326    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far10PatchTable14getPatchParamsEi"]
6327    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_getPatchParams(
6328        this: *mut OpenSubdiv_v3_7_0_Far_PatchTable,
6329        arrayIndex: ::std::os::raw::c_int,
6330    ) -> OpenSubdiv_v3_7_0_Far_PatchParamArray;
6331}
6332unsafe extern "C" {
6333    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far10PatchTable19getSharpnessIndicesEi"]
6334    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_getSharpnessIndices(
6335        this: *mut OpenSubdiv_v3_7_0_Far_PatchTable,
6336        arrayIndex: OpenSubdiv_v3_7_0_Far_Index,
6337    ) -> *mut OpenSubdiv_v3_7_0_Far_Index;
6338}
6339unsafe extern "C" {
6340    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far10PatchTable18getSharpnessValuesEi"]
6341    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_getSharpnessValues(
6342        this: *mut OpenSubdiv_v3_7_0_Far_PatchTable,
6343        arrayIndex: OpenSubdiv_v3_7_0_Far_Index,
6344    ) -> *mut f32;
6345}
6346unsafe extern "C" {
6347    #[doc = " \\brief Copy constructor"]
6348    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far10PatchTableC1ERKS2_"]
6349    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_PatchTable(
6350        this: *mut OpenSubdiv_v3_7_0_Far_PatchTable,
6351        src: *const OpenSubdiv_v3_7_0_Far_PatchTable,
6352    );
6353}
6354unsafe extern "C" {
6355    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far10PatchTableC1Ei"]
6356    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_PatchTable1(
6357        this: *mut OpenSubdiv_v3_7_0_Far_PatchTable,
6358        maxvalence: ::std::os::raw::c_int,
6359    );
6360}
6361unsafe extern "C" {
6362    #[doc = " \\brief Destructor"]
6363    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far10PatchTableD1Ev"]
6364    pub fn OpenSubdiv_v3_7_0_Far_PatchTable_PatchTable_destructor(
6365        this: *mut OpenSubdiv_v3_7_0_Far_PatchTable,
6366    );
6367}
6368impl OpenSubdiv_v3_7_0_Far_PatchTable {
6369    #[inline]
6370    pub fn _isUniformLinear(&self) -> ::std::os::raw::c_uint {
6371        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
6372    }
6373
6374    #[inline]
6375    pub fn set__isUniformLinear(&mut self, val: ::std::os::raw::c_uint) {
6376        unsafe {
6377            let val: u32 = ::std::mem::transmute(val);
6378            self._bitfield_1.set(0usize, 1u8, val as u64)
6379        }
6380    }
6381
6382    #[inline]
6383    pub unsafe fn _isUniformLinear_raw(this: *const Self) -> ::std::os::raw::c_uint {
6384        unsafe {
6385            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
6386                ::std::ptr::addr_of!((*this)._bitfield_1),
6387                0usize,
6388                1u8,
6389            ) as u32)
6390        }
6391    }
6392
6393    #[inline]
6394    pub unsafe fn set__isUniformLinear_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
6395        unsafe {
6396            let val: u32 = ::std::mem::transmute(val);
6397            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
6398                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
6399                0usize,
6400                1u8,
6401                val as u64,
6402            )
6403        }
6404    }
6405
6406    #[inline]
6407    pub fn _vertexPrecisionIsDouble(&self) -> ::std::os::raw::c_uint {
6408        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
6409    }
6410
6411    #[inline]
6412    pub fn set__vertexPrecisionIsDouble(&mut self, val: ::std::os::raw::c_uint) {
6413        unsafe {
6414            let val: u32 = ::std::mem::transmute(val);
6415            self._bitfield_1.set(1usize, 1u8, val as u64)
6416        }
6417    }
6418
6419    #[inline]
6420    pub unsafe fn _vertexPrecisionIsDouble_raw(this: *const Self) -> ::std::os::raw::c_uint {
6421        unsafe {
6422            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
6423                ::std::ptr::addr_of!((*this)._bitfield_1),
6424                1usize,
6425                1u8,
6426            ) as u32)
6427        }
6428    }
6429
6430    #[inline]
6431    pub unsafe fn set__vertexPrecisionIsDouble_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
6432        unsafe {
6433            let val: u32 = ::std::mem::transmute(val);
6434            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
6435                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
6436                1usize,
6437                1u8,
6438                val as u64,
6439            )
6440        }
6441    }
6442
6443    #[inline]
6444    pub fn _varyingPrecisionIsDouble(&self) -> ::std::os::raw::c_uint {
6445        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
6446    }
6447
6448    #[inline]
6449    pub fn set__varyingPrecisionIsDouble(&mut self, val: ::std::os::raw::c_uint) {
6450        unsafe {
6451            let val: u32 = ::std::mem::transmute(val);
6452            self._bitfield_1.set(2usize, 1u8, val as u64)
6453        }
6454    }
6455
6456    #[inline]
6457    pub unsafe fn _varyingPrecisionIsDouble_raw(this: *const Self) -> ::std::os::raw::c_uint {
6458        unsafe {
6459            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
6460                ::std::ptr::addr_of!((*this)._bitfield_1),
6461                2usize,
6462                1u8,
6463            ) as u32)
6464        }
6465    }
6466
6467    #[inline]
6468    pub unsafe fn set__varyingPrecisionIsDouble_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
6469        unsafe {
6470            let val: u32 = ::std::mem::transmute(val);
6471            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
6472                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
6473                2usize,
6474                1u8,
6475                val as u64,
6476            )
6477        }
6478    }
6479
6480    #[inline]
6481    pub fn _faceVaryingPrecisionIsDouble(&self) -> ::std::os::raw::c_uint {
6482        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
6483    }
6484
6485    #[inline]
6486    pub fn set__faceVaryingPrecisionIsDouble(&mut self, val: ::std::os::raw::c_uint) {
6487        unsafe {
6488            let val: u32 = ::std::mem::transmute(val);
6489            self._bitfield_1.set(3usize, 1u8, val as u64)
6490        }
6491    }
6492
6493    #[inline]
6494    pub unsafe fn _faceVaryingPrecisionIsDouble_raw(this: *const Self) -> ::std::os::raw::c_uint {
6495        unsafe {
6496            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
6497                ::std::ptr::addr_of!((*this)._bitfield_1),
6498                3usize,
6499                1u8,
6500            ) as u32)
6501        }
6502    }
6503
6504    #[inline]
6505    pub unsafe fn set__faceVaryingPrecisionIsDouble_raw(
6506        this: *mut Self,
6507        val: ::std::os::raw::c_uint,
6508    ) {
6509        unsafe {
6510            let val: u32 = ::std::mem::transmute(val);
6511            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
6512                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
6513                3usize,
6514                1u8,
6515                val as u64,
6516            )
6517        }
6518    }
6519
6520    #[inline]
6521    pub fn new_bitfield_1(
6522        _isUniformLinear: ::std::os::raw::c_uint,
6523        _vertexPrecisionIsDouble: ::std::os::raw::c_uint,
6524        _varyingPrecisionIsDouble: ::std::os::raw::c_uint,
6525        _faceVaryingPrecisionIsDouble: ::std::os::raw::c_uint,
6526    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
6527        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
6528        __bindgen_bitfield_unit.set(0usize, 1u8, {
6529            let _isUniformLinear: u32 = unsafe { ::std::mem::transmute(_isUniformLinear) };
6530            _isUniformLinear as u64
6531        });
6532        __bindgen_bitfield_unit.set(1usize, 1u8, {
6533            let _vertexPrecisionIsDouble: u32 =
6534                unsafe { ::std::mem::transmute(_vertexPrecisionIsDouble) };
6535            _vertexPrecisionIsDouble as u64
6536        });
6537        __bindgen_bitfield_unit.set(2usize, 1u8, {
6538            let _varyingPrecisionIsDouble: u32 =
6539                unsafe { ::std::mem::transmute(_varyingPrecisionIsDouble) };
6540            _varyingPrecisionIsDouble as u64
6541        });
6542        __bindgen_bitfield_unit.set(3usize, 1u8, {
6543            let _faceVaryingPrecisionIsDouble: u32 =
6544                unsafe { ::std::mem::transmute(_faceVaryingPrecisionIsDouble) };
6545            _faceVaryingPrecisionIsDouble as u64
6546        });
6547        __bindgen_bitfield_unit
6548    }
6549
6550    #[inline]
6551    pub unsafe fn IsFeatureAdaptive(&self) -> bool {
6552        OpenSubdiv_v3_7_0_Far_PatchTable_IsFeatureAdaptive(self)
6553    }
6554
6555    #[inline]
6556    pub unsafe fn GetNumPatchesTotal(&self) -> ::std::os::raw::c_int {
6557        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumPatchesTotal(self)
6558    }
6559
6560    #[inline]
6561    pub unsafe fn GetPatchDescriptor(
6562        &self,
6563        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6564    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor {
6565        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchDescriptor(self, handle)
6566    }
6567
6568    #[inline]
6569    pub unsafe fn GetPatchVertices(
6570        &self,
6571        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6572    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6573        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVertices(self, handle)
6574    }
6575
6576    #[inline]
6577    pub unsafe fn GetPatchParam(
6578        &self,
6579        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6580    ) -> OpenSubdiv_v3_7_0_Far_PatchParam {
6581        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchParam(self, handle)
6582    }
6583
6584    #[inline]
6585    pub unsafe fn GetPatchVertices1(
6586        &self,
6587        array: ::std::os::raw::c_int,
6588        patch: ::std::os::raw::c_int,
6589    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6590        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVertices1(self, array, patch)
6591    }
6592
6593    #[inline]
6594    pub unsafe fn GetPatchParam1(
6595        &self,
6596        array: ::std::os::raw::c_int,
6597        patch: ::std::os::raw::c_int,
6598    ) -> OpenSubdiv_v3_7_0_Far_PatchParam {
6599        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchParam1(self, array, patch)
6600    }
6601
6602    #[inline]
6603    pub unsafe fn GetNumPatchArrays(&self) -> ::std::os::raw::c_int {
6604        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumPatchArrays(self)
6605    }
6606
6607    #[inline]
6608    pub unsafe fn GetNumPatches(&self, array: ::std::os::raw::c_int) -> ::std::os::raw::c_int {
6609        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumPatches(self, array)
6610    }
6611
6612    #[inline]
6613    pub unsafe fn GetNumControlVertices(
6614        &self,
6615        array: ::std::os::raw::c_int,
6616    ) -> ::std::os::raw::c_int {
6617        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumControlVertices(self, array)
6618    }
6619
6620    #[inline]
6621    pub unsafe fn GetPatchArrayDescriptor(
6622        &self,
6623        array: ::std::os::raw::c_int,
6624    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor {
6625        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayDescriptor(self, array)
6626    }
6627
6628    #[inline]
6629    pub unsafe fn GetPatchArrayVertices(
6630        &self,
6631        array: ::std::os::raw::c_int,
6632    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6633        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayVertices(self, array)
6634    }
6635
6636    #[inline]
6637    pub unsafe fn GetPatchParams(
6638        &self,
6639        array: ::std::os::raw::c_int,
6640    ) -> OpenSubdiv_v3_7_0_Far_ConstPatchParamArray {
6641        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchParams(self, array)
6642    }
6643
6644    #[inline]
6645    pub unsafe fn GetNumLocalPoints(&self) -> ::std::os::raw::c_int {
6646        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumLocalPoints(self)
6647    }
6648
6649    #[inline]
6650    pub unsafe fn GetNumLocalPointsVarying(&self) -> ::std::os::raw::c_int {
6651        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumLocalPointsVarying(self)
6652    }
6653
6654    #[inline]
6655    pub unsafe fn GetNumLocalPointsFaceVarying(
6656        &self,
6657        channel: ::std::os::raw::c_int,
6658    ) -> ::std::os::raw::c_int {
6659        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumLocalPointsFaceVarying(self, channel)
6660    }
6661
6662    #[inline]
6663    pub unsafe fn GetPatchQuadOffsets(
6664        &self,
6665        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6666    ) -> OpenSubdiv_v3_7_0_Far_PatchTable_ConstQuadOffsetsArray {
6667        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchQuadOffsets(self, handle)
6668    }
6669
6670    #[inline]
6671    pub unsafe fn GetSingleCreasePatchSharpnessValue(
6672        &self,
6673        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6674    ) -> f32 {
6675        OpenSubdiv_v3_7_0_Far_PatchTable_GetSingleCreasePatchSharpnessValue(self, handle)
6676    }
6677
6678    #[inline]
6679    pub unsafe fn GetSingleCreasePatchSharpnessValue1(
6680        &self,
6681        array: ::std::os::raw::c_int,
6682        patch: ::std::os::raw::c_int,
6683    ) -> f32 {
6684        OpenSubdiv_v3_7_0_Far_PatchTable_GetSingleCreasePatchSharpnessValue1(self, array, patch)
6685    }
6686
6687    #[inline]
6688    pub unsafe fn GetVaryingPatchDescriptor(&self) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor {
6689        OpenSubdiv_v3_7_0_Far_PatchTable_GetVaryingPatchDescriptor(self)
6690    }
6691
6692    #[inline]
6693    pub unsafe fn GetPatchVaryingVertices(
6694        &self,
6695        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6696    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6697        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVaryingVertices(self, handle)
6698    }
6699
6700    #[inline]
6701    pub unsafe fn GetPatchVaryingVertices1(
6702        &self,
6703        array: ::std::os::raw::c_int,
6704        patch: ::std::os::raw::c_int,
6705    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6706        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchVaryingVertices1(self, array, patch)
6707    }
6708
6709    #[inline]
6710    pub unsafe fn GetPatchArrayVaryingVertices(
6711        &self,
6712        array: ::std::os::raw::c_int,
6713    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6714        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayVaryingVertices(self, array)
6715    }
6716
6717    #[inline]
6718    pub unsafe fn GetVaryingVertices(&self) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6719        OpenSubdiv_v3_7_0_Far_PatchTable_GetVaryingVertices(self)
6720    }
6721
6722    #[inline]
6723    pub unsafe fn GetNumFVarChannels(&self) -> ::std::os::raw::c_int {
6724        OpenSubdiv_v3_7_0_Far_PatchTable_GetNumFVarChannels(self)
6725    }
6726
6727    #[inline]
6728    pub unsafe fn GetFVarPatchDescriptorRegular(
6729        &self,
6730        channel: ::std::os::raw::c_int,
6731    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor {
6732        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchDescriptorRegular(self, channel)
6733    }
6734
6735    #[inline]
6736    pub unsafe fn GetFVarPatchDescriptorIrregular(
6737        &self,
6738        channel: ::std::os::raw::c_int,
6739    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor {
6740        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchDescriptorIrregular(self, channel)
6741    }
6742
6743    #[inline]
6744    pub unsafe fn GetFVarPatchDescriptor(
6745        &self,
6746        channel: ::std::os::raw::c_int,
6747    ) -> OpenSubdiv_v3_7_0_Far_PatchDescriptor {
6748        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchDescriptor(self, channel)
6749    }
6750
6751    #[inline]
6752    pub unsafe fn GetPatchFVarValues(
6753        &self,
6754        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6755        channel: ::std::os::raw::c_int,
6756    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6757        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarValues(self, handle, channel)
6758    }
6759
6760    #[inline]
6761    pub unsafe fn GetPatchFVarValues1(
6762        &self,
6763        array: ::std::os::raw::c_int,
6764        patch: ::std::os::raw::c_int,
6765        channel: ::std::os::raw::c_int,
6766    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6767        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarValues1(self, array, patch, channel)
6768    }
6769
6770    #[inline]
6771    pub unsafe fn GetPatchArrayFVarValues(
6772        &self,
6773        array: ::std::os::raw::c_int,
6774        channel: ::std::os::raw::c_int,
6775    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6776        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayFVarValues(self, array, channel)
6777    }
6778
6779    #[inline]
6780    pub unsafe fn GetFVarValues(
6781        &self,
6782        channel: ::std::os::raw::c_int,
6783    ) -> OpenSubdiv_v3_7_0_Far_ConstIndexArray {
6784        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarValues(self, channel)
6785    }
6786
6787    #[inline]
6788    pub unsafe fn GetFVarValueStride(
6789        &self,
6790        channel: ::std::os::raw::c_int,
6791    ) -> ::std::os::raw::c_int {
6792        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarValueStride(self, channel)
6793    }
6794
6795    #[inline]
6796    pub unsafe fn GetPatchFVarPatchParam(
6797        &self,
6798        handle: *const OpenSubdiv_v3_7_0_Far_PatchTable_PatchHandle,
6799        channel: ::std::os::raw::c_int,
6800    ) -> OpenSubdiv_v3_7_0_Far_PatchParam {
6801        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarPatchParam(self, handle, channel)
6802    }
6803
6804    #[inline]
6805    pub unsafe fn GetPatchFVarPatchParam1(
6806        &self,
6807        array: ::std::os::raw::c_int,
6808        patch: ::std::os::raw::c_int,
6809        channel: ::std::os::raw::c_int,
6810    ) -> OpenSubdiv_v3_7_0_Far_PatchParam {
6811        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchFVarPatchParam1(self, array, patch, channel)
6812    }
6813
6814    #[inline]
6815    pub unsafe fn GetPatchArrayFVarPatchParams(
6816        &self,
6817        array: ::std::os::raw::c_int,
6818        channel: ::std::os::raw::c_int,
6819    ) -> OpenSubdiv_v3_7_0_Far_ConstPatchParamArray {
6820        OpenSubdiv_v3_7_0_Far_PatchTable_GetPatchArrayFVarPatchParams(self, array, channel)
6821    }
6822
6823    #[inline]
6824    pub unsafe fn GetFVarPatchParams(
6825        &self,
6826        channel: ::std::os::raw::c_int,
6827    ) -> OpenSubdiv_v3_7_0_Far_ConstPatchParamArray {
6828        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarPatchParams(self, channel)
6829    }
6830
6831    #[inline]
6832    pub unsafe fn GetFVarChannelLinearInterpolation(
6833        &self,
6834        channel: ::std::os::raw::c_int,
6835    ) -> OpenSubdiv_v3_7_0_Sdc_Options_FVarLinearInterpolation {
6836        OpenSubdiv_v3_7_0_Far_PatchTable_GetFVarChannelLinearInterpolation(self, channel)
6837    }
6838
6839    #[inline]
6840    pub unsafe fn print(&self) {
6841        OpenSubdiv_v3_7_0_Far_PatchTable_print(self)
6842    }
6843
6844    #[inline]
6845    pub unsafe fn getPatchIndex(
6846        &self,
6847        array: ::std::os::raw::c_int,
6848        patch: ::std::os::raw::c_int,
6849    ) -> OpenSubdiv_v3_7_0_Far_Index {
6850        OpenSubdiv_v3_7_0_Far_PatchTable_getPatchIndex(self, array, patch)
6851    }
6852
6853    #[inline]
6854    pub unsafe fn getPatchParams(
6855        &mut self,
6856        arrayIndex: ::std::os::raw::c_int,
6857    ) -> OpenSubdiv_v3_7_0_Far_PatchParamArray {
6858        OpenSubdiv_v3_7_0_Far_PatchTable_getPatchParams(self, arrayIndex)
6859    }
6860
6861    #[inline]
6862    pub unsafe fn getSharpnessIndices(
6863        &mut self,
6864        arrayIndex: OpenSubdiv_v3_7_0_Far_Index,
6865    ) -> *mut OpenSubdiv_v3_7_0_Far_Index {
6866        OpenSubdiv_v3_7_0_Far_PatchTable_getSharpnessIndices(self, arrayIndex)
6867    }
6868
6869    #[inline]
6870    pub unsafe fn getSharpnessValues(
6871        &mut self,
6872        arrayIndex: OpenSubdiv_v3_7_0_Far_Index,
6873    ) -> *mut f32 {
6874        OpenSubdiv_v3_7_0_Far_PatchTable_getSharpnessValues(self, arrayIndex)
6875    }
6876
6877    #[inline]
6878    pub unsafe fn new(src: *const OpenSubdiv_v3_7_0_Far_PatchTable) -> Self {
6879        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
6880        OpenSubdiv_v3_7_0_Far_PatchTable_PatchTable(__bindgen_tmp.as_mut_ptr(), src);
6881        __bindgen_tmp.assume_init()
6882    }
6883
6884    #[inline]
6885    pub unsafe fn new1(maxvalence: ::std::os::raw::c_int) -> Self {
6886        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
6887        OpenSubdiv_v3_7_0_Far_PatchTable_PatchTable1(__bindgen_tmp.as_mut_ptr(), maxvalence);
6888        __bindgen_tmp.assume_init()
6889    }
6890
6891    #[inline]
6892    pub unsafe fn destruct(&mut self) {
6893        OpenSubdiv_v3_7_0_Far_PatchTable_PatchTable_destructor(self)
6894    }
6895}
6896#[doc = " \\brief Factory for constructing a PatchTable from a TopologyRefiner\n"]
6897#[repr(C)]
6898#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6899pub struct OpenSubdiv_v3_7_0_Far_PatchTableFactory {
6900    pub _address: u8,
6901}
6902#[doc = " \\brief Public options for the PatchTable factory\n"]
6903#[repr(C)]
6904#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6905pub struct OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options {
6906    pub _bitfield_align_1: [u8; 0],
6907    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 3usize]>,
6908    #[doc = "< Number of channel indices and interpolation modes passed"]
6909    pub numFVarChannels: ::std::os::raw::c_int,
6910    #[doc = "< List containing the indices of the channels selected for the factory"]
6911    pub fvarChannelIndices: *const ::std::os::raw::c_int,
6912}
6913#[doc = "< unspecified"]
6914pub const OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType_ENDCAP_NONE:
6915    OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType = 0;
6916#[doc = "< use linear patches (simple quads or tris)"]
6917pub const OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType_ENDCAP_BILINEAR_BASIS:
6918    OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType = 1;
6919#[doc = "< use BSpline-like patches (same patch type as regular)"]
6920pub const OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType_ENDCAP_BSPLINE_BASIS:
6921    OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType = 2;
6922#[doc = "< use Gregory patches (highest quality, recommended default)"]
6923pub const OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType_ENDCAP_GREGORY_BASIS:
6924    OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType = 3;
6925#[doc = "< legacy option for 2.x style Gregory patches (Catmark only)"]
6926pub const OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType_ENDCAP_LEGACY_GREGORY:
6927    OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType = 4;
6928#[doc = " \\brief Choice for approximating irregular patches (end-caps)\n\n This enum specifies how irregular patches (end-caps) are approximated.\n A basis is chosen, rather than a specific patch type, and has a\n corresponding patch type for each subdivision scheme, i.e. a quad and\n triangular patch type exists for each basis.  These choices provide a\n trade-off between surface quality and performance.\n"]
6929pub type OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options_EndCapType = ::std::os::raw::c_uint;
6930impl OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options {
6931    #[inline]
6932    pub fn generateAllLevels(&self) -> ::std::os::raw::c_uint {
6933        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
6934    }
6935
6936    #[inline]
6937    pub fn set_generateAllLevels(&mut self, val: ::std::os::raw::c_uint) {
6938        unsafe {
6939            let val: u32 = ::std::mem::transmute(val);
6940            self._bitfield_1.set(0usize, 1u8, val as u64)
6941        }
6942    }
6943
6944    #[inline]
6945    pub unsafe fn generateAllLevels_raw(this: *const Self) -> ::std::os::raw::c_uint {
6946        unsafe {
6947            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
6948                ::std::ptr::addr_of!((*this)._bitfield_1),
6949                0usize,
6950                1u8,
6951            ) as u32)
6952        }
6953    }
6954
6955    #[inline]
6956    pub unsafe fn set_generateAllLevels_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
6957        unsafe {
6958            let val: u32 = ::std::mem::transmute(val);
6959            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
6960                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
6961                0usize,
6962                1u8,
6963                val as u64,
6964            )
6965        }
6966    }
6967
6968    #[inline]
6969    pub fn includeBaseLevelIndices(&self) -> ::std::os::raw::c_uint {
6970        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
6971    }
6972
6973    #[inline]
6974    pub fn set_includeBaseLevelIndices(&mut self, val: ::std::os::raw::c_uint) {
6975        unsafe {
6976            let val: u32 = ::std::mem::transmute(val);
6977            self._bitfield_1.set(1usize, 1u8, val as u64)
6978        }
6979    }
6980
6981    #[inline]
6982    pub unsafe fn includeBaseLevelIndices_raw(this: *const Self) -> ::std::os::raw::c_uint {
6983        unsafe {
6984            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
6985                ::std::ptr::addr_of!((*this)._bitfield_1),
6986                1usize,
6987                1u8,
6988            ) as u32)
6989        }
6990    }
6991
6992    #[inline]
6993    pub unsafe fn set_includeBaseLevelIndices_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
6994        unsafe {
6995            let val: u32 = ::std::mem::transmute(val);
6996            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
6997                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
6998                1usize,
6999                1u8,
7000                val as u64,
7001            )
7002        }
7003    }
7004
7005    #[inline]
7006    pub fn includeFVarBaseLevelIndices(&self) -> ::std::os::raw::c_uint {
7007        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
7008    }
7009
7010    #[inline]
7011    pub fn set_includeFVarBaseLevelIndices(&mut self, val: ::std::os::raw::c_uint) {
7012        unsafe {
7013            let val: u32 = ::std::mem::transmute(val);
7014            self._bitfield_1.set(2usize, 1u8, val as u64)
7015        }
7016    }
7017
7018    #[inline]
7019    pub unsafe fn includeFVarBaseLevelIndices_raw(this: *const Self) -> ::std::os::raw::c_uint {
7020        unsafe {
7021            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7022                ::std::ptr::addr_of!((*this)._bitfield_1),
7023                2usize,
7024                1u8,
7025            ) as u32)
7026        }
7027    }
7028
7029    #[inline]
7030    pub unsafe fn set_includeFVarBaseLevelIndices_raw(
7031        this: *mut Self,
7032        val: ::std::os::raw::c_uint,
7033    ) {
7034        unsafe {
7035            let val: u32 = ::std::mem::transmute(val);
7036            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7037                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7038                2usize,
7039                1u8,
7040                val as u64,
7041            )
7042        }
7043    }
7044
7045    #[inline]
7046    pub fn triangulateQuads(&self) -> ::std::os::raw::c_uint {
7047        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
7048    }
7049
7050    #[inline]
7051    pub fn set_triangulateQuads(&mut self, val: ::std::os::raw::c_uint) {
7052        unsafe {
7053            let val: u32 = ::std::mem::transmute(val);
7054            self._bitfield_1.set(3usize, 1u8, val as u64)
7055        }
7056    }
7057
7058    #[inline]
7059    pub unsafe fn triangulateQuads_raw(this: *const Self) -> ::std::os::raw::c_uint {
7060        unsafe {
7061            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7062                ::std::ptr::addr_of!((*this)._bitfield_1),
7063                3usize,
7064                1u8,
7065            ) as u32)
7066        }
7067    }
7068
7069    #[inline]
7070    pub unsafe fn set_triangulateQuads_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7071        unsafe {
7072            let val: u32 = ::std::mem::transmute(val);
7073            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7074                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7075                3usize,
7076                1u8,
7077                val as u64,
7078            )
7079        }
7080    }
7081
7082    #[inline]
7083    pub fn useSingleCreasePatch(&self) -> ::std::os::raw::c_uint {
7084        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
7085    }
7086
7087    #[inline]
7088    pub fn set_useSingleCreasePatch(&mut self, val: ::std::os::raw::c_uint) {
7089        unsafe {
7090            let val: u32 = ::std::mem::transmute(val);
7091            self._bitfield_1.set(4usize, 1u8, val as u64)
7092        }
7093    }
7094
7095    #[inline]
7096    pub unsafe fn useSingleCreasePatch_raw(this: *const Self) -> ::std::os::raw::c_uint {
7097        unsafe {
7098            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7099                ::std::ptr::addr_of!((*this)._bitfield_1),
7100                4usize,
7101                1u8,
7102            ) as u32)
7103        }
7104    }
7105
7106    #[inline]
7107    pub unsafe fn set_useSingleCreasePatch_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7108        unsafe {
7109            let val: u32 = ::std::mem::transmute(val);
7110            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7111                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7112                4usize,
7113                1u8,
7114                val as u64,
7115            )
7116        }
7117    }
7118
7119    #[inline]
7120    pub fn useInfSharpPatch(&self) -> ::std::os::raw::c_uint {
7121        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
7122    }
7123
7124    #[inline]
7125    pub fn set_useInfSharpPatch(&mut self, val: ::std::os::raw::c_uint) {
7126        unsafe {
7127            let val: u32 = ::std::mem::transmute(val);
7128            self._bitfield_1.set(5usize, 1u8, val as u64)
7129        }
7130    }
7131
7132    #[inline]
7133    pub unsafe fn useInfSharpPatch_raw(this: *const Self) -> ::std::os::raw::c_uint {
7134        unsafe {
7135            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7136                ::std::ptr::addr_of!((*this)._bitfield_1),
7137                5usize,
7138                1u8,
7139            ) as u32)
7140        }
7141    }
7142
7143    #[inline]
7144    pub unsafe fn set_useInfSharpPatch_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7145        unsafe {
7146            let val: u32 = ::std::mem::transmute(val);
7147            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7148                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7149                5usize,
7150                1u8,
7151                val as u64,
7152            )
7153        }
7154    }
7155
7156    #[inline]
7157    pub fn maxIsolationLevel(&self) -> ::std::os::raw::c_uint {
7158        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 4u8) as u32) }
7159    }
7160
7161    #[inline]
7162    pub fn set_maxIsolationLevel(&mut self, val: ::std::os::raw::c_uint) {
7163        unsafe {
7164            let val: u32 = ::std::mem::transmute(val);
7165            self._bitfield_1.set(6usize, 4u8, val as u64)
7166        }
7167    }
7168
7169    #[inline]
7170    pub unsafe fn maxIsolationLevel_raw(this: *const Self) -> ::std::os::raw::c_uint {
7171        unsafe {
7172            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7173                ::std::ptr::addr_of!((*this)._bitfield_1),
7174                6usize,
7175                4u8,
7176            ) as u32)
7177        }
7178    }
7179
7180    #[inline]
7181    pub unsafe fn set_maxIsolationLevel_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7182        unsafe {
7183            let val: u32 = ::std::mem::transmute(val);
7184            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7185                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7186                6usize,
7187                4u8,
7188                val as u64,
7189            )
7190        }
7191    }
7192
7193    #[inline]
7194    pub fn endCapType(&self) -> ::std::os::raw::c_uint {
7195        unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 3u8) as u32) }
7196    }
7197
7198    #[inline]
7199    pub fn set_endCapType(&mut self, val: ::std::os::raw::c_uint) {
7200        unsafe {
7201            let val: u32 = ::std::mem::transmute(val);
7202            self._bitfield_1.set(10usize, 3u8, val as u64)
7203        }
7204    }
7205
7206    #[inline]
7207    pub unsafe fn endCapType_raw(this: *const Self) -> ::std::os::raw::c_uint {
7208        unsafe {
7209            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7210                ::std::ptr::addr_of!((*this)._bitfield_1),
7211                10usize,
7212                3u8,
7213            ) as u32)
7214        }
7215    }
7216
7217    #[inline]
7218    pub unsafe fn set_endCapType_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7219        unsafe {
7220            let val: u32 = ::std::mem::transmute(val);
7221            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7222                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7223                10usize,
7224                3u8,
7225                val as u64,
7226            )
7227        }
7228    }
7229
7230    #[inline]
7231    pub fn shareEndCapPatchPoints(&self) -> ::std::os::raw::c_uint {
7232        unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u32) }
7233    }
7234
7235    #[inline]
7236    pub fn set_shareEndCapPatchPoints(&mut self, val: ::std::os::raw::c_uint) {
7237        unsafe {
7238            let val: u32 = ::std::mem::transmute(val);
7239            self._bitfield_1.set(13usize, 1u8, val as u64)
7240        }
7241    }
7242
7243    #[inline]
7244    pub unsafe fn shareEndCapPatchPoints_raw(this: *const Self) -> ::std::os::raw::c_uint {
7245        unsafe {
7246            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7247                ::std::ptr::addr_of!((*this)._bitfield_1),
7248                13usize,
7249                1u8,
7250            ) as u32)
7251        }
7252    }
7253
7254    #[inline]
7255    pub unsafe fn set_shareEndCapPatchPoints_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7256        unsafe {
7257            let val: u32 = ::std::mem::transmute(val);
7258            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7259                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7260                13usize,
7261                1u8,
7262                val as u64,
7263            )
7264        }
7265    }
7266
7267    #[inline]
7268    pub fn generateVaryingTables(&self) -> ::std::os::raw::c_uint {
7269        unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u32) }
7270    }
7271
7272    #[inline]
7273    pub fn set_generateVaryingTables(&mut self, val: ::std::os::raw::c_uint) {
7274        unsafe {
7275            let val: u32 = ::std::mem::transmute(val);
7276            self._bitfield_1.set(14usize, 1u8, val as u64)
7277        }
7278    }
7279
7280    #[inline]
7281    pub unsafe fn generateVaryingTables_raw(this: *const Self) -> ::std::os::raw::c_uint {
7282        unsafe {
7283            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7284                ::std::ptr::addr_of!((*this)._bitfield_1),
7285                14usize,
7286                1u8,
7287            ) as u32)
7288        }
7289    }
7290
7291    #[inline]
7292    pub unsafe fn set_generateVaryingTables_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7293        unsafe {
7294            let val: u32 = ::std::mem::transmute(val);
7295            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7296                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7297                14usize,
7298                1u8,
7299                val as u64,
7300            )
7301        }
7302    }
7303
7304    #[inline]
7305    pub fn generateVaryingLocalPoints(&self) -> ::std::os::raw::c_uint {
7306        unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u32) }
7307    }
7308
7309    #[inline]
7310    pub fn set_generateVaryingLocalPoints(&mut self, val: ::std::os::raw::c_uint) {
7311        unsafe {
7312            let val: u32 = ::std::mem::transmute(val);
7313            self._bitfield_1.set(15usize, 1u8, val as u64)
7314        }
7315    }
7316
7317    #[inline]
7318    pub unsafe fn generateVaryingLocalPoints_raw(this: *const Self) -> ::std::os::raw::c_uint {
7319        unsafe {
7320            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7321                ::std::ptr::addr_of!((*this)._bitfield_1),
7322                15usize,
7323                1u8,
7324            ) as u32)
7325        }
7326    }
7327
7328    #[inline]
7329    pub unsafe fn set_generateVaryingLocalPoints_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7330        unsafe {
7331            let val: u32 = ::std::mem::transmute(val);
7332            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7333                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7334                15usize,
7335                1u8,
7336                val as u64,
7337            )
7338        }
7339    }
7340
7341    #[inline]
7342    pub fn generateFVarTables(&self) -> ::std::os::raw::c_uint {
7343        unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 1u8) as u32) }
7344    }
7345
7346    #[inline]
7347    pub fn set_generateFVarTables(&mut self, val: ::std::os::raw::c_uint) {
7348        unsafe {
7349            let val: u32 = ::std::mem::transmute(val);
7350            self._bitfield_1.set(16usize, 1u8, val as u64)
7351        }
7352    }
7353
7354    #[inline]
7355    pub unsafe fn generateFVarTables_raw(this: *const Self) -> ::std::os::raw::c_uint {
7356        unsafe {
7357            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7358                ::std::ptr::addr_of!((*this)._bitfield_1),
7359                16usize,
7360                1u8,
7361            ) as u32)
7362        }
7363    }
7364
7365    #[inline]
7366    pub unsafe fn set_generateFVarTables_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7367        unsafe {
7368            let val: u32 = ::std::mem::transmute(val);
7369            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7370                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7371                16usize,
7372                1u8,
7373                val as u64,
7374            )
7375        }
7376    }
7377
7378    #[inline]
7379    pub fn patchPrecisionDouble(&self) -> ::std::os::raw::c_uint {
7380        unsafe { ::std::mem::transmute(self._bitfield_1.get(17usize, 1u8) as u32) }
7381    }
7382
7383    #[inline]
7384    pub fn set_patchPrecisionDouble(&mut self, val: ::std::os::raw::c_uint) {
7385        unsafe {
7386            let val: u32 = ::std::mem::transmute(val);
7387            self._bitfield_1.set(17usize, 1u8, val as u64)
7388        }
7389    }
7390
7391    #[inline]
7392    pub unsafe fn patchPrecisionDouble_raw(this: *const Self) -> ::std::os::raw::c_uint {
7393        unsafe {
7394            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7395                ::std::ptr::addr_of!((*this)._bitfield_1),
7396                17usize,
7397                1u8,
7398            ) as u32)
7399        }
7400    }
7401
7402    #[inline]
7403    pub unsafe fn set_patchPrecisionDouble_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7404        unsafe {
7405            let val: u32 = ::std::mem::transmute(val);
7406            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7407                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7408                17usize,
7409                1u8,
7410                val as u64,
7411            )
7412        }
7413    }
7414
7415    #[inline]
7416    pub fn fvarPatchPrecisionDouble(&self) -> ::std::os::raw::c_uint {
7417        unsafe { ::std::mem::transmute(self._bitfield_1.get(18usize, 1u8) as u32) }
7418    }
7419
7420    #[inline]
7421    pub fn set_fvarPatchPrecisionDouble(&mut self, val: ::std::os::raw::c_uint) {
7422        unsafe {
7423            let val: u32 = ::std::mem::transmute(val);
7424            self._bitfield_1.set(18usize, 1u8, val as u64)
7425        }
7426    }
7427
7428    #[inline]
7429    pub unsafe fn fvarPatchPrecisionDouble_raw(this: *const Self) -> ::std::os::raw::c_uint {
7430        unsafe {
7431            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7432                ::std::ptr::addr_of!((*this)._bitfield_1),
7433                18usize,
7434                1u8,
7435            ) as u32)
7436        }
7437    }
7438
7439    #[inline]
7440    pub unsafe fn set_fvarPatchPrecisionDouble_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7441        unsafe {
7442            let val: u32 = ::std::mem::transmute(val);
7443            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7444                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7445                18usize,
7446                1u8,
7447                val as u64,
7448            )
7449        }
7450    }
7451
7452    #[inline]
7453    pub fn generateFVarLegacyLinearPatches(&self) -> ::std::os::raw::c_uint {
7454        unsafe { ::std::mem::transmute(self._bitfield_1.get(19usize, 1u8) as u32) }
7455    }
7456
7457    #[inline]
7458    pub fn set_generateFVarLegacyLinearPatches(&mut self, val: ::std::os::raw::c_uint) {
7459        unsafe {
7460            let val: u32 = ::std::mem::transmute(val);
7461            self._bitfield_1.set(19usize, 1u8, val as u64)
7462        }
7463    }
7464
7465    #[inline]
7466    pub unsafe fn generateFVarLegacyLinearPatches_raw(this: *const Self) -> ::std::os::raw::c_uint {
7467        unsafe {
7468            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7469                ::std::ptr::addr_of!((*this)._bitfield_1),
7470                19usize,
7471                1u8,
7472            ) as u32)
7473        }
7474    }
7475
7476    #[inline]
7477    pub unsafe fn set_generateFVarLegacyLinearPatches_raw(
7478        this: *mut Self,
7479        val: ::std::os::raw::c_uint,
7480    ) {
7481        unsafe {
7482            let val: u32 = ::std::mem::transmute(val);
7483            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7484                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7485                19usize,
7486                1u8,
7487                val as u64,
7488            )
7489        }
7490    }
7491
7492    #[inline]
7493    pub fn generateLegacySharpCornerPatches(&self) -> ::std::os::raw::c_uint {
7494        unsafe { ::std::mem::transmute(self._bitfield_1.get(20usize, 1u8) as u32) }
7495    }
7496
7497    #[inline]
7498    pub fn set_generateLegacySharpCornerPatches(&mut self, val: ::std::os::raw::c_uint) {
7499        unsafe {
7500            let val: u32 = ::std::mem::transmute(val);
7501            self._bitfield_1.set(20usize, 1u8, val as u64)
7502        }
7503    }
7504
7505    #[inline]
7506    pub unsafe fn generateLegacySharpCornerPatches_raw(
7507        this: *const Self,
7508    ) -> ::std::os::raw::c_uint {
7509        unsafe {
7510            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7511                ::std::ptr::addr_of!((*this)._bitfield_1),
7512                20usize,
7513                1u8,
7514            ) as u32)
7515        }
7516    }
7517
7518    #[inline]
7519    pub unsafe fn set_generateLegacySharpCornerPatches_raw(
7520        this: *mut Self,
7521        val: ::std::os::raw::c_uint,
7522    ) {
7523        unsafe {
7524            let val: u32 = ::std::mem::transmute(val);
7525            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7526                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7527                20usize,
7528                1u8,
7529                val as u64,
7530            )
7531        }
7532    }
7533
7534    #[inline]
7535    pub fn new_bitfield_1(
7536        generateAllLevels: ::std::os::raw::c_uint,
7537        includeBaseLevelIndices: ::std::os::raw::c_uint,
7538        includeFVarBaseLevelIndices: ::std::os::raw::c_uint,
7539        triangulateQuads: ::std::os::raw::c_uint,
7540        useSingleCreasePatch: ::std::os::raw::c_uint,
7541        useInfSharpPatch: ::std::os::raw::c_uint,
7542        maxIsolationLevel: ::std::os::raw::c_uint,
7543        endCapType: ::std::os::raw::c_uint,
7544        shareEndCapPatchPoints: ::std::os::raw::c_uint,
7545        generateVaryingTables: ::std::os::raw::c_uint,
7546        generateVaryingLocalPoints: ::std::os::raw::c_uint,
7547        generateFVarTables: ::std::os::raw::c_uint,
7548        patchPrecisionDouble: ::std::os::raw::c_uint,
7549        fvarPatchPrecisionDouble: ::std::os::raw::c_uint,
7550        generateFVarLegacyLinearPatches: ::std::os::raw::c_uint,
7551        generateLegacySharpCornerPatches: ::std::os::raw::c_uint,
7552    ) -> __BindgenBitfieldUnit<[u8; 3usize]> {
7553        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 3usize]> = Default::default();
7554        __bindgen_bitfield_unit.set(0usize, 1u8, {
7555            let generateAllLevels: u32 = unsafe { ::std::mem::transmute(generateAllLevels) };
7556            generateAllLevels as u64
7557        });
7558        __bindgen_bitfield_unit.set(1usize, 1u8, {
7559            let includeBaseLevelIndices: u32 =
7560                unsafe { ::std::mem::transmute(includeBaseLevelIndices) };
7561            includeBaseLevelIndices as u64
7562        });
7563        __bindgen_bitfield_unit.set(2usize, 1u8, {
7564            let includeFVarBaseLevelIndices: u32 =
7565                unsafe { ::std::mem::transmute(includeFVarBaseLevelIndices) };
7566            includeFVarBaseLevelIndices as u64
7567        });
7568        __bindgen_bitfield_unit.set(3usize, 1u8, {
7569            let triangulateQuads: u32 = unsafe { ::std::mem::transmute(triangulateQuads) };
7570            triangulateQuads as u64
7571        });
7572        __bindgen_bitfield_unit.set(4usize, 1u8, {
7573            let useSingleCreasePatch: u32 = unsafe { ::std::mem::transmute(useSingleCreasePatch) };
7574            useSingleCreasePatch as u64
7575        });
7576        __bindgen_bitfield_unit.set(5usize, 1u8, {
7577            let useInfSharpPatch: u32 = unsafe { ::std::mem::transmute(useInfSharpPatch) };
7578            useInfSharpPatch as u64
7579        });
7580        __bindgen_bitfield_unit.set(6usize, 4u8, {
7581            let maxIsolationLevel: u32 = unsafe { ::std::mem::transmute(maxIsolationLevel) };
7582            maxIsolationLevel as u64
7583        });
7584        __bindgen_bitfield_unit.set(10usize, 3u8, {
7585            let endCapType: u32 = unsafe { ::std::mem::transmute(endCapType) };
7586            endCapType as u64
7587        });
7588        __bindgen_bitfield_unit.set(13usize, 1u8, {
7589            let shareEndCapPatchPoints: u32 =
7590                unsafe { ::std::mem::transmute(shareEndCapPatchPoints) };
7591            shareEndCapPatchPoints as u64
7592        });
7593        __bindgen_bitfield_unit.set(14usize, 1u8, {
7594            let generateVaryingTables: u32 =
7595                unsafe { ::std::mem::transmute(generateVaryingTables) };
7596            generateVaryingTables as u64
7597        });
7598        __bindgen_bitfield_unit.set(15usize, 1u8, {
7599            let generateVaryingLocalPoints: u32 =
7600                unsafe { ::std::mem::transmute(generateVaryingLocalPoints) };
7601            generateVaryingLocalPoints as u64
7602        });
7603        __bindgen_bitfield_unit.set(16usize, 1u8, {
7604            let generateFVarTables: u32 = unsafe { ::std::mem::transmute(generateFVarTables) };
7605            generateFVarTables as u64
7606        });
7607        __bindgen_bitfield_unit.set(17usize, 1u8, {
7608            let patchPrecisionDouble: u32 = unsafe { ::std::mem::transmute(patchPrecisionDouble) };
7609            patchPrecisionDouble as u64
7610        });
7611        __bindgen_bitfield_unit.set(18usize, 1u8, {
7612            let fvarPatchPrecisionDouble: u32 =
7613                unsafe { ::std::mem::transmute(fvarPatchPrecisionDouble) };
7614            fvarPatchPrecisionDouble as u64
7615        });
7616        __bindgen_bitfield_unit.set(19usize, 1u8, {
7617            let generateFVarLegacyLinearPatches: u32 =
7618                unsafe { ::std::mem::transmute(generateFVarLegacyLinearPatches) };
7619            generateFVarLegacyLinearPatches as u64
7620        });
7621        __bindgen_bitfield_unit.set(20usize, 1u8, {
7622            let generateLegacySharpCornerPatches: u32 =
7623                unsafe { ::std::mem::transmute(generateLegacySharpCornerPatches) };
7624            generateLegacySharpCornerPatches as u64
7625        });
7626        __bindgen_bitfield_unit
7627    }
7628}
7629#[doc = " \\brief Obsolete internal struct not intended for public use -- due to\n be deprecated."]
7630#[repr(C)]
7631#[repr(align(4))]
7632#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7633pub struct OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag {
7634    pub _bitfield_align_1: [u8; 0],
7635    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 3usize]>,
7636    pub __bindgen_padding_0: u8,
7637}
7638unsafe extern "C" {
7639    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far17PatchTableFactory12PatchFaceTag5clearEv"]
7640    pub fn OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_clear(
7641        this: *mut OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag,
7642    );
7643}
7644unsafe extern "C" {
7645    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far17PatchTableFactory12PatchFaceTag36assignBoundaryPropertiesFromEdgeMaskEi"]
7646    pub fn OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_assignBoundaryPropertiesFromEdgeMask(
7647        this: *mut OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag,
7648        boundaryEdgeMask: ::std::os::raw::c_int,
7649    );
7650}
7651unsafe extern "C" {
7652    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far17PatchTableFactory12PatchFaceTag38assignBoundaryPropertiesFromVertexMaskEi"]
7653    pub fn OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_assignBoundaryPropertiesFromVertexMask(
7654        this: *mut OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag,
7655        boundaryVertexMask: ::std::os::raw::c_int,
7656    );
7657}
7658unsafe extern "C" {
7659    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far17PatchTableFactory12PatchFaceTag38assignTransitionPropertiesFromEdgeMaskEi"]
7660    pub fn OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_assignTransitionPropertiesFromEdgeMask(
7661        this: *mut OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag,
7662        boundaryVertexMask: ::std::os::raw::c_int,
7663    );
7664}
7665impl OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag {
7666    #[inline]
7667    pub fn _hasPatch(&self) -> ::std::os::raw::c_uint {
7668        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
7669    }
7670
7671    #[inline]
7672    pub fn set__hasPatch(&mut self, val: ::std::os::raw::c_uint) {
7673        unsafe {
7674            let val: u32 = ::std::mem::transmute(val);
7675            self._bitfield_1.set(0usize, 1u8, val as u64)
7676        }
7677    }
7678
7679    #[inline]
7680    pub unsafe fn _hasPatch_raw(this: *const Self) -> ::std::os::raw::c_uint {
7681        unsafe {
7682            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7683                ::std::ptr::addr_of!((*this)._bitfield_1),
7684                0usize,
7685                1u8,
7686            ) as u32)
7687        }
7688    }
7689
7690    #[inline]
7691    pub unsafe fn set__hasPatch_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7692        unsafe {
7693            let val: u32 = ::std::mem::transmute(val);
7694            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7695                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7696                0usize,
7697                1u8,
7698                val as u64,
7699            )
7700        }
7701    }
7702
7703    #[inline]
7704    pub fn _isRegular(&self) -> ::std::os::raw::c_uint {
7705        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
7706    }
7707
7708    #[inline]
7709    pub fn set__isRegular(&mut self, val: ::std::os::raw::c_uint) {
7710        unsafe {
7711            let val: u32 = ::std::mem::transmute(val);
7712            self._bitfield_1.set(1usize, 1u8, val as u64)
7713        }
7714    }
7715
7716    #[inline]
7717    pub unsafe fn _isRegular_raw(this: *const Self) -> ::std::os::raw::c_uint {
7718        unsafe {
7719            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7720                ::std::ptr::addr_of!((*this)._bitfield_1),
7721                1usize,
7722                1u8,
7723            ) as u32)
7724        }
7725    }
7726
7727    #[inline]
7728    pub unsafe fn set__isRegular_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7729        unsafe {
7730            let val: u32 = ::std::mem::transmute(val);
7731            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7732                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7733                1usize,
7734                1u8,
7735                val as u64,
7736            )
7737        }
7738    }
7739
7740    #[inline]
7741    pub fn _transitionMask(&self) -> ::std::os::raw::c_uint {
7742        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 4u8) as u32) }
7743    }
7744
7745    #[inline]
7746    pub fn set__transitionMask(&mut self, val: ::std::os::raw::c_uint) {
7747        unsafe {
7748            let val: u32 = ::std::mem::transmute(val);
7749            self._bitfield_1.set(2usize, 4u8, val as u64)
7750        }
7751    }
7752
7753    #[inline]
7754    pub unsafe fn _transitionMask_raw(this: *const Self) -> ::std::os::raw::c_uint {
7755        unsafe {
7756            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7757                ::std::ptr::addr_of!((*this)._bitfield_1),
7758                2usize,
7759                4u8,
7760            ) as u32)
7761        }
7762    }
7763
7764    #[inline]
7765    pub unsafe fn set__transitionMask_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7766        unsafe {
7767            let val: u32 = ::std::mem::transmute(val);
7768            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7769                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7770                2usize,
7771                4u8,
7772                val as u64,
7773            )
7774        }
7775    }
7776
7777    #[inline]
7778    pub fn _boundaryMask(&self) -> ::std::os::raw::c_uint {
7779        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 4u8) as u32) }
7780    }
7781
7782    #[inline]
7783    pub fn set__boundaryMask(&mut self, val: ::std::os::raw::c_uint) {
7784        unsafe {
7785            let val: u32 = ::std::mem::transmute(val);
7786            self._bitfield_1.set(6usize, 4u8, val as u64)
7787        }
7788    }
7789
7790    #[inline]
7791    pub unsafe fn _boundaryMask_raw(this: *const Self) -> ::std::os::raw::c_uint {
7792        unsafe {
7793            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7794                ::std::ptr::addr_of!((*this)._bitfield_1),
7795                6usize,
7796                4u8,
7797            ) as u32)
7798        }
7799    }
7800
7801    #[inline]
7802    pub unsafe fn set__boundaryMask_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7803        unsafe {
7804            let val: u32 = ::std::mem::transmute(val);
7805            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7806                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7807                6usize,
7808                4u8,
7809                val as u64,
7810            )
7811        }
7812    }
7813
7814    #[inline]
7815    pub fn _boundaryIndex(&self) -> ::std::os::raw::c_uint {
7816        unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 2u8) as u32) }
7817    }
7818
7819    #[inline]
7820    pub fn set__boundaryIndex(&mut self, val: ::std::os::raw::c_uint) {
7821        unsafe {
7822            let val: u32 = ::std::mem::transmute(val);
7823            self._bitfield_1.set(10usize, 2u8, val as u64)
7824        }
7825    }
7826
7827    #[inline]
7828    pub unsafe fn _boundaryIndex_raw(this: *const Self) -> ::std::os::raw::c_uint {
7829        unsafe {
7830            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7831                ::std::ptr::addr_of!((*this)._bitfield_1),
7832                10usize,
7833                2u8,
7834            ) as u32)
7835        }
7836    }
7837
7838    #[inline]
7839    pub unsafe fn set__boundaryIndex_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7840        unsafe {
7841            let val: u32 = ::std::mem::transmute(val);
7842            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7843                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7844                10usize,
7845                2u8,
7846                val as u64,
7847            )
7848        }
7849    }
7850
7851    #[inline]
7852    pub fn _boundaryCount(&self) -> ::std::os::raw::c_uint {
7853        unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 3u8) as u32) }
7854    }
7855
7856    #[inline]
7857    pub fn set__boundaryCount(&mut self, val: ::std::os::raw::c_uint) {
7858        unsafe {
7859            let val: u32 = ::std::mem::transmute(val);
7860            self._bitfield_1.set(12usize, 3u8, val as u64)
7861        }
7862    }
7863
7864    #[inline]
7865    pub unsafe fn _boundaryCount_raw(this: *const Self) -> ::std::os::raw::c_uint {
7866        unsafe {
7867            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7868                ::std::ptr::addr_of!((*this)._bitfield_1),
7869                12usize,
7870                3u8,
7871            ) as u32)
7872        }
7873    }
7874
7875    #[inline]
7876    pub unsafe fn set__boundaryCount_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7877        unsafe {
7878            let val: u32 = ::std::mem::transmute(val);
7879            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7880                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7881                12usize,
7882                3u8,
7883                val as u64,
7884            )
7885        }
7886    }
7887
7888    #[inline]
7889    pub fn _hasBoundaryEdge(&self) -> ::std::os::raw::c_uint {
7890        unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 3u8) as u32) }
7891    }
7892
7893    #[inline]
7894    pub fn set__hasBoundaryEdge(&mut self, val: ::std::os::raw::c_uint) {
7895        unsafe {
7896            let val: u32 = ::std::mem::transmute(val);
7897            self._bitfield_1.set(15usize, 3u8, val as u64)
7898        }
7899    }
7900
7901    #[inline]
7902    pub unsafe fn _hasBoundaryEdge_raw(this: *const Self) -> ::std::os::raw::c_uint {
7903        unsafe {
7904            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7905                ::std::ptr::addr_of!((*this)._bitfield_1),
7906                15usize,
7907                3u8,
7908            ) as u32)
7909        }
7910    }
7911
7912    #[inline]
7913    pub unsafe fn set__hasBoundaryEdge_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7914        unsafe {
7915            let val: u32 = ::std::mem::transmute(val);
7916            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7917                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7918                15usize,
7919                3u8,
7920                val as u64,
7921            )
7922        }
7923    }
7924
7925    #[inline]
7926    pub fn _isSingleCrease(&self) -> ::std::os::raw::c_uint {
7927        unsafe { ::std::mem::transmute(self._bitfield_1.get(18usize, 1u8) as u32) }
7928    }
7929
7930    #[inline]
7931    pub fn set__isSingleCrease(&mut self, val: ::std::os::raw::c_uint) {
7932        unsafe {
7933            let val: u32 = ::std::mem::transmute(val);
7934            self._bitfield_1.set(18usize, 1u8, val as u64)
7935        }
7936    }
7937
7938    #[inline]
7939    pub unsafe fn _isSingleCrease_raw(this: *const Self) -> ::std::os::raw::c_uint {
7940        unsafe {
7941            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 3usize]>>::raw_get(
7942                ::std::ptr::addr_of!((*this)._bitfield_1),
7943                18usize,
7944                1u8,
7945            ) as u32)
7946        }
7947    }
7948
7949    #[inline]
7950    pub unsafe fn set__isSingleCrease_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
7951        unsafe {
7952            let val: u32 = ::std::mem::transmute(val);
7953            <__BindgenBitfieldUnit<[u8; 3usize]>>::raw_set(
7954                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
7955                18usize,
7956                1u8,
7957                val as u64,
7958            )
7959        }
7960    }
7961
7962    #[inline]
7963    pub fn new_bitfield_1(
7964        _hasPatch: ::std::os::raw::c_uint,
7965        _isRegular: ::std::os::raw::c_uint,
7966        _transitionMask: ::std::os::raw::c_uint,
7967        _boundaryMask: ::std::os::raw::c_uint,
7968        _boundaryIndex: ::std::os::raw::c_uint,
7969        _boundaryCount: ::std::os::raw::c_uint,
7970        _hasBoundaryEdge: ::std::os::raw::c_uint,
7971        _isSingleCrease: ::std::os::raw::c_uint,
7972    ) -> __BindgenBitfieldUnit<[u8; 3usize]> {
7973        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 3usize]> = Default::default();
7974        __bindgen_bitfield_unit.set(0usize, 1u8, {
7975            let _hasPatch: u32 = unsafe { ::std::mem::transmute(_hasPatch) };
7976            _hasPatch as u64
7977        });
7978        __bindgen_bitfield_unit.set(1usize, 1u8, {
7979            let _isRegular: u32 = unsafe { ::std::mem::transmute(_isRegular) };
7980            _isRegular as u64
7981        });
7982        __bindgen_bitfield_unit.set(2usize, 4u8, {
7983            let _transitionMask: u32 = unsafe { ::std::mem::transmute(_transitionMask) };
7984            _transitionMask as u64
7985        });
7986        __bindgen_bitfield_unit.set(6usize, 4u8, {
7987            let _boundaryMask: u32 = unsafe { ::std::mem::transmute(_boundaryMask) };
7988            _boundaryMask as u64
7989        });
7990        __bindgen_bitfield_unit.set(10usize, 2u8, {
7991            let _boundaryIndex: u32 = unsafe { ::std::mem::transmute(_boundaryIndex) };
7992            _boundaryIndex as u64
7993        });
7994        __bindgen_bitfield_unit.set(12usize, 3u8, {
7995            let _boundaryCount: u32 = unsafe { ::std::mem::transmute(_boundaryCount) };
7996            _boundaryCount as u64
7997        });
7998        __bindgen_bitfield_unit.set(15usize, 3u8, {
7999            let _hasBoundaryEdge: u32 = unsafe { ::std::mem::transmute(_hasBoundaryEdge) };
8000            _hasBoundaryEdge as u64
8001        });
8002        __bindgen_bitfield_unit.set(18usize, 1u8, {
8003            let _isSingleCrease: u32 = unsafe { ::std::mem::transmute(_isSingleCrease) };
8004            _isSingleCrease as u64
8005        });
8006        __bindgen_bitfield_unit
8007    }
8008
8009    #[inline]
8010    pub unsafe fn clear(&mut self) {
8011        OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_clear(self)
8012    }
8013
8014    #[inline]
8015    pub unsafe fn assignBoundaryPropertiesFromEdgeMask(
8016        &mut self,
8017        boundaryEdgeMask: ::std::os::raw::c_int,
8018    ) {
8019        OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_assignBoundaryPropertiesFromEdgeMask(
8020            self,
8021            boundaryEdgeMask,
8022        )
8023    }
8024
8025    #[inline]
8026    pub unsafe fn assignBoundaryPropertiesFromVertexMask(
8027        &mut self,
8028        boundaryVertexMask: ::std::os::raw::c_int,
8029    ) {
8030        OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_assignBoundaryPropertiesFromVertexMask(
8031            self,
8032            boundaryVertexMask,
8033        )
8034    }
8035
8036    #[inline]
8037    pub unsafe fn assignTransitionPropertiesFromEdgeMask(
8038        &mut self,
8039        boundaryVertexMask: ::std::os::raw::c_int,
8040    ) {
8041        OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchFaceTag_assignTransitionPropertiesFromEdgeMask(
8042            self,
8043            boundaryVertexMask,
8044        )
8045    }
8046}
8047pub type OpenSubdiv_v3_7_0_Far_PatchTableFactory_PatchTagVector = u8;
8048unsafe extern "C" {
8049    #[doc = " \\brief Instantiates a PatchTable from a client-provided TopologyRefiner.\n\n  A PatchTable can be constructed from a TopologyRefiner that has been\n  either adaptively or uniformly refined.  In both cases, the resulting\n  patches reference vertices in the various refined levels by index,\n  and those indices accumulate with the levels in different ways.\n\n  For adaptively refined patches, patches are defined at different levels,\n  including the base level, so the indices of patch vertices include\n  vertices from all levels.  A sparse set of patches can be created by\n  restricting the patches generated to those descending from a given set\n  of faces at the base level.  This sparse set of base faces is expected\n  to be a subset of the faces that were adaptively refined in the given\n  TopologyRefiner, otherwise results are undefined.\n\n  For uniformly refined patches, all patches are completely defined within\n  the last level.  There is often no use for intermediate levels and they\n  can usually be ignored.  Indices of patch vertices might therefore be\n  expected to be defined solely within the last level.  While this is true\n  for face-varying patches, for historical reasons it is not the case for\n  vertex and varying patches.  Indices for vertex and varying patches include\n  the base level in addition to the last level while indices for face-varying\n  patches include only the last level.\n\n @param refiner        TopologyRefiner from which to generate patches\n\n @param options        Options controlling the creation of the table\n\n @param selectedFaces  Only create patches for the given set of base faces.\n\n @return               A new instance of PatchTable\n"]
8050    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Far17PatchTableFactory6CreateERKNS1_15TopologyRefinerENS2_7OptionsENS0_3Vtr10ConstArrayIiEE"]
8051    pub fn OpenSubdiv_v3_7_0_Far_PatchTableFactory_Create(
8052        refiner: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
8053        options: OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options,
8054        selectedFaces: OpenSubdiv_v3_7_0_Far_ConstIndexArray,
8055    ) -> *mut OpenSubdiv_v3_7_0_Far_PatchTable;
8056}
8057impl OpenSubdiv_v3_7_0_Far_PatchTableFactory {
8058    #[inline]
8059    pub unsafe fn Create(
8060        refiner: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
8061        options: OpenSubdiv_v3_7_0_Far_PatchTableFactory_Options,
8062        selectedFaces: OpenSubdiv_v3_7_0_Far_ConstIndexArray,
8063    ) -> *mut OpenSubdiv_v3_7_0_Far_PatchTable {
8064        OpenSubdiv_v3_7_0_Far_PatchTableFactory_Create(refiner, options, selectedFaces)
8065    }
8066}
8067#[doc = "\n @brief Simple class defining the 2D parameterization of a face\n\n Parameterization is a simple class that provides information about the\n parameterization of a face in a local (u,v) coordinate system. It is\n defined by the size of a face (i.e. its number of vertices) and the\n subdivision scheme that determines its limit surface.\n\n As an example of how the subdivision scheme is essential in determining\n the Parameterization, consider the case of a triangle.  A triangle is\n regular for the Loop scheme and so has a very simple parameterization\n as a triangular patch. But for the Catmull-Clark scheme, a triangle is\n an irregular face that must first be subdivided -- making its limit\n surface a piecewise collection of quadrilateral patches.\n"]
8068#[repr(C)]
8069#[derive(Debug, Hash, PartialEq, Eq)]
8070pub struct OpenSubdiv_v3_7_0_Bfr_Parameterization {
8071    pub _type: ::std::os::raw::c_uchar,
8072    pub _uDim: ::std::os::raw::c_uchar,
8073    pub _faceSize: ::std::os::raw::c_ushort,
8074}
8075#[doc = "<  Quadrilateral"]
8076pub const OpenSubdiv_v3_7_0_Bfr_Parameterization_Type_QUAD:
8077    OpenSubdiv_v3_7_0_Bfr_Parameterization_Type = 0;
8078#[doc = "<  Triangle"]
8079pub const OpenSubdiv_v3_7_0_Bfr_Parameterization_Type_TRI:
8080    OpenSubdiv_v3_7_0_Bfr_Parameterization_Type = 1;
8081#[doc = "<  Partitioned into quadrilateral sub-faces"]
8082pub const OpenSubdiv_v3_7_0_Bfr_Parameterization_Type_QUAD_SUBFACES:
8083    OpenSubdiv_v3_7_0_Bfr_Parameterization_Type = 2;
8084#[doc = "\n @brief Enumerated type for the different kinds of Parameterizations.\n\n The three kinds of parameterizations defined are:  quadrilateral,\n triangle and quadrangulated sub-faces.  This is not intended for\n common use, but is publicly available for situations when it is\n necessary to distinguish:\n"]
8085pub type OpenSubdiv_v3_7_0_Bfr_Parameterization_Type = ::std::os::raw::c_uint;
8086unsafe extern "C" {
8087    #[doc = " @brief Primary constructor with subdivision scheme and face size"]
8088    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr16ParameterizationC1ENS0_3Sdc10SchemeTypeEi"]
8089    pub fn OpenSubdiv_v3_7_0_Bfr_Parameterization_Parameterization(
8090        this: *mut OpenSubdiv_v3_7_0_Bfr_Parameterization,
8091        scheme: OpenSubdiv_v3_7_0_Sdc_SchemeType,
8092        faceSize: ::std::os::raw::c_int,
8093    );
8094}
8095impl OpenSubdiv_v3_7_0_Bfr_Parameterization {
8096    #[inline]
8097    pub unsafe fn new(
8098        scheme: OpenSubdiv_v3_7_0_Sdc_SchemeType,
8099        faceSize: ::std::os::raw::c_int,
8100    ) -> Self {
8101        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
8102        OpenSubdiv_v3_7_0_Bfr_Parameterization_Parameterization(
8103            __bindgen_tmp.as_mut_ptr(),
8104            scheme,
8105            faceSize,
8106        );
8107        __bindgen_tmp.assume_init()
8108    }
8109}
8110#[repr(C)]
8111#[derive(Debug, Copy, Clone)]
8112pub struct OpenSubdiv_v3_7_0_Bfr_PatchTree {
8113    _unused: [u8; 0],
8114}
8115pub type OpenSubdiv_v3_7_0_Bfr_internal_IrregularPatchType = OpenSubdiv_v3_7_0_Bfr_PatchTree;
8116pub type OpenSubdiv_v3_7_0_Bfr_internal_IrregularPatchSharedPtr = __BindgenOpaqueArray<u64, 2usize>;
8117#[repr(C)]
8118pub struct OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData {
8119    pub _cvIndices: OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_CVIndexArray,
8120    pub _param: OpenSubdiv_v3_7_0_Bfr_Parameterization,
8121    pub _bitfield_align_1: [u8; 0],
8122    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
8123    pub _regPatchType: ::std::os::raw::c_uchar,
8124    pub _regPatchMask: ::std::os::raw::c_uchar,
8125    pub _irregPatch: OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_IrregPatchPtr,
8126}
8127pub type OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_Index = ::std::os::raw::c_int;
8128pub type OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_IrregPatchType =
8129    OpenSubdiv_v3_7_0_Bfr_internal_IrregularPatchType;
8130pub type OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_IrregPatchPtr =
8131    OpenSubdiv_v3_7_0_Bfr_internal_IrregularPatchSharedPtr;
8132pub type OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_CVIndexArray =
8133    __BindgenOpaqueArray<u64, 13usize>;
8134unsafe extern "C" {
8135    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr8internal11SurfaceData10invalidateEv"]
8136    pub fn OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_invalidate(
8137        this: *mut OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData,
8138    );
8139}
8140unsafe extern "C" {
8141    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr8internal11SurfaceDataC1Ev"]
8142    pub fn OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_SurfaceData(
8143        this: *mut OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData,
8144    );
8145}
8146impl OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData {
8147    #[inline]
8148    pub fn _isValid(&self) -> ::std::os::raw::c_uchar {
8149        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
8150    }
8151
8152    #[inline]
8153    pub fn set__isValid(&mut self, val: ::std::os::raw::c_uchar) {
8154        unsafe {
8155            let val: u8 = ::std::mem::transmute(val);
8156            self._bitfield_1.set(0usize, 1u8, val as u64)
8157        }
8158    }
8159
8160    #[inline]
8161    pub unsafe fn _isValid_raw(this: *const Self) -> ::std::os::raw::c_uchar {
8162        unsafe {
8163            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8164                ::std::ptr::addr_of!((*this)._bitfield_1),
8165                0usize,
8166                1u8,
8167            ) as u8)
8168        }
8169    }
8170
8171    #[inline]
8172    pub unsafe fn set__isValid_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
8173        unsafe {
8174            let val: u8 = ::std::mem::transmute(val);
8175            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8176                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8177                0usize,
8178                1u8,
8179                val as u64,
8180            )
8181        }
8182    }
8183
8184    #[inline]
8185    pub fn _isDouble(&self) -> ::std::os::raw::c_uchar {
8186        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
8187    }
8188
8189    #[inline]
8190    pub fn set__isDouble(&mut self, val: ::std::os::raw::c_uchar) {
8191        unsafe {
8192            let val: u8 = ::std::mem::transmute(val);
8193            self._bitfield_1.set(1usize, 1u8, val as u64)
8194        }
8195    }
8196
8197    #[inline]
8198    pub unsafe fn _isDouble_raw(this: *const Self) -> ::std::os::raw::c_uchar {
8199        unsafe {
8200            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8201                ::std::ptr::addr_of!((*this)._bitfield_1),
8202                1usize,
8203                1u8,
8204            ) as u8)
8205        }
8206    }
8207
8208    #[inline]
8209    pub unsafe fn set__isDouble_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
8210        unsafe {
8211            let val: u8 = ::std::mem::transmute(val);
8212            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8213                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8214                1usize,
8215                1u8,
8216                val as u64,
8217            )
8218        }
8219    }
8220
8221    #[inline]
8222    pub fn _isRegular(&self) -> ::std::os::raw::c_uchar {
8223        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
8224    }
8225
8226    #[inline]
8227    pub fn set__isRegular(&mut self, val: ::std::os::raw::c_uchar) {
8228        unsafe {
8229            let val: u8 = ::std::mem::transmute(val);
8230            self._bitfield_1.set(2usize, 1u8, val as u64)
8231        }
8232    }
8233
8234    #[inline]
8235    pub unsafe fn _isRegular_raw(this: *const Self) -> ::std::os::raw::c_uchar {
8236        unsafe {
8237            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8238                ::std::ptr::addr_of!((*this)._bitfield_1),
8239                2usize,
8240                1u8,
8241            ) as u8)
8242        }
8243    }
8244
8245    #[inline]
8246    pub unsafe fn set__isRegular_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
8247        unsafe {
8248            let val: u8 = ::std::mem::transmute(val);
8249            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8250                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8251                2usize,
8252                1u8,
8253                val as u64,
8254            )
8255        }
8256    }
8257
8258    #[inline]
8259    pub fn _isLinear(&self) -> ::std::os::raw::c_uchar {
8260        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
8261    }
8262
8263    #[inline]
8264    pub fn set__isLinear(&mut self, val: ::std::os::raw::c_uchar) {
8265        unsafe {
8266            let val: u8 = ::std::mem::transmute(val);
8267            self._bitfield_1.set(3usize, 1u8, val as u64)
8268        }
8269    }
8270
8271    #[inline]
8272    pub unsafe fn _isLinear_raw(this: *const Self) -> ::std::os::raw::c_uchar {
8273        unsafe {
8274            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8275                ::std::ptr::addr_of!((*this)._bitfield_1),
8276                3usize,
8277                1u8,
8278            ) as u8)
8279        }
8280    }
8281
8282    #[inline]
8283    pub unsafe fn set__isLinear_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
8284        unsafe {
8285            let val: u8 = ::std::mem::transmute(val);
8286            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8287                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8288                3usize,
8289                1u8,
8290                val as u64,
8291            )
8292        }
8293    }
8294
8295    #[inline]
8296    pub fn new_bitfield_1(
8297        _isValid: ::std::os::raw::c_uchar,
8298        _isDouble: ::std::os::raw::c_uchar,
8299        _isRegular: ::std::os::raw::c_uchar,
8300        _isLinear: ::std::os::raw::c_uchar,
8301    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
8302        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
8303        __bindgen_bitfield_unit.set(0usize, 1u8, {
8304            let _isValid: u8 = unsafe { ::std::mem::transmute(_isValid) };
8305            _isValid as u64
8306        });
8307        __bindgen_bitfield_unit.set(1usize, 1u8, {
8308            let _isDouble: u8 = unsafe { ::std::mem::transmute(_isDouble) };
8309            _isDouble as u64
8310        });
8311        __bindgen_bitfield_unit.set(2usize, 1u8, {
8312            let _isRegular: u8 = unsafe { ::std::mem::transmute(_isRegular) };
8313            _isRegular as u64
8314        });
8315        __bindgen_bitfield_unit.set(3usize, 1u8, {
8316            let _isLinear: u8 = unsafe { ::std::mem::transmute(_isLinear) };
8317            _isLinear as u64
8318        });
8319        __bindgen_bitfield_unit
8320    }
8321
8322    #[inline]
8323    pub unsafe fn invalidate(&mut self) {
8324        OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_invalidate(self)
8325    }
8326
8327    #[inline]
8328    pub unsafe fn new() -> Self {
8329        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
8330        OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData_SurfaceData(__bindgen_tmp.as_mut_ptr());
8331        __bindgen_tmp.assume_init()
8332    }
8333}
8334#[doc = "\n @brief Encapsulates the limit surface for a face of a mesh\n\n The Surface class encapsulates the limit surface for a face of a mesh\n for any data interpolation type (vertex, varying and face-varying) and\n provides the public interface for its evaluation. Surface is a class\n template parameterized to support evaluation in single or double\n precision.\n\n @tparam REAL  Floating point precision (float or double only)\n\n Instances of Surface are created or initialized by a subclass of the\n SurfaceFactory. Since existing instances can be re-initialized, they\n should be tested for validity after such re-initialization.\n\n All Surfaces are assigned a Parameterization based on the subdivision\n scheme and the size of the face, which can then be used for evaluation\n and tessellation of the surface.\n"]
8335#[repr(C)]
8336pub struct OpenSubdiv_v3_7_0_Bfr_Surface {
8337    pub _data: OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData,
8338}
8339#[doc = " @brief Simple struct defining the size and stride of points in\n        arrays."]
8340#[repr(C)]
8341#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8342pub struct OpenSubdiv_v3_7_0_Bfr_Surface_PointDescriptor {
8343    pub size: ::std::os::raw::c_int,
8344    pub stride: ::std::os::raw::c_int,
8345}
8346#[doc = " @brief Integer type representing a mesh index"]
8347pub type OpenSubdiv_v3_7_0_Bfr_Surface_Index = ::std::os::raw::c_int;
8348pub type OpenSubdiv_v3_7_0_Bfr_Surface_IndexArray =
8349    OpenSubdiv_v3_7_0_Vtr_ConstArray<::std::os::raw::c_int>;
8350#[repr(C)]
8351#[derive(Debug, Copy, Clone)]
8352pub struct OpenSubdiv_v3_7_0_Bfr_VertexDescriptor {
8353    _unused: [u8; 0],
8354}
8355#[repr(C)]
8356pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter__bindgen_vtable(::std::os::raw::c_void);
8357#[doc = "\n @brief Abstract interface adapting SurfaceFactory to a connected mesh\n        representation\n"]
8358#[repr(C)]
8359#[derive(Debug, Hash, PartialEq, Eq)]
8360pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter {
8361    pub vtable_: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter__bindgen_vtable,
8362}
8363#[doc = " @brief Integer type representing a mesh index"]
8364pub type OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index = ::std::os::raw::c_int;
8365#[doc = " @brief Type used to identify and specify face-varying primvars\n\n A face-varying ID is used to specify face-varying primvars for\n evaluation so that they can be identified by the subclass for\n the mesh.  It can be assigned as either a positive integer ID\n or pointer, with the subclass determining its interpretation.\n\n Often only one face-varying primvar is of interest, so a default\n can be assigned to the factory to avoid repeated specification.\n"]
8366pub type OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_FVarID = ::std::os::raw::c_long;
8367#[repr(C)]
8368#[derive(Debug, Copy, Clone)]
8369pub struct OpenSubdiv_v3_7_0_Bfr_FaceTopology {
8370    _unused: [u8; 0],
8371}
8372#[repr(C)]
8373#[derive(Debug, Copy, Clone)]
8374pub struct OpenSubdiv_v3_7_0_Bfr_FaceSurface {
8375    _unused: [u8; 0],
8376}
8377#[doc = "\n @brief Base class providing initialization of a Surface for each face\n        of a mesh\n\n SurfaceFactory is an abstract class that provides the majority of\n the implementation and the interface for a factory that initializes\n instances of Surface for the faces of a mesh.\n\n A subclass of SurfaceFactory is written to support a specific type\n of connected mesh. The public interface of SurfaceFactory is both\n inherited by and extended by the subclasses. Expected extensions to\n the interface include one or more constructors (i.e. given a specific\n instance of the subclass' mesh type) as well as other methods that\n may involve the mesh's data types (primvars) in their native form.\n\n By inheriting the SurfaceFactoryMeshAdapter interface, SurfaceFactory\n requires its subclasses to implement the small suite of pure\n virtual methods to complete the factory's implementation for the\n subclass' mesh type. These methods provide the base factory with\n topological information about faces of that mesh -- from which it\n creates instances of Surface defining their limit surface.\n\n The SurfaceFactory inherits rather than contains SurfaceFactoryMeshAdapter\n as instances of SurfaceFactoryMeshAdapter serve no purpose on their own,\n and the interface between the two is designed with the specific needs\n of the SurfaceFactory. When customizing a subclass of SurfaceFactory\n for a particular mesh type, this inheritance also avoids the need to\n coordinate the subclass of SurfaceFactory with the separate subclass\n of SurfaceFactoryMeshAdapter.\n\n It must be emphasized that a subclass of SurfaceFactory is written to\n support a specific type of \"connected\" mesh -- not simply a container\n of data defining a mesh. The SurfaceFactoryMeshAdapter interface describes\n the complete topological neighborhood around a specific face, and\n without any connectivity between mesh components (e.g. given a vertex,\n what are its incident faces?), satisfying these methods will be\n impossible, or, at best, extremely inefficient.\n\n Ultimately a subclass of SurfaceFactory is expected to be a lightweight\n interface to a connected mesh -- lightweight in terms of both time and\n memory usage. It's construction is expected to be trivial, after which\n it can quickly and efficiently provide a Surface for one or more faces\n of a mesh for immediate evaluation. So construction of an instance of\n a subclass should involve no heavy pre-processing -- the greater the\n overhead of a subclass constructor, the more it violates the intention\n of the base class as a lightweight interface.\n\n Instances of SurfaceFactory are initialized with a set of Options that\n form part of the state of the factory and remain fixed for its lifetime.\n Such options are intended to ensure that the instances of Surface that\n it creates are consistent, as well as to enable/disable or otherwise\n manage caching for construction efficiency -- either internally or\n between itself and other factories (advanced).\n"]
8378#[repr(C)]
8379#[derive(Debug, Hash, PartialEq, Eq)]
8380pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactory {
8381    pub _base: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter,
8382    pub _subdivScheme: OpenSubdiv_v3_7_0_Sdc_SchemeType,
8383    pub _subdivOptions: OpenSubdiv_v3_7_0_Sdc_Options,
8384    pub _factoryOptions: OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options,
8385    pub _bitfield_align_1: [u8; 0],
8386    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
8387    pub _regFaceSize: ::std::os::raw::c_int,
8388    pub _topologyCache: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8389}
8390#[doc = "\n @brief Simple set of options assigned to instances of SurfaceFactory\n\n The Options class is a simple container specifying options for the\n construction of the SurfaceFactory to be applied during its lifetime.\n\n These options currently include choices to identify a default\n face-varying ID, to control caching behavior (on or off, use of\n external vs internal cache), and to control the accuracy of the\n resulting limit surface representations.\n"]
8391#[repr(C)]
8392#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8393pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options {
8394    pub _dfltFVarID: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_FVarID,
8395    pub _externCache: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8396    pub _bitfield_align_1: [u8; 0],
8397    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
8398    pub _approxLevelSmooth: ::std::os::raw::c_uchar,
8399    pub _approxLevelSharp: ::std::os::raw::c_uchar,
8400}
8401impl OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options {
8402    #[inline]
8403    pub fn _enableCache(&self) -> ::std::os::raw::c_uchar {
8404        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
8405    }
8406
8407    #[inline]
8408    pub fn set__enableCache(&mut self, val: ::std::os::raw::c_uchar) {
8409        unsafe {
8410            let val: u8 = ::std::mem::transmute(val);
8411            self._bitfield_1.set(0usize, 1u8, val as u64)
8412        }
8413    }
8414
8415    #[inline]
8416    pub unsafe fn _enableCache_raw(this: *const Self) -> ::std::os::raw::c_uchar {
8417        unsafe {
8418            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8419                ::std::ptr::addr_of!((*this)._bitfield_1),
8420                0usize,
8421                1u8,
8422            ) as u8)
8423        }
8424    }
8425
8426    #[inline]
8427    pub unsafe fn set__enableCache_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
8428        unsafe {
8429            let val: u8 = ::std::mem::transmute(val);
8430            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8431                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8432                0usize,
8433                1u8,
8434                val as u64,
8435            )
8436        }
8437    }
8438
8439    #[inline]
8440    pub fn new_bitfield_1(
8441        _enableCache: ::std::os::raw::c_uchar,
8442    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
8443        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
8444        __bindgen_bitfield_unit.set(0usize, 1u8, {
8445            let _enableCache: u8 = unsafe { ::std::mem::transmute(_enableCache) };
8446            _enableCache as u64
8447        });
8448        __bindgen_bitfield_unit
8449    }
8450}
8451#[repr(C)]
8452#[derive(Debug, Copy, Clone)]
8453pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_SurfaceSet {
8454    _unused: [u8; 0],
8455}
8456pub type OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_SurfaceType =
8457    OpenSubdiv_v3_7_0_Bfr_internal_SurfaceData;
8458unsafe extern "C" {
8459    #[doc = " @brief Return if a specified face has a limit surface\n\n This method determines if a face has an associated limit surface,\n and so supports initialization of Surface for evaluation. This\n is usually the case, except when the face is tagged as a hole, or\n due to the use of uncommon boundary interpolation options (i.e.\n Sdc::Options::VTX_BOUNDARY_NONE). The test of a hole is trivial,\n but the boundary test is not when such uncommon options are used.\n"]
8460    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr14SurfaceFactory19FaceHasLimitSurfaceEi"]
8461    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_FaceHasLimitSurface(
8462        this: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactory,
8463        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8464    ) -> bool;
8465}
8466unsafe extern "C" {
8467    #[doc = " @brief Return the Parameterization of a face with a limit surface\n\n This method simply returns the Parameterization of the specified\n face. It is presumed the face has an existing limit surface and\n so is a quick and simple accessor.\n"]
8468    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr14SurfaceFactory23GetFaceParameterizationEi"]
8469    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_GetFaceParameterization(
8470        this: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactory,
8471        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8472    ) -> OpenSubdiv_v3_7_0_Bfr_Parameterization;
8473}
8474unsafe extern "C" {
8475    #[doc = " @brief Subclass to identify an internal cache for use by base class"]
8476    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr14SurfaceFactory16setInternalCacheEPNS1_19SurfaceFactoryCacheE"]
8477    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_setInternalCache(
8478        this: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactory,
8479        cache: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8480    );
8481}
8482unsafe extern "C" {
8483    #[doc = "\n @brief Constructor to be used by subclasses\n\n Construction requires specification of the subdivision scheme and\n options associated with the mesh (as is the case with other classes\n in Far). These will typically reflect the settings in the mesh but\n can also be used to override them -- as determined by the subclass.\n Common uses of overrides are to assign a subdivision scheme to a\n simple polygonal mesh, or to change the face-varying interpolation\n for the faster linear interpolation of UVs.\n"]
8484    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr14SurfaceFactoryC2ENS0_3Sdc10SchemeTypeERKNS3_7OptionsERKNS2_7OptionsE"]
8485    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_SurfaceFactory(
8486        this: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactory,
8487        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
8488        schemeOptions: *const OpenSubdiv_v3_7_0_Sdc_Options,
8489        limitOptions: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options,
8490    );
8491}
8492impl OpenSubdiv_v3_7_0_Bfr_SurfaceFactory {
8493    #[inline]
8494    pub fn _linearScheme(&self) -> ::std::os::raw::c_uint {
8495        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
8496    }
8497
8498    #[inline]
8499    pub fn set__linearScheme(&mut self, val: ::std::os::raw::c_uint) {
8500        unsafe {
8501            let val: u32 = ::std::mem::transmute(val);
8502            self._bitfield_1.set(0usize, 1u8, val as u64)
8503        }
8504    }
8505
8506    #[inline]
8507    pub unsafe fn _linearScheme_raw(this: *const Self) -> ::std::os::raw::c_uint {
8508        unsafe {
8509            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8510                ::std::ptr::addr_of!((*this)._bitfield_1),
8511                0usize,
8512                1u8,
8513            ) as u32)
8514        }
8515    }
8516
8517    #[inline]
8518    pub unsafe fn set__linearScheme_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
8519        unsafe {
8520            let val: u32 = ::std::mem::transmute(val);
8521            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8522                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8523                0usize,
8524                1u8,
8525                val as u64,
8526            )
8527        }
8528    }
8529
8530    #[inline]
8531    pub fn _linearFVarInterp(&self) -> ::std::os::raw::c_uint {
8532        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
8533    }
8534
8535    #[inline]
8536    pub fn set__linearFVarInterp(&mut self, val: ::std::os::raw::c_uint) {
8537        unsafe {
8538            let val: u32 = ::std::mem::transmute(val);
8539            self._bitfield_1.set(1usize, 1u8, val as u64)
8540        }
8541    }
8542
8543    #[inline]
8544    pub unsafe fn _linearFVarInterp_raw(this: *const Self) -> ::std::os::raw::c_uint {
8545        unsafe {
8546            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8547                ::std::ptr::addr_of!((*this)._bitfield_1),
8548                1usize,
8549                1u8,
8550            ) as u32)
8551        }
8552    }
8553
8554    #[inline]
8555    pub unsafe fn set__linearFVarInterp_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
8556        unsafe {
8557            let val: u32 = ::std::mem::transmute(val);
8558            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8559                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8560                1usize,
8561                1u8,
8562                val as u64,
8563            )
8564        }
8565    }
8566
8567    #[inline]
8568    pub fn _testNeighborhoodForLimit(&self) -> ::std::os::raw::c_uint {
8569        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
8570    }
8571
8572    #[inline]
8573    pub fn set__testNeighborhoodForLimit(&mut self, val: ::std::os::raw::c_uint) {
8574        unsafe {
8575            let val: u32 = ::std::mem::transmute(val);
8576            self._bitfield_1.set(2usize, 1u8, val as u64)
8577        }
8578    }
8579
8580    #[inline]
8581    pub unsafe fn _testNeighborhoodForLimit_raw(this: *const Self) -> ::std::os::raw::c_uint {
8582        unsafe {
8583            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8584                ::std::ptr::addr_of!((*this)._bitfield_1),
8585                2usize,
8586                1u8,
8587            ) as u32)
8588        }
8589    }
8590
8591    #[inline]
8592    pub unsafe fn set__testNeighborhoodForLimit_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
8593        unsafe {
8594            let val: u32 = ::std::mem::transmute(val);
8595            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8596                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8597                2usize,
8598                1u8,
8599                val as u64,
8600            )
8601        }
8602    }
8603
8604    #[inline]
8605    pub fn _rejectSmoothBoundariesForLimit(&self) -> ::std::os::raw::c_uint {
8606        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
8607    }
8608
8609    #[inline]
8610    pub fn set__rejectSmoothBoundariesForLimit(&mut self, val: ::std::os::raw::c_uint) {
8611        unsafe {
8612            let val: u32 = ::std::mem::transmute(val);
8613            self._bitfield_1.set(3usize, 1u8, val as u64)
8614        }
8615    }
8616
8617    #[inline]
8618    pub unsafe fn _rejectSmoothBoundariesForLimit_raw(this: *const Self) -> ::std::os::raw::c_uint {
8619        unsafe {
8620            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8621                ::std::ptr::addr_of!((*this)._bitfield_1),
8622                3usize,
8623                1u8,
8624            ) as u32)
8625        }
8626    }
8627
8628    #[inline]
8629    pub unsafe fn set__rejectSmoothBoundariesForLimit_raw(
8630        this: *mut Self,
8631        val: ::std::os::raw::c_uint,
8632    ) {
8633        unsafe {
8634            let val: u32 = ::std::mem::transmute(val);
8635            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8636                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8637                3usize,
8638                1u8,
8639                val as u64,
8640            )
8641        }
8642    }
8643
8644    #[inline]
8645    pub fn _rejectIrregularFacesForLimit(&self) -> ::std::os::raw::c_uint {
8646        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
8647    }
8648
8649    #[inline]
8650    pub fn set__rejectIrregularFacesForLimit(&mut self, val: ::std::os::raw::c_uint) {
8651        unsafe {
8652            let val: u32 = ::std::mem::transmute(val);
8653            self._bitfield_1.set(4usize, 1u8, val as u64)
8654        }
8655    }
8656
8657    #[inline]
8658    pub unsafe fn _rejectIrregularFacesForLimit_raw(this: *const Self) -> ::std::os::raw::c_uint {
8659        unsafe {
8660            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 1usize]>>::raw_get(
8661                ::std::ptr::addr_of!((*this)._bitfield_1),
8662                4usize,
8663                1u8,
8664            ) as u32)
8665        }
8666    }
8667
8668    #[inline]
8669    pub unsafe fn set__rejectIrregularFacesForLimit_raw(
8670        this: *mut Self,
8671        val: ::std::os::raw::c_uint,
8672    ) {
8673        unsafe {
8674            let val: u32 = ::std::mem::transmute(val);
8675            <__BindgenBitfieldUnit<[u8; 1usize]>>::raw_set(
8676                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
8677                4usize,
8678                1u8,
8679                val as u64,
8680            )
8681        }
8682    }
8683
8684    #[inline]
8685    pub fn new_bitfield_1(
8686        _linearScheme: ::std::os::raw::c_uint,
8687        _linearFVarInterp: ::std::os::raw::c_uint,
8688        _testNeighborhoodForLimit: ::std::os::raw::c_uint,
8689        _rejectSmoothBoundariesForLimit: ::std::os::raw::c_uint,
8690        _rejectIrregularFacesForLimit: ::std::os::raw::c_uint,
8691    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
8692        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
8693        __bindgen_bitfield_unit.set(0usize, 1u8, {
8694            let _linearScheme: u32 = unsafe { ::std::mem::transmute(_linearScheme) };
8695            _linearScheme as u64
8696        });
8697        __bindgen_bitfield_unit.set(1usize, 1u8, {
8698            let _linearFVarInterp: u32 = unsafe { ::std::mem::transmute(_linearFVarInterp) };
8699            _linearFVarInterp as u64
8700        });
8701        __bindgen_bitfield_unit.set(2usize, 1u8, {
8702            let _testNeighborhoodForLimit: u32 =
8703                unsafe { ::std::mem::transmute(_testNeighborhoodForLimit) };
8704            _testNeighborhoodForLimit as u64
8705        });
8706        __bindgen_bitfield_unit.set(3usize, 1u8, {
8707            let _rejectSmoothBoundariesForLimit: u32 =
8708                unsafe { ::std::mem::transmute(_rejectSmoothBoundariesForLimit) };
8709            _rejectSmoothBoundariesForLimit as u64
8710        });
8711        __bindgen_bitfield_unit.set(4usize, 1u8, {
8712            let _rejectIrregularFacesForLimit: u32 =
8713                unsafe { ::std::mem::transmute(_rejectIrregularFacesForLimit) };
8714            _rejectIrregularFacesForLimit as u64
8715        });
8716        __bindgen_bitfield_unit
8717    }
8718
8719    #[inline]
8720    pub unsafe fn FaceHasLimitSurface(
8721        &self,
8722        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8723    ) -> bool {
8724        OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_FaceHasLimitSurface(self, faceIndex)
8725    }
8726
8727    #[inline]
8728    pub unsafe fn GetFaceParameterization(
8729        &self,
8730        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8731    ) -> OpenSubdiv_v3_7_0_Bfr_Parameterization {
8732        OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_GetFaceParameterization(self, faceIndex)
8733    }
8734
8735    #[inline]
8736    pub unsafe fn setInternalCache(
8737        &mut self,
8738        cache: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8739    ) {
8740        OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_setInternalCache(self, cache)
8741    }
8742
8743    #[inline]
8744    pub unsafe fn new(
8745        schemeType: OpenSubdiv_v3_7_0_Sdc_SchemeType,
8746        schemeOptions: *const OpenSubdiv_v3_7_0_Sdc_Options,
8747        limitOptions: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options,
8748    ) -> Self {
8749        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
8750        OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_SurfaceFactory(
8751            __bindgen_tmp.as_mut_ptr(),
8752            schemeType,
8753            schemeOptions,
8754            limitOptions,
8755        );
8756        __bindgen_tmp.assume_init()
8757    }
8758}
8759unsafe extern "C" {
8760    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr14SurfaceFactoryD1Ev"]
8761    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_SurfaceFactory_destructor(
8762        this: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactory,
8763    );
8764}
8765#[repr(C)]
8766pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache__bindgen_vtable(::std::os::raw::c_void);
8767#[doc = "\n @brief Container used internally by SurfaceFactory to store reusable\n        information\n\n SurfaceFactoryCache is a container for storing/caching instances of\n the internal representation of complex patches used by SurfaceFactory\n so that they can be quickly identified and retrieved for reuse.\n\n It is intended for internal use by SurfaceFactory.  Public access is\n available but limited to construction only -- allowing an instance to\n be reused by assigning it to more than one SurfaceFactory.\n"]
8768#[repr(C)]
8769pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache {
8770    pub vtable_: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache__bindgen_vtable,
8771    pub _map: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_MapType,
8772}
8773pub type OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType = ::std::os::raw::c_ulong;
8774pub type OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType =
8775    OpenSubdiv_v3_7_0_Bfr_internal_IrregularPatchSharedPtr;
8776#[doc = " @endcond PROTECTED"]
8777pub type OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_MapType = __BindgenOpaqueArray<u64, 6usize>;
8778unsafe extern "C" {
8779    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr19SurfaceFactoryCache4findERKm"]
8780    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_find(
8781        this: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8782        key: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType,
8783    ) -> OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType;
8784}
8785unsafe extern "C" {
8786    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr19SurfaceFactoryCache3addERKmRKSt10shared_ptrIKNS1_9PatchTreeEE"]
8787    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_add(
8788        this: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8789        key: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType,
8790        data: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType,
8791    ) -> OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType;
8792}
8793unsafe extern "C" {
8794    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr19SurfaceFactoryCacheC1Ev"]
8795    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_SurfaceFactoryCache(
8796        this: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8797    );
8798}
8799impl OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache {
8800    #[inline]
8801    pub unsafe fn find(
8802        &self,
8803        key: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType,
8804    ) -> OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType {
8805        OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_find(self, key)
8806    }
8807
8808    #[inline]
8809    pub unsafe fn add(
8810        &mut self,
8811        key: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType,
8812        data: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType,
8813    ) -> OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType {
8814        OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_add(self, key, data)
8815    }
8816
8817    #[inline]
8818    pub unsafe fn new() -> Self {
8819        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
8820        OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_SurfaceFactoryCache(__bindgen_tmp.as_mut_ptr());
8821        __bindgen_tmp.assume_init()
8822    }
8823}
8824unsafe extern "C" {
8825    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr19SurfaceFactoryCacheD1Ev"]
8826    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_SurfaceFactoryCache_destructor(
8827        this: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8828    );
8829}
8830unsafe extern "C" {
8831    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr19SurfaceFactoryCache4FindERKm"]
8832    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_Find(
8833        this: *mut ::std::os::raw::c_void,
8834        key: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType,
8835    ) -> OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType;
8836}
8837unsafe extern "C" {
8838    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr19SurfaceFactoryCache3AddERKmRKSt10shared_ptrIKNS1_9PatchTreeEE"]
8839    pub fn OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_Add(
8840        this: *mut ::std::os::raw::c_void,
8841        key: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_KeyType,
8842        data: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType,
8843    ) -> OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache_DataType;
8844}
8845#[doc = "\n @brief Template for declaring thread-safe subclasses of SurfaceFactoryCache\n\n SurfaceFactoryCacheThreaded extends SurfaceFactoryCache by protecting\n access to the cache to ensure thread-safe operation. A mutex type and\n associated locks are specified to declare a subclass with appropriately\n protected read and write access.\n\n @tparam MUTEX_TYPE            A mutex type with supported lock guards\n @tparam READ_LOCK_GUARD_TYPE  A scoped lock guard allowing potentially\n                               shared access for read operations.\n @tparam WRITE_LOCK_GUARD_TYPE A scoped lock guard allowing exclusive\n                               access for write operations.\n"]
8846#[repr(C)]
8847pub struct OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCacheThreaded<MUTEX_TYPE> {
8848    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<MUTEX_TYPE>>,
8849    pub _base: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryCache,
8850    #[doc = " @endcond PROTECTED"]
8851    pub _mutex: MUTEX_TYPE,
8852}
8853#[doc = "\n @brief Intermediate subclass of SurfaceFactory with Far::TopologyRefiner\n        as the mesh\n\n RefinerSurfaceFactoryBase is an intermediate subclass of SurfaceFactory\n using Far::TopologyRefiner as the connected mesh representation.\n\n The SurfaceFactoryMeshAdapter interface for TopologyRefiner is provided\n in full, along with some public extensions specific to TopologyRefiner.\n\n Additional caching expectations of SurfaceFactory are NOT specified\n here. These are deferred to subclasses to implement different behaviors\n of the factory's internal caching. A template for such subclasses is\n additionally provided -- allowing clients desiring a thread-safe cache\n to simply declare a subclass for a preferred thread-safe type.\n"]
8854#[repr(C)]
8855#[derive(Debug, Hash, PartialEq, Eq)]
8856pub struct OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase {
8857    pub _base: OpenSubdiv_v3_7_0_Bfr_SurfaceFactory,
8858    pub _mesh: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
8859    pub _numFaces: ::std::os::raw::c_int,
8860    pub _numFVarChannels: ::std::os::raw::c_int,
8861}
8862unsafe extern "C" {
8863    #[doc = " @name Construction and initialization\n\n Construction and initialization\n"]
8864    #[link_name = "\u{1}_ZN10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBaseC1ERKNS0_3Far15TopologyRefinerERKNS1_14SurfaceFactory7OptionsE"]
8865    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_RefinerSurfaceFactoryBase(
8866        this: *mut OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase,
8867        mesh: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
8868        options: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options,
8869    );
8870}
8871impl OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase {
8872    #[inline]
8873    pub unsafe fn new(
8874        mesh: *const OpenSubdiv_v3_7_0_Far_TopologyRefiner,
8875        options: *const OpenSubdiv_v3_7_0_Bfr_SurfaceFactory_Options,
8876    ) -> Self {
8877        let mut __bindgen_tmp = ::std::mem::MaybeUninit::uninit();
8878        OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_RefinerSurfaceFactoryBase(
8879            __bindgen_tmp.as_mut_ptr(),
8880            mesh,
8881            options,
8882        );
8883        __bindgen_tmp.assume_init()
8884    }
8885}
8886unsafe extern "C" {
8887    #[doc = " @cond PROTECTED"]
8888    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase10isFaceHoleEi"]
8889    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_isFaceHole(
8890        this: *mut ::std::os::raw::c_void,
8891        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8892    ) -> bool;
8893}
8894unsafe extern "C" {
8895    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase11getFaceSizeEi"]
8896    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceSize(
8897        this: *mut ::std::os::raw::c_void,
8898        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8899    ) -> ::std::os::raw::c_int;
8900}
8901unsafe extern "C" {
8902    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase20getFaceVertexIndicesEiPi"]
8903    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceVertexIndices(
8904        this: *mut ::std::os::raw::c_void,
8905        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8906        vertexIndices: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8907    ) -> ::std::os::raw::c_int;
8908}
8909unsafe extern "C" {
8910    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase23getFaceFVarValueIndicesEilPi"]
8911    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceFVarValueIndices(
8912        this: *mut ::std::os::raw::c_void,
8913        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8914        fvarID: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_FVarID,
8915        fvarValueIndices: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8916    ) -> ::std::os::raw::c_int;
8917}
8918unsafe extern "C" {
8919    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase28populateFaceVertexDescriptorEiiPNS1_16VertexDescriptorE"]
8920    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_populateFaceVertexDescriptor(
8921        this: *mut ::std::os::raw::c_void,
8922        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8923        faceVertex: ::std::os::raw::c_int,
8924        vertexDescriptor: *mut OpenSubdiv_v3_7_0_Bfr_VertexDescriptor,
8925    ) -> ::std::os::raw::c_int;
8926}
8927unsafe extern "C" {
8928    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase38getFaceVertexIncidentFaceVertexIndicesEiiPi"]
8929    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceVertexIncidentFaceVertexIndices(
8930        this: *mut ::std::os::raw::c_void,
8931        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8932        faceVertex: ::std::os::raw::c_int,
8933        vertexIndices: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8934    ) -> ::std::os::raw::c_int;
8935}
8936unsafe extern "C" {
8937    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase41getFaceVertexIncidentFaceFVarValueIndicesEiilPi"]
8938    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceVertexIncidentFaceFVarValueIndices(
8939        this: *mut ::std::os::raw::c_void,
8940        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8941        faceVertex: ::std::os::raw::c_int,
8942        fvarID: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_FVarID,
8943        fvarValueIndices: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8944    ) -> ::std::os::raw::c_int;
8945}
8946unsafe extern "C" {
8947    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase41getFaceNeighborhoodVertexIndicesIfRegularEiPi"]
8948    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceNeighborhoodVertexIndicesIfRegular(
8949        this: *mut ::std::os::raw::c_void,
8950        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8951        vertexIndices: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8952    ) -> bool;
8953}
8954unsafe extern "C" {
8955    #[link_name = "\u{1}_ZNK10OpenSubdiv6v3_7_03Bfr25RefinerSurfaceFactoryBase44getFaceNeighborhoodFVarValueIndicesIfRegularEilPi"]
8956    pub fn OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase_getFaceNeighborhoodFVarValueIndicesIfRegular(
8957        this: *mut ::std::os::raw::c_void,
8958        faceIndex: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8959        fvarID: OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_FVarID,
8960        fvarValueIndices: *mut OpenSubdiv_v3_7_0_Bfr_SurfaceFactoryMeshAdapter_Index,
8961    ) -> bool;
8962}
8963#[doc = " @brief Template for concrete subclasses of RefinerSurfaceFactoryBase\n\n This class template is used to declare concrete subclasses of\n RefinerSurfaceFactoryBase with the additional support of an internal\n cache used by the base class. With an instance of a thread-safe\n subclass of SurfaceFactoryCache declared as a member, the resulting\n factory will be thread-safe.\n\n @tparam CACHE_TYPE  A subclass of SurfaceFactoryCache\n\n Note a default template parameter uses the base SurfaceFactoryCache\n for convenience, but which is not thread-safe.\n"]
8964#[repr(C)]
8965#[derive(Debug, Hash, PartialEq, Eq)]
8966pub struct OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactory<CACHE_TYPE> {
8967    pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<CACHE_TYPE>>,
8968    pub _base: OpenSubdiv_v3_7_0_Bfr_RefinerSurfaceFactoryBase,
8969    pub _localCache: CACHE_TYPE,
8970}