-#define DECLARE_BASE_SMOBS(CL) \
- friend class Non_existent_class; \
- private: \
- static scm_t_bits smob_tag_; \
- static SCM mark_smob (SCM); \
- static size_t free_smob (SCM s); \
- static int print_smob (SCM s, SCM p, scm_print_state*); \
- public: \
- static SCM equal_p (SCM a, SCM b); \
- static CL *unsmob (SCM s) \
- { \
- if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_) \
- return (CL *) SCM_CELL_WORD_1 (s); \
- else \
- return 0; \
- } \
- static SCM smob_p (SCM); \
- static void init_smobs (); \
+#define DECLARE_BASE_SMOBS(CL) \
+ friend class Non_existent_class; \
+ private: \
+ static const char* smob_name_; \
+ static scm_t_bits smob_tag_; \
+ static SCM mark_smob (SCM); \
+ static size_t free_smob (SCM s); \
+ static int print_smob (SCM s, SCM p, scm_print_state*); \
+ public: \
+ static SCM equal_p (SCM a, SCM b); \
+ static CL *unsmob (SCM s) __attribute__((pure)) \
+ { \
+ if (SCM_NIMP (s) && SCM_CELL_TYPE (s) == smob_tag_) \
+ return (CL *) SCM_CELL_WORD_1 (s); \
+ else \
+ return 0; \
+ } \
+ static SCM smob_p (SCM); \
+ static void init_smobs (); \