#
# Autogenerated by Thrift for thrift/compiler/test/fixtures/optionals/src/module.thrift
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#  @generated
#
from libc.stdint cimport (
    int8_t as cint8_t,
    int16_t as cint16_t,
    int32_t as cint32_t,
    int64_t as cint64_t,
    uint16_t as cuint16_t,
    uint32_t as cuint32_t,
)
from libcpp.string cimport string
from libcpp cimport bool as cbool, nullptr, nullptr_t
from cpython cimport bool as pbool
from libcpp.memory cimport shared_ptr, unique_ptr
from libcpp.vector cimport vector
from libcpp.set cimport set as cset
from libcpp.map cimport map as cmap, pair as cpair
from libcpp.unordered_map cimport unordered_map as cumap
cimport folly.iobuf as _fbthrift_iobuf
from thrift.python.exceptions cimport cTException
from thrift.py3.types cimport (
    bstring,
    field_ref as __field_ref,
    optional_field_ref as __optional_field_ref,
    required_field_ref as __required_field_ref,
    terse_field_ref as __terse_field_ref,
    union_field_ref as __union_field_ref,
    get_union_field_value as __get_union_field_value,
)
from thrift.python.common cimport cThriftMetadata as __fbthrift_cThriftMetadata



cdef extern from "thrift/compiler/test/fixtures/optionals/gen-cpp2/module_metadata.h" namespace "apache::thrift::detail::md":
    cdef cppclass EnumMetadata[T]:
        @staticmethod
        void gen(__fbthrift_cThriftMetadata &metadata)
cdef extern from "thrift/compiler/test/fixtures/optionals/gen-cpp2/module_types.h" namespace "::cpp2":
    cdef cppclass cAnimal "::cpp2::Animal":
        pass

cdef extern from "thrift/compiler/test/fixtures/optionals/gen-cpp2/module_metadata.h" namespace "apache::thrift::detail::md":
    cdef cppclass ExceptionMetadata[T]:
        @staticmethod
        void gen(__fbthrift_cThriftMetadata &metadata)
cdef extern from "thrift/compiler/test/fixtures/optionals/gen-cpp2/module_metadata.h" namespace "apache::thrift::detail::md":
    cdef cppclass StructMetadata[T]:
        @staticmethod
        void gen(__fbthrift_cThriftMetadata &metadata)
cdef extern from "thrift/compiler/test/fixtures/optionals/gen-cpp2/module_types_custom_protocol.h" namespace "::cpp2":

    cdef cppclass cColor "::cpp2::Color":
        cColor() except +
        cColor(const cColor&) except +
        bint operator==(cColor&)
        bint operator!=(cColor&)
        bint operator<(cColor&)
        bint operator>(cColor&)
        bint operator<=(cColor&)
        bint operator>=(cColor&)
        __field_ref[double] red_ref "red_ref" ()
        __field_ref[double] green_ref "green_ref" ()
        __field_ref[double] blue_ref "blue_ref" ()
        __field_ref[double] alpha_ref "alpha_ref" ()


    cdef cppclass cVehicle "::cpp2::Vehicle":
        cVehicle() except +
        cVehicle(const cVehicle&) except +
        bint operator==(cVehicle&)
        bint operator!=(cVehicle&)
        bint operator<(cVehicle&)
        bint operator>(cVehicle&)
        bint operator<=(cVehicle&)
        bint operator>=(cVehicle&)
        __field_ref[cColor] color_ref "color_ref" ()
        __optional_field_ref[string] licensePlate_ref "licensePlate_ref" ()
        __optional_field_ref[string] description_ref "description_ref" ()
        __optional_field_ref[string] name_ref "name_ref" ()
        __optional_field_ref[cbool] hasAC_ref "hasAC_ref" ()


    cdef cppclass cPerson "::cpp2::Person":
        cPerson() except +
        cPerson(const cPerson&) except +
        bint operator==(cPerson&)
        bint operator!=(cPerson&)
        bint operator<(cPerson&)
        bint operator>(cPerson&)
        bint operator<=(cPerson&)
        bint operator>=(cPerson&)
        __field_ref[cint64_t] id_ref "id_ref" ()
        __field_ref[string] name_ref "name_ref" ()
        __optional_field_ref[cint16_t] age_ref "age_ref" ()
        __optional_field_ref[string] address_ref "address_ref" ()
        __optional_field_ref[cColor] favoriteColor_ref "favoriteColor_ref" ()
        __optional_field_ref[cset[cint64_t]] friends_ref "friends_ref" ()
        __optional_field_ref[cint64_t] bestFriend_ref "bestFriend_ref" ()
        __optional_field_ref[cmap[cAnimal,string]] petNames_ref "petNames_ref" ()
        __optional_field_ref[cAnimal] afraidOfAnimal_ref "afraidOfAnimal_ref" ()
        __optional_field_ref[vector[cVehicle]] vehicles_ref "vehicles_ref" ()

