MLIR  20.0.0git
Public Member Functions | Protected Attributes | List of all members
mlir::python::nanobind_adaptors::pure_subclass Class Reference

Provides a facility like nanobind::class_ for defining a new class in a scope, but this allows extension of an arbitrary Python class, defining methods on it is a similar way. More...

#include "mlir/Bindings/Python/NanobindAdaptors.h"

+ Inheritance diagram for mlir::python::nanobind_adaptors::pure_subclass:

Public Member Functions

 pure_subclass (nanobind::handle scope, const char *derivedClassName, const nanobind::object &superClass)
 
template<typename Func , typename... Extra>
pure_subclassdef (const char *name, Func &&f, const Extra &...extra)
 
template<typename Func , typename... Extra>
pure_subclassdef_property_readonly (const char *name, Func &&f, const Extra &...extra)
 
template<typename Func , typename... Extra>
pure_subclassdef_staticmethod (const char *name, Func &&f, const Extra &...extra)
 
template<typename Func , typename... Extra>
pure_subclassdef_classmethod (const char *name, Func &&f, const Extra &...extra)
 
nanobind::object get_class () const
 

Protected Attributes

nanobind::object superClass
 
nanobind::object thisClass
 

Detailed Description

Provides a facility like nanobind::class_ for defining a new class in a scope, but this allows extension of an arbitrary Python class, defining methods on it is a similar way.

Classes defined in this way are very similar to if defined in Python in the usual way but use nanobind machinery to do it. These are not "real" nanobind classes but pure Python classes with no relation to a concrete C++ class.

Derived from a discussion upstream: https://github.com/pybind/pybind11/issues/1193 (plus a fair amount of extra curricular poking) TODO: If this proves useful, see about including it in nanobind.

Definition at line 340 of file NanobindAdaptors.h.

Constructor & Destructor Documentation

◆ pure_subclass()

mlir::python::nanobind_adaptors::pure_subclass::pure_subclass ( nanobind::handle  scope,
const char *  derivedClassName,
const nanobind::object &  superClass 
)
inline

Definition at line 342 of file NanobindAdaptors.h.

References superClass, and thisClass.

Member Function Documentation

◆ def()

template<typename Func , typename... Extra>
pure_subclass& mlir::python::nanobind_adaptors::pure_subclass::def ( const char *  name,
Func &&  f,
const Extra &...  extra 
)
inline

◆ def_classmethod()

template<typename Func , typename... Extra>
pure_subclass& mlir::python::nanobind_adaptors::pure_subclass::def_classmethod ( const char *  name,
Func &&  f,
const Extra &...  extra 
)
inline

Definition at line 390 of file NanobindAdaptors.h.

References thisClass.

◆ def_property_readonly()

template<typename Func , typename... Extra>
pure_subclass& mlir::python::nanobind_adaptors::pure_subclass::def_property_readonly ( const char *  name,
Func &&  f,
const Extra &...  extra 
)
inline

Definition at line 364 of file NanobindAdaptors.h.

References thisClass.

◆ def_staticmethod()

template<typename Func , typename... Extra>
pure_subclass& mlir::python::nanobind_adaptors::pure_subclass::def_staticmethod ( const char *  name,
Func &&  f,
const Extra &...  extra 
)
inline

◆ get_class()

nanobind::object mlir::python::nanobind_adaptors::pure_subclass::get_class ( ) const
inline

Definition at line 404 of file NanobindAdaptors.h.

References thisClass.

Member Data Documentation

◆ superClass

nanobind::object mlir::python::nanobind_adaptors::pure_subclass::superClass
protected

Definition at line 407 of file NanobindAdaptors.h.

Referenced by pure_subclass().

◆ thisClass

nanobind::object mlir::python::nanobind_adaptors::pure_subclass::thisClass
protected

The documentation for this class was generated from the following file: