diff --git a/atom/src/behaviors.h b/atom/src/behaviors.h index 5c82ec83..71df9347 100644 --- a/atom/src/behaviors.h +++ b/atom/src/behaviors.h @@ -205,6 +205,7 @@ enum Mode: uint8_t Property, ObjectMethod_Name, MemberMethod_Object, + Last // sentinel }; } // namespace GetState diff --git a/atom/src/defaultvaluebehavior.cpp b/atom/src/defaultvaluebehavior.cpp index 3e547c48..4a612fcf 100644 --- a/atom/src/defaultvaluebehavior.cpp +++ b/atom/src/defaultvaluebehavior.cpp @@ -202,12 +202,10 @@ handlers[] = { call_object_object_name_handler, object_method_handler, object_method_name_handler, - member_method_object_handler, - no_op_handler, - no_op_handler + member_method_object_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 16, "Must be exactly 16 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == DefaultValue::Mode::Last, "Handler missing" ); } // namespace @@ -215,7 +213,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 16, "Must be exactly 16 han PyObject* Member::default_value( CAtom* atom ) { - return handlers[ get_default_value_mode() & 0xf ]( this, atom ); + return handlers[ get_default_value_mode() ]( this, atom ); } diff --git a/atom/src/delattrbehavior.cpp b/atom/src/delattrbehavior.cpp index 651850d6..a466c21b 100644 --- a/atom/src/delattrbehavior.cpp +++ b/atom/src/delattrbehavior.cpp @@ -192,7 +192,8 @@ handlers[] = { property_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == DelAttr::Mode::Last, "Handler missing" ); + } // namespace @@ -200,7 +201,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handl int Member::delattr( CAtom* atom ) { - return handlers[ get_delattr_mode() & 0x7 ]( this, atom ); + return handlers[ get_delattr_mode() ]( this, atom ); } diff --git a/atom/src/getattrbehavior.cpp b/atom/src/getattrbehavior.cpp index e54a0205..bcc6cf61 100644 --- a/atom/src/getattrbehavior.cpp +++ b/atom/src/getattrbehavior.cpp @@ -256,14 +256,10 @@ handlers[] = { call_object_object_name_handler, object_method_handler, object_method_name_handler, - member_method_object_handler, - no_op_handler, - no_op_handler, - no_op_handler, - no_op_handler + member_method_object_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 16, "Must be exactly 16 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == GetAttr::Mode::Last, "Handler missing" ); } // namespace @@ -271,7 +267,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 16, "Must be exactly 16 han PyObject* Member::getattr( CAtom* atom ) { - return handlers[ get_getattr_mode() & 0xf ]( this, atom ); + return handlers[ get_getattr_mode() ]( this, atom ); } } // namespace atom diff --git a/atom/src/getstatebehavior.cpp b/atom/src/getstatebehavior.cpp index b7a17e2c..157417bd 100644 --- a/atom/src/getstatebehavior.cpp +++ b/atom/src/getstatebehavior.cpp @@ -124,12 +124,10 @@ handlers[] = { include_non_default_handler, property_handler, object_method_name_handler, - member_method_object_handler, - include_handler, - include_handler + member_method_object_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == GetState::Mode::Last, "Handler missing" ); } // namespace @@ -137,7 +135,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handl PyObject* Member::should_getstate( CAtom* atom ) { - return handlers[ get_getstate_mode() & 0x7 ]( this, atom ); + return handlers[ get_getstate_mode() ]( this, atom ); } } // namespace atom diff --git a/atom/src/postgetattrbehavior.cpp b/atom/src/postgetattrbehavior.cpp index 919a0998..579ecea2 100644 --- a/atom/src/postgetattrbehavior.cpp +++ b/atom/src/postgetattrbehavior.cpp @@ -93,13 +93,10 @@ handlers[] = { delegate_handler, object_method_value_handler, object_method_name_value_handler, - member_method_object_value_handler, - no_op_handler, - no_op_handler, - no_op_handler, + member_method_object_value_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == PostGetAttr::Mode::Last, "Handler missing" ); } // namespace @@ -107,7 +104,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handl PyObject* Member::post_getattr( CAtom* atom, PyObject* value ) { - return handlers[ get_post_getattr_mode() & 0x7 ]( this, atom, value ); + return handlers[ get_post_getattr_mode() ]( this, atom, value ); } diff --git a/atom/src/postsetattrbehavior.cpp b/atom/src/postsetattrbehavior.cpp index c4af2089..b997760b 100644 --- a/atom/src/postsetattrbehavior.cpp +++ b/atom/src/postsetattrbehavior.cpp @@ -106,13 +106,10 @@ handlers[] = { delegate_handler, object_method_old_new_handler, object_method_name_old_new_handler, - member_method_object_old_new_handler, - no_op_handler, - no_op_handler, - no_op_handler + member_method_object_old_new_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == PostSetAttr::Mode::Last, "Handler missing" ); } // namespace @@ -120,7 +117,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handl int Member::post_setattr( CAtom* atom, PyObject* oldvalue, PyObject* newvalue ) { - return handlers[ get_post_setattr_mode() & 0x7 ]( this, atom, oldvalue, newvalue ); + return handlers[ get_post_setattr_mode() ]( this, atom, oldvalue, newvalue ); } diff --git a/atom/src/postvalidatebehavior.cpp b/atom/src/postvalidatebehavior.cpp index 4f0527e2..7a1ec082 100644 --- a/atom/src/postvalidatebehavior.cpp +++ b/atom/src/postvalidatebehavior.cpp @@ -97,13 +97,10 @@ handlers[] = { delegate_handler, object_method_old_new_handler, object_method_name_old_new_handler, - member_method_object_old_new_handler, - no_op_handler, - no_op_handler, - no_op_handler + member_method_object_old_new_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == PostValidate::Mode::Last, "Handler missing" ); } // namespace @@ -111,7 +108,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 8, "Must be exactly 8 handl PyObject* Member::post_validate( CAtom* atom, PyObject* oldvalue, PyObject* newvalue ) { - return handlers[ get_post_validate_mode() & 0x7 ]( this, atom, oldvalue, newvalue ); + return handlers[ get_post_validate_mode() ]( this, atom, oldvalue, newvalue ); } } // namespace atom diff --git a/atom/src/setattrbehavior.cpp b/atom/src/setattrbehavior.cpp index 0497cf16..e578e302 100644 --- a/atom/src/setattrbehavior.cpp +++ b/atom/src/setattrbehavior.cpp @@ -377,13 +377,10 @@ handlers[] = { call_object_object_name_value_handler, object_method_value_handler, object_method_name_value_handler, - member_method_object_value_handler, - no_op_handler, - no_op_handler, - no_op_handler + member_method_object_value_handler }; -static_assert( sizeof(handlers) / sizeof(handler) == 16, "Must be exactly 16 handlers" ); +static_assert( sizeof(handlers) / sizeof(handler) == SetAttr::Mode::Last, "Handler missing" ); } // namespace @@ -391,7 +388,7 @@ static_assert( sizeof(handlers) / sizeof(handler) == 16, "Must be exactly 16 han int Member::setattr( CAtom* atom, PyObject* value ) { - return handlers[ get_setattr_mode() & 0xf ]( this, atom, value ); + return handlers[ get_setattr_mode() ]( this, atom, value ); } diff --git a/atom/src/validatebehavior.cpp b/atom/src/validatebehavior.cpp index 4746f5dd..b91c6603 100644 --- a/atom/src/validatebehavior.cpp +++ b/atom/src/validatebehavior.cpp @@ -1000,6 +1000,7 @@ handlers[] = { member_method_object_old_new_handler }; +static_assert( sizeof(handlers) / sizeof(handler) == Validate::Mode::Last, "Handler missing" ); } // namespace @@ -1007,8 +1008,6 @@ handlers[] = { PyObject* Member::validate( CAtom* atom, PyObject* oldvalue, PyObject* newvalue ) { - if( get_validate_mode() >= sizeof( handlers ) / sizeof( handler ) ) - return no_op_handler( this, atom, oldvalue, newvalue ); // LCOV_EXCL_LINE return handlers[ get_validate_mode() ]( this, atom, oldvalue, newvalue ); }