(in-package #:smoke) (defcenum smoke-class-flags "Class properties" (:constructor #x01) (:copy-constructor #x02) (:virtual-destructor #x04) (:namespace #x08) (:undefined #x10)) (defcstruct smoke-class "Describe a class" (name :string) (external cxx-bool) (parents smoke-index) (class-function :pointer) (enum-function :pointer) (flags :unsigned-short) (size :unsigned-int)) (defcfun (smoke-find-class "cl_smoke_find_class") :void (m :pointer smoke-module-index) (name :string)) (declaim (inline smoke-class-id)) (defcfun (smoke-class-id "cl_smoke_class_id") smoke-index (smoke :pointer) (name :string)) (defcfun (smoke-get-class "cl_smoke_get_class") (:pointer smoke-class) (smoke :pointer) (class smoke-index)) (defcfun (smoke-is-derived-from "cl_smoke_is_derived_from") :boolean (smoke :pointer) (class smoke-index) (smoke-base :pointer) (base-class smoke-index)) (defcfun (smoke-cast "cl_smoke_cast") :pointer (smoke :pointer) (object :pointer) (from smoke-index) (to smoke-index))