XS constructor
[gitmo/Mouse.git] / xs-src / MouseAttribute.xs
1 #define  NEED_newSVpvn_flags_GLOBAL
2 #include "mouse.h"
3
4 MODULE = Mouse::Meta::Attribute  PACKAGE = Mouse::Meta::Attribute
5
6 PROTOTYPES: DISABLE
7
8 BOOT:
9     /* readers */
10     INSTALL_SIMPLE_READER(Attribute, name);
11     INSTALL_SIMPLE_READER(Attribute, associated_class);
12     INSTALL_SIMPLE_READER(Attribute, accessor);
13     INSTALL_SIMPLE_READER(Attribute, reader);
14     INSTALL_SIMPLE_READER(Attribute, writer);
15     INSTALL_SIMPLE_READER(Attribute, predicate);
16     INSTALL_SIMPLE_READER(Attribute, clearer);
17     INSTALL_SIMPLE_READER(Attribute, handles);
18
19     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, _is_metadata, is);
20     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, is_required, required);
21     INSTALL_SIMPLE_READER(Attribute, default);
22     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, is_lazy, lazy);
23     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, is_lazy_build, lazy_build);
24     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, is_weak_ref, weak_ref);
25     INSTALL_SIMPLE_READER(Attribute, init_arg);
26     INSTALL_SIMPLE_READER(Attribute, type_constraint);
27     INSTALL_SIMPLE_READER(Attribute, trigger);
28     INSTALL_SIMPLE_READER(Attribute, builder);
29     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, should_auto_deref, auto_deref);
30     INSTALL_SIMPLE_READER_WITH_KEY(Attribute, should_coerce, coerce);
31     INSTALL_SIMPLE_READER(Attribute, documentation);
32
33     /* predicates */
34     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_accessor, accessor);
35     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_reader, reader);
36     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_writer, writer);
37     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_predicate, predicate);
38     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_clearer, clearer);
39     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_handles, handles);
40
41     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_default, default);
42     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_type_constraint, type_constraint);
43     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_trigger, trigger);
44     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_builder, builder);
45     INSTALL_SIMPLE_PREDICATE_WITH_KEY(Attribute, has_documentation, documentation);
46
47     newCONSTSUB(gv_stashpvs("Mouse::Meta::Attribute", TRUE), "accessor_metaclass",
48         newSVpvs("Mouse::Meta::Method::Accessor::XS"));
49