From 56b78ef7b97b3297bcb2c1130cd024ff8b00cc67 Mon Sep 17 00:00:00 2001 From: Gareth Rees Date: Mon, 13 May 2013 21:01:38 +0100 Subject: Remove mps_arg from mps.h. Use MPS_ARGS_BEGIN etc in the Scheme example and in the manual. Use MPS_BEGIN and MPS_END instead of BEGIN and END. The _FIELD macros don't need to be function-like macros. Restore TODO comments in mps.h. Scheme example compiles with -std=c89. Copied from Perforce Change: 181749 ServerID: perforce.ravenbrook.com --- mps/code/mps.h | 46 ++++++++++++++++++++++------------------------ mps/code/mpsacl.h | 2 +- mps/code/mpscams.h | 2 +- mps/code/mpscawl.h | 2 +- mps/code/mpscmfs.h | 2 +- mps/code/mpscmvff.h | 6 +++--- mps/code/mpscmvt.h | 4 ++-- 7 files changed, 31 insertions(+), 33 deletions(-) (limited to 'mps/code') diff --git a/mps/code/mps.h b/mps/code/mps.h index 67d1f77738c..1eb0f230689 100644 --- a/mps/code/mps.h +++ b/mps/code/mps.h @@ -123,69 +123,67 @@ extern mps_arg_s mps_args_none[]; extern const struct mps_key_s _mps_key_arena_size; #define MPS_KEY_ARENA_SIZE (&_mps_key_arena_size) -#define MPS_KEY_ARENA_SIZE_FIELD() size +#define MPS_KEY_ARENA_SIZE_FIELD size extern const struct mps_key_s _mps_key_format; #define MPS_KEY_FORMAT (&_mps_key_format) -#define MPS_KEY_FORMAT_FIELD() format +#define MPS_KEY_FORMAT_FIELD format extern const struct mps_key_s _mps_key_chain; #define MPS_KEY_CHAIN (&_mps_key_chain) -#define MPS_KEY_CHAIN_FIELD() chain +#define MPS_KEY_CHAIN_FIELD chain extern const struct mps_key_s _mps_key_rank; #define MPS_KEY_RANK (&_mps_key_rank) -#define MPS_KEY_RANK_FIELD() rank +#define MPS_KEY_RANK_FIELD rank extern const struct mps_key_s _mps_key_extend_by; #define MPS_KEY_EXTEND_BY (&_mps_key_extend_by) -#define MPS_KEY_EXTEND_BY_FIELD() size +#define MPS_KEY_EXTEND_BY_FIELD size extern const struct mps_key_s _mps_key_min_size; #define MPS_KEY_MIN_SIZE (&_mps_key_min_size) -#define MPS_KEY_MIN_SIZE_FIELD() size +#define MPS_KEY_MIN_SIZE_FIELD size extern const struct mps_key_s _mps_key_mean_size; #define MPS_KEY_MEAN_SIZE (&_mps_key_mean_size) -#define MPS_KEY_MEAN_SIZE_FIELD() size +#define MPS_KEY_MEAN_SIZE_FIELD size extern const struct mps_key_s _mps_key_max_size; #define MPS_KEY_MAX_SIZE (&_mps_key_max_size) -#define MPS_KEY_MAX_SIZE_FIELD() size +#define MPS_KEY_MAX_SIZE_FIELD size extern const struct mps_key_s _mps_key_align; #define MPS_KEY_ALIGN (&_mps_key_align) -#define MPS_KEY_ALIGN_FIELD() align +#define MPS_KEY_ALIGN_FIELD align extern const struct mps_key_s _mps_key_vmw3_top_down; #define MPS_KEY_VMW3_TOP_DOWN (&_mps_key_vmw3_top_down) -#define MPS_KEY_VMW3_TOP_DOWN_FIELD() b +#define MPS_KEY_VMW3_TOP_DOWN_FIELD b /* Maximum length of a keyword argument list. */ #define MPS_ARGS_MAX 32 #define MPS_ARGS_BEGIN(_var) \ - BEGIN \ + MPS_BEGIN \ mps_arg_s _var[MPS_ARGS_MAX]; \ unsigned _var##_i = 0; \ - BEGIN + MPS_BEGIN #define MPS_ARGS_ADD_FIELD(_var, _key, _field, _val) \ - BEGIN \ - AVER(_var##_i < MPS_ARGS_MAX); \ + MPS_BEGIN \ + /* TODO: AVER(_var##_i < MPS_ARGS_MAX); */ \ _var[_var##_i].key = (_key); \ _var[_var##_i].val._field = (_val); \ ++_var##_i; \ - END + MPS_END #define MPS_ARGS_ADD(_var, _key, _val) \ - MPS_ARGS_ADD_FIELD(_var, _key, _key##_FIELD(), _val) + MPS_ARGS_ADD_FIELD(_var, _key, _key##_FIELD, _val) #define MPS_ARGS_DONE(_var) \ - BEGIN \ - AVER(_var##_i < MPS_ARGS_MAX); \ + MPS_BEGIN \ + /* TODO: AVER(_var##_i < MPS_ARGS_MAX); */ \ _var[_var##_i].key = MPS_KEY_ARGS_END; \ - _var##_i = MPS_ARGS_MAX; \ - END + /* TODO: _var##_i = MPS_ARGS_MAX; */ \ + MPS_END #define MPS_ARGS_END(_var) \ - END; \ - END - -#define MPS_ARG(_key, _val) ((mps_arg_s){(_key), {._key##_FIELD() = (_val)}}) + MPS_END; \ + MPS_END /* Keep in sync with diff --git a/mps/code/mpsacl.h b/mps/code/mpsacl.h index 9f8ea3f6362..b9fc2913f63 100644 --- a/mps/code/mpsacl.h +++ b/mps/code/mpsacl.h @@ -12,7 +12,7 @@ /* Client arena base address argument */ extern const struct mps_key_s _mps_key_arena_cl_addr; #define MPS_KEY_ARENA_CL_BASE (&_mps_key_arena_cl_addr) -#define MPS_KEY_ARENA_CL_BASE_FIELD() addr +#define MPS_KEY_ARENA_CL_BASE_FIELD addr extern mps_arena_class_t mps_arena_class_cl(void); diff --git a/mps/code/mpscams.h b/mps/code/mpscams.h index f410c2734dd..5c1cc1b6f8f 100644 --- a/mps/code/mpscams.h +++ b/mps/code/mpscams.h @@ -12,7 +12,7 @@ extern const struct mps_key_s _mps_key_ams_support_ambiguous; #define MPS_KEY_AMS_SUPPORT_AMBIGUOUS (&_mps_key_ams_support_ambiguous) -#define MPS_KEY_AMS_SUPPORT_AMBIGUOUS_FIELD() b +#define MPS_KEY_AMS_SUPPORT_AMBIGUOUS_FIELD b extern mps_class_t mps_class_ams(void); extern mps_class_t mps_class_ams_debug(void); diff --git a/mps/code/mpscawl.h b/mps/code/mpscawl.h index 5271560b11f..4c0af1fb17e 100644 --- a/mps/code/mpscawl.h +++ b/mps/code/mpscawl.h @@ -11,7 +11,7 @@ extern const struct mps_key_s _mps_key_awl_find_dependent; #define MPS_KEY_AWL_FIND_DEPENDENT (&_mps_key_awl_find_dependent) -#define MPS_KEY_AWL_FIND_DEPENDENT_FIELD() addr_method +#define MPS_KEY_AWL_FIND_DEPENDENT_FIELD addr_method extern mps_class_t mps_class_awl(void); diff --git a/mps/code/mpscmfs.h b/mps/code/mpscmfs.h index 87f6e108424..cc0a411260b 100644 --- a/mps/code/mpscmfs.h +++ b/mps/code/mpscmfs.h @@ -11,7 +11,7 @@ extern const struct mps_key_s _mps_key_mfs_unit_size; #define MPS_KEY_MFS_UNIT_SIZE (&_mps_key_mfs_unit_size) -#define MPS_KEY_MFS_UNIT_SIZE_FIELD() size +#define MPS_KEY_MFS_UNIT_SIZE_FIELD size extern mps_class_t mps_class_mfs(void); diff --git a/mps/code/mpscmvff.h b/mps/code/mpscmvff.h index 09164872b76..f8bc97b7f3b 100644 --- a/mps/code/mpscmvff.h +++ b/mps/code/mpscmvff.h @@ -11,13 +11,13 @@ extern const struct mps_key_s _mps_key_mvff_slot_high; #define MPS_KEY_MVFF_SLOT_HIGH (&_mps_key_mvff_slot_high) -#define MPS_KEY_MVFF_SLOT_HIGH_FIELD() b +#define MPS_KEY_MVFF_SLOT_HIGH_FIELD b extern const struct mps_key_s _mps_key_mvff_arena_high; #define MPS_KEY_MVFF_ARENA_HIGH (&_mps_key_mvff_arena_high) -#define MPS_KEY_MVFF_ARENA_HIGH_FIELD() b +#define MPS_KEY_MVFF_ARENA_HIGH_FIELD b extern const struct mps_key_s _mps_key_mvff_first_fit; #define MPS_KEY_MVFF_FIRST_FIT (&_mps_key_mvff_first_fit) -#define MPS_KEY_MVFF_FIRST_FIT_FIELD() b +#define MPS_KEY_MVFF_FIRST_FIT_FIELD b extern size_t mps_mvff_free_size(mps_pool_t mps_pool); extern size_t mps_mvff_size(mps_pool_t mps_pool); diff --git a/mps/code/mpscmvt.h b/mps/code/mpscmvt.h index 2237639310b..5a1e5eb6ad5 100644 --- a/mps/code/mpscmvt.h +++ b/mps/code/mpscmvt.h @@ -11,10 +11,10 @@ extern const struct mps_key_s _mps_key_mvt_reserve_depth; #define MPS_KEY_MVT_RESERVE_DEPTH (&_mps_key_mvt_reserve_depth) -#define MPS_KEY_MVT_RESERVE_DEPTH_FIELD() count +#define MPS_KEY_MVT_RESERVE_DEPTH_FIELD count extern const struct mps_key_s _mps_key_mvt_frag_limit; #define MPS_KEY_MVT_FRAG_LIMIT (&_mps_key_mvt_frag_limit) -#define MPS_KEY_MVT_FRAG_LIMIT_FIELD() count +#define MPS_KEY_MVT_FRAG_LIMIT_FIELD count /* The mvt pool class has five extra parameters to mps_pool_create: * mps_res_t mps_pool_create(mps_pool_t * pool, mps_arena_t arena, -- cgit v1.2.1