1.1 --- a/templates/ops.h Mon Feb 27 11:57:15 2017 +0100
1.2 +++ b/templates/ops.h Mon Feb 27 14:41:27 2017 +0100
1.3 @@ -30,14 +30,21 @@
1.4
1.5 /* Direct retrieval operations, returning attributes. */
1.6
1.7 -__attr __load_via_class(__ref obj, int pos);
1.8 -__attr __load_via_object(__ref obj, int pos);
1.9 -__attr __get_class_and_load(__ref obj, int pos);
1.10 +__attr __load_via_class__(__ref obj, int pos);
1.11 +__attr __load_via_object__(__ref obj, int pos);
1.12 +__attr __get_class_and_load__(__ref obj, int pos);
1.13 +
1.14 +#define __load_via_class(OBJ, ATTRNAME) (__load_via_class__(OBJ, __ATTRPOS(ATTRNAME)))
1.15 +#define __load_via_object(OBJ, ATTRNAME) (__load_via_object__(OBJ, __ATTRPOS(ATTRNAME)))
1.16 +#define __get_class_and_load(OBJ, ATTRNAME) (__get_class_and_load__(OBJ, __ATTRPOS(ATTRNAME)))
1.17
1.18 /* Direct storage operations. */
1.19
1.20 -int __store_via_object(__ref obj, int pos, __attr value);
1.21 -int __get_class_and_store(__ref obj, int pos, __attr value);
1.22 +int __store_via_object__(__ref obj, int pos, __attr value);
1.23 +int __get_class_and_store__(__ref obj, int pos, __attr value);
1.24 +
1.25 +#define __store_via_object(OBJ, ATTRNAME, VALUE) (__store_via_object__(OBJ, __ATTRPOS(ATTRNAME), VALUE))
1.26 +#define __get_class_and_store(OBJ, ATTRNAME, VALUE) (__get_class_and_store__(OBJ, __ATTRPOS(ATTRNAME), VALUE))
1.27
1.28 /* Introspection. */
1.29
1.30 @@ -51,22 +58,36 @@
1.31 __ref __test_specific_instance(__ref obj, __ref type);
1.32 __ref __test_specific_object(__ref obj, __ref type);
1.33 __ref __test_specific_type(__ref obj, __ref type);
1.34 -__ref __test_common_instance(__ref obj, int pos, int code);
1.35 -__ref __test_common_object(__ref obj, int pos, int code);
1.36 -__ref __test_common_type(__ref obj, int pos, int code);
1.37 +
1.38 +__ref __test_common_instance__(__ref obj, int pos, int code);
1.39 +__ref __test_common_object__(__ref obj, int pos, int code);
1.40 +__ref __test_common_type__(__ref obj, int pos, int code);
1.41 +
1.42 +#define __test_common_instance(OBJ, TYPENAME) (__test_common_instance__(OBJ, __ATTRPOS(TYPENAME), __ATTRCODE(TYPENAME)))
1.43 +#define __test_common_object(OBJ, TYPENAME) (__test_common_object__(OBJ, __ATTRPOS(TYPENAME), __ATTRCODE(TYPENAME)))
1.44 +#define __test_common_type(OBJ, TYPENAME) (__test_common_type__(OBJ, __ATTRPOS(TYPENAME), __ATTRCODE(TYPENAME)))
1.45
1.46 /* Attribute testing and retrieval operations. */
1.47
1.48 -__attr __check_and_load_via_class(__ref obj, int pos, int code);
1.49 -__attr __check_and_load_via_object(__ref obj, int pos, int code);
1.50 __attr __check_and_load_via_object_null(__ref obj, int pos, int code);
1.51 -__attr __check_and_load_via_any(__ref obj, int pos, int code);
1.52 +
1.53 +__attr __check_and_load_via_class__(__ref obj, int pos, int code);
1.54 +__attr __check_and_load_via_object__(__ref obj, int pos, int code);
1.55 +__attr __check_and_load_via_any__(__ref obj, int pos, int code);
1.56 +
1.57 +#define __check_and_load_via_class(OBJ, ATTRNAME) (__check_and_load_via_class__(OBJ, __ATTRPOS(ATTRNAME), __ATTRCODE(ATTRNAME)))
1.58 +#define __check_and_load_via_object(OBJ, ATTRNAME) (__check_and_load_via_object__(OBJ, __ATTRPOS(ATTRNAME), __ATTRCODE(ATTRNAME)))
1.59 +#define __check_and_load_via_any(OBJ, ATTRNAME) (__check_and_load_via_any__(OBJ, __ATTRPOS(ATTRNAME), __ATTRCODE(ATTRNAME)))
1.60
1.61 /* Attribute testing and storage operations. */
1.62
1.63 -int __check_and_store_via_class(__ref obj, int pos, int code, __attr value);
1.64 -int __check_and_store_via_object(__ref obj, int pos, int code, __attr value);
1.65 -int __check_and_store_via_any(__ref obj, int pos, int code, __attr value);
1.66 +int __check_and_store_via_class__(__ref obj, int pos, int code, __attr value);
1.67 +int __check_and_store_via_object__(__ref obj, int pos, int code, __attr value);
1.68 +int __check_and_store_via_any__(__ref obj, int pos, int code, __attr value);
1.69 +
1.70 +#define __check_and_store_via_class(OBJ, ATTRNAME, VALUE) (__check_and_store_via_class__(OBJ, __ATTRPOS(ATTRNAME), __ATTRCODE(ATTRNAME), VALUE))
1.71 +#define __check_and_store_via_object(OBJ, ATTRNAME, VALUE) (__check_and_store_via_object__(OBJ, __ATTRPOS(ATTRNAME), __ATTRCODE(ATTRNAME), VALUE))
1.72 +#define __check_and_store_via_any(OBJ, ATTRNAME, VALUE) (__check_and_store_via_any__(OBJ, __ATTRPOS(ATTRNAME), __ATTRCODE(ATTRNAME), VALUE))
1.73
1.74 /* Context-related operations. */
1.75