mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 04:58:00 +00:00
Bug 987305 - Refactor EnumSerializer - r=nfroyd
This commit is contained in:
parent
beb6652b55
commit
e8b418c5f5
@ -157,9 +157,9 @@ namespace IPC {
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::asmjscache::OpenMode> :
|
||||
public EnumSerializer<mozilla::dom::asmjscache::OpenMode,
|
||||
mozilla::dom::asmjscache::eOpenForRead,
|
||||
mozilla::dom::asmjscache::NUM_OPEN_MODES>
|
||||
public ContiguousEnumSerializer<mozilla::dom::asmjscache::OpenMode,
|
||||
mozilla::dom::asmjscache::eOpenForRead,
|
||||
mozilla::dom::asmjscache::NUM_OPEN_MODES>
|
||||
{ };
|
||||
|
||||
template <>
|
||||
|
@ -14,9 +14,10 @@ namespace IPC {
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::bluetooth::BluetoothObjectType>
|
||||
: public EnumSerializer<mozilla::dom::bluetooth::BluetoothObjectType,
|
||||
mozilla::dom::bluetooth::TYPE_MANAGER,
|
||||
mozilla::dom::bluetooth::TYPE_INVALID>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::bluetooth::BluetoothObjectType,
|
||||
mozilla::dom::bluetooth::TYPE_MANAGER,
|
||||
mozilla::dom::bluetooth::TYPE_INVALID>
|
||||
{ };
|
||||
|
||||
} // namespace IPC
|
||||
|
@ -17,9 +17,10 @@ namespace IPC {
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::quota::PersistenceType> :
|
||||
public EnumSerializer<mozilla::dom::quota::PersistenceType,
|
||||
mozilla::dom::quota::PERSISTENCE_TYPE_PERSISTENT,
|
||||
mozilla::dom::quota::PERSISTENCE_TYPE_INVALID>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::dom::quota::PersistenceType,
|
||||
mozilla::dom::quota::PERSISTENCE_TYPE_PERSISTENT,
|
||||
mozilla::dom::quota::PERSISTENCE_TYPE_INVALID>
|
||||
{ };
|
||||
|
||||
template <>
|
||||
@ -45,9 +46,10 @@ struct ParamTraits<mozilla::dom::indexedDB::Key>
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::indexedDB::KeyPath::KeyPathType> :
|
||||
public EnumSerializer<mozilla::dom::indexedDB::KeyPath::KeyPathType,
|
||||
mozilla::dom::indexedDB::KeyPath::NONEXISTENT,
|
||||
mozilla::dom::indexedDB::KeyPath::ENDGUARD>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::dom::indexedDB::KeyPath::KeyPathType,
|
||||
mozilla::dom::indexedDB::KeyPath::NONEXISTENT,
|
||||
mozilla::dom::indexedDB::KeyPath::ENDGUARD>
|
||||
{ };
|
||||
|
||||
template <>
|
||||
@ -75,16 +77,18 @@ struct ParamTraits<mozilla::dom::indexedDB::KeyPath>
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::indexedDB::IDBCursor::Direction> :
|
||||
public EnumSerializer<mozilla::dom::indexedDB::IDBCursor::Direction,
|
||||
mozilla::dom::indexedDB::IDBCursor::NEXT,
|
||||
mozilla::dom::indexedDB::IDBCursor::DIRECTION_INVALID>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::dom::indexedDB::IDBCursor::Direction,
|
||||
mozilla::dom::indexedDB::IDBCursor::NEXT,
|
||||
mozilla::dom::indexedDB::IDBCursor::DIRECTION_INVALID>
|
||||
{ };
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::indexedDB::IDBTransaction::Mode> :
|
||||
public EnumSerializer<mozilla::dom::indexedDB::IDBTransaction::Mode,
|
||||
mozilla::dom::indexedDB::IDBTransaction::READ_ONLY,
|
||||
mozilla::dom::indexedDB::IDBTransaction::MODE_INVALID>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::dom::indexedDB::IDBTransaction::Mode,
|
||||
mozilla::dom::indexedDB::IDBTransaction::READ_ONLY,
|
||||
mozilla::dom::indexedDB::IDBTransaction::MODE_INVALID>
|
||||
{ };
|
||||
|
||||
template <>
|
||||
|
@ -90,9 +90,9 @@ struct ParamTraits<mozilla::dom::AudioChannel>
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::AudioChannelState>
|
||||
: public EnumSerializer<mozilla::dom::AudioChannelState,
|
||||
mozilla::dom::AUDIO_CHANNEL_STATE_NORMAL,
|
||||
mozilla::dom::AUDIO_CHANNEL_STATE_LAST>
|
||||
: public ContiguousEnumSerializer<mozilla::dom::AudioChannelState,
|
||||
mozilla::dom::AUDIO_CHANNEL_STATE_NORMAL,
|
||||
mozilla::dom::AUDIO_CHANNEL_STATE_LAST>
|
||||
{ };
|
||||
|
||||
}
|
||||
|
@ -87,9 +87,10 @@ namespace IPC {
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::mobilemessage::DeliveryState>
|
||||
: public EnumSerializer<mozilla::dom::mobilemessage::DeliveryState,
|
||||
mozilla::dom::mobilemessage::eDeliveryState_Sent,
|
||||
mozilla::dom::mobilemessage::eDeliveryState_EndGuard>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::mobilemessage::DeliveryState,
|
||||
mozilla::dom::mobilemessage::eDeliveryState_Sent,
|
||||
mozilla::dom::mobilemessage::eDeliveryState_EndGuard>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -97,9 +98,10 @@ struct ParamTraits<mozilla::dom::mobilemessage::DeliveryState>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::mobilemessage::DeliveryStatus>
|
||||
: public EnumSerializer<mozilla::dom::mobilemessage::DeliveryStatus,
|
||||
mozilla::dom::mobilemessage::eDeliveryStatus_NotApplicable,
|
||||
mozilla::dom::mobilemessage::eDeliveryStatus_EndGuard>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::mobilemessage::DeliveryStatus,
|
||||
mozilla::dom::mobilemessage::eDeliveryStatus_NotApplicable,
|
||||
mozilla::dom::mobilemessage::eDeliveryStatus_EndGuard>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -107,9 +109,10 @@ struct ParamTraits<mozilla::dom::mobilemessage::DeliveryStatus>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::mobilemessage::ReadStatus>
|
||||
: public EnumSerializer<mozilla::dom::mobilemessage::ReadStatus,
|
||||
mozilla::dom::mobilemessage::eReadStatus_NotApplicable,
|
||||
mozilla::dom::mobilemessage::eReadStatus_EndGuard>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::mobilemessage::ReadStatus,
|
||||
mozilla::dom::mobilemessage::eReadStatus_NotApplicable,
|
||||
mozilla::dom::mobilemessage::eReadStatus_EndGuard>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -117,9 +120,10 @@ struct ParamTraits<mozilla::dom::mobilemessage::ReadStatus>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::mobilemessage::ReadState>
|
||||
: public EnumSerializer<mozilla::dom::mobilemessage::ReadState,
|
||||
mozilla::dom::mobilemessage::eReadState_Unknown,
|
||||
mozilla::dom::mobilemessage::eReadState_EndGuard>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::mobilemessage::ReadState,
|
||||
mozilla::dom::mobilemessage::eReadState_Unknown,
|
||||
mozilla::dom::mobilemessage::eReadState_EndGuard>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -127,9 +131,10 @@ struct ParamTraits<mozilla::dom::mobilemessage::ReadState>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::mobilemessage::MessageClass>
|
||||
: public EnumSerializer<mozilla::dom::mobilemessage::MessageClass,
|
||||
mozilla::dom::mobilemessage::eMessageClass_Normal,
|
||||
mozilla::dom::mobilemessage::eMessageClass_EndGuard>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::mobilemessage::MessageClass,
|
||||
mozilla::dom::mobilemessage::eMessageClass_Normal,
|
||||
mozilla::dom::mobilemessage::eMessageClass_EndGuard>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -137,9 +142,10 @@ struct ParamTraits<mozilla::dom::mobilemessage::MessageClass>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::dom::mobilemessage::MessageType>
|
||||
: public EnumSerializer<mozilla::dom::mobilemessage::MessageType,
|
||||
mozilla::dom::mobilemessage::eMessageType_SMS,
|
||||
mozilla::dom::mobilemessage::eMessageType_EndGuard>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::dom::mobilemessage::MessageType,
|
||||
mozilla::dom::mobilemessage::eMessageType_SMS,
|
||||
mozilla::dom::mobilemessage::eMessageType_EndGuard>
|
||||
{};
|
||||
|
||||
} // namespace IPC
|
||||
|
@ -244,72 +244,82 @@ struct ParamTraits<gfx3DMatrix>
|
||||
|
||||
template <>
|
||||
struct ParamTraits<gfxContentType>
|
||||
: public TypedEnumSerializer<gfxContentType,
|
||||
gfxContentType::COLOR,
|
||||
gfxContentType::SENTINEL>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
gfxContentType,
|
||||
gfxContentType::COLOR,
|
||||
gfxContentType::SENTINEL>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<gfxSurfaceType>
|
||||
: public TypedEnumSerializer<gfxSurfaceType,
|
||||
gfxSurfaceType::Image,
|
||||
gfxSurfaceType::Max>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
gfxSurfaceType,
|
||||
gfxSurfaceType::Image,
|
||||
gfxSurfaceType::Max>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::GraphicsFilterType>
|
||||
: public EnumSerializer<mozilla::GraphicsFilterType,
|
||||
GraphicsFilter::FILTER_FAST,
|
||||
GraphicsFilter::FILTER_SENTINEL>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::GraphicsFilterType,
|
||||
GraphicsFilter::FILTER_FAST,
|
||||
GraphicsFilter::FILTER_SENTINEL>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::layers::LayersBackend>
|
||||
: public TypedEnumSerializer<mozilla::layers::LayersBackend,
|
||||
mozilla::layers::LayersBackend::LAYERS_NONE,
|
||||
mozilla::layers::LayersBackend::LAYERS_LAST>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
mozilla::layers::LayersBackend,
|
||||
mozilla::layers::LayersBackend::LAYERS_NONE,
|
||||
mozilla::layers::LayersBackend::LAYERS_LAST>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::layers::ScaleMode>
|
||||
: public TypedEnumSerializer<mozilla::layers::ScaleMode,
|
||||
mozilla::layers::ScaleMode::SCALE_NONE,
|
||||
mozilla::layers::ScaleMode::SENTINEL>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
mozilla::layers::ScaleMode,
|
||||
mozilla::layers::ScaleMode::SCALE_NONE,
|
||||
mozilla::layers::ScaleMode::SENTINEL>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<gfxImageFormat>
|
||||
: public TypedEnumSerializer<gfxImageFormat,
|
||||
gfxImageFormat::ARGB32,
|
||||
gfxImageFormat::Unknown>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
gfxImageFormat,
|
||||
gfxImageFormat::ARGB32,
|
||||
gfxImageFormat::Unknown>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::gfx::AttributeName>
|
||||
: public EnumSerializer<mozilla::gfx::AttributeName,
|
||||
mozilla::gfx::eBlendBlendmode,
|
||||
mozilla::gfx::eLastAttributeName>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::gfx::AttributeName,
|
||||
mozilla::gfx::eBlendBlendmode,
|
||||
mozilla::gfx::eLastAttributeName>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::gfx::AttributeType>
|
||||
: public TypedEnumSerializer<mozilla::gfx::AttributeType,
|
||||
mozilla::gfx::AttributeType::eBool,
|
||||
mozilla::gfx::AttributeType::Max>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
mozilla::gfx::AttributeType,
|
||||
mozilla::gfx::AttributeType::eBool,
|
||||
mozilla::gfx::AttributeType::Max>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::gfx::PrimitiveType>
|
||||
: public TypedEnumSerializer<mozilla::gfx::PrimitiveType,
|
||||
mozilla::gfx::PrimitiveType::Empty,
|
||||
mozilla::gfx::PrimitiveType::Max>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
mozilla::gfx::PrimitiveType,
|
||||
mozilla::gfx::PrimitiveType::Empty,
|
||||
mozilla::gfx::PrimitiveType::Max>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::gfx::ColorSpace>
|
||||
: public TypedEnumSerializer<mozilla::gfx::ColorSpace,
|
||||
mozilla::gfx::ColorSpace::SRGB,
|
||||
mozilla::gfx::ColorSpace::Max>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
mozilla::gfx::ColorSpace,
|
||||
mozilla::gfx::ColorSpace::SRGB,
|
||||
mozilla::gfx::ColorSpace::Max>
|
||||
{};
|
||||
|
||||
/*
|
||||
@ -798,16 +808,18 @@ struct ParamTraits<mozilla::layers::TextureInfo>
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::layers::CompositableType>
|
||||
: public EnumSerializer<mozilla::layers::CompositableType,
|
||||
mozilla::layers::BUFFER_UNKNOWN,
|
||||
mozilla::layers::BUFFER_COUNT>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::layers::CompositableType,
|
||||
mozilla::layers::BUFFER_UNKNOWN,
|
||||
mozilla::layers::BUFFER_COUNT>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::gfx::SurfaceFormat>
|
||||
: public TypedEnumSerializer<mozilla::gfx::SurfaceFormat,
|
||||
mozilla::gfx::SurfaceFormat::B8G8R8A8,
|
||||
mozilla::gfx::SurfaceFormat::UNKNOWN>
|
||||
: public ContiguousTypedEnumSerializer<
|
||||
mozilla::gfx::SurfaceFormat,
|
||||
mozilla::gfx::SurfaceFormat::B8G8R8A8,
|
||||
mozilla::gfx::SurfaceFormat::UNKNOWN>
|
||||
{};
|
||||
|
||||
template <>
|
||||
|
@ -86,9 +86,10 @@ struct ParamTraits<mozilla::layers::MagicGrallocBufferHandle> {
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::ScreenRotation>
|
||||
: public EnumSerializer<mozilla::ScreenRotation,
|
||||
mozilla::ROTATION_0,
|
||||
mozilla::ROTATION_COUNT>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::ScreenRotation,
|
||||
mozilla::ROTATION_0,
|
||||
mozilla::ROTATION_COUNT>
|
||||
{};
|
||||
|
||||
} // namespace IPC
|
||||
|
@ -58,16 +58,18 @@ namespace IPC {
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::SensorType>:
|
||||
public EnumSerializer<mozilla::hal::SensorType,
|
||||
mozilla::hal::SENSOR_UNKNOWN,
|
||||
mozilla::hal::NUM_SENSOR_TYPE> {
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::SensorType,
|
||||
mozilla::hal::SENSOR_UNKNOWN,
|
||||
mozilla::hal::NUM_SENSOR_TYPE> {
|
||||
};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::SensorAccuracyType>:
|
||||
public EnumSerializer<mozilla::hal::SensorAccuracyType,
|
||||
mozilla::hal::SENSOR_ACCURACY_UNKNOWN,
|
||||
mozilla::hal::NUM_SENSOR_ACCURACY_TYPE> {
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::SensorAccuracyType,
|
||||
mozilla::hal::SENSOR_ACCURACY_UNKNOWN,
|
||||
mozilla::hal::NUM_SENSOR_ACCURACY_TYPE> {
|
||||
|
||||
};
|
||||
} // namespace IPC
|
||||
|
@ -212,9 +212,10 @@ namespace IPC {
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::LightType>
|
||||
: public EnumSerializer<mozilla::hal::LightType,
|
||||
mozilla::hal::eHalLightID_Backlight,
|
||||
mozilla::hal::eHalLightID_Count>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::hal::LightType,
|
||||
mozilla::hal::eHalLightID_Backlight,
|
||||
mozilla::hal::eHalLightID_Count>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -222,9 +223,10 @@ struct ParamTraits<mozilla::hal::LightType>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::LightMode>
|
||||
: public EnumSerializer<mozilla::hal::LightMode,
|
||||
mozilla::hal::eHalLightMode_User,
|
||||
mozilla::hal::eHalLightMode_Count>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::hal::LightMode,
|
||||
mozilla::hal::eHalLightMode_User,
|
||||
mozilla::hal::eHalLightMode_Count>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -232,9 +234,10 @@ struct ParamTraits<mozilla::hal::LightMode>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::FlashMode>
|
||||
: public EnumSerializer<mozilla::hal::FlashMode,
|
||||
mozilla::hal::eHalLightFlash_None,
|
||||
mozilla::hal::eHalLightFlash_Count>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::hal::FlashMode,
|
||||
mozilla::hal::eHalLightFlash_None,
|
||||
mozilla::hal::eHalLightFlash_Count>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -242,9 +245,10 @@ struct ParamTraits<mozilla::hal::FlashMode>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::ShutdownMode>
|
||||
: public EnumSerializer<mozilla::hal::ShutdownMode,
|
||||
mozilla::hal::eHalShutdownMode_Unknown,
|
||||
mozilla::hal::eHalShutdownMode_Count>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::hal::ShutdownMode,
|
||||
mozilla::hal::eHalShutdownMode_Unknown,
|
||||
mozilla::hal::eHalShutdownMode_Count>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -252,9 +256,10 @@ struct ParamTraits<mozilla::hal::ShutdownMode>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::WakeLockControl>
|
||||
: public EnumSerializer<mozilla::hal::WakeLockControl,
|
||||
mozilla::hal::WAKE_LOCK_REMOVE_ONE,
|
||||
mozilla::hal::NUM_WAKE_LOCK>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::hal::WakeLockControl,
|
||||
mozilla::hal::WAKE_LOCK_REMOVE_ONE,
|
||||
mozilla::hal::NUM_WAKE_LOCK>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -262,9 +267,10 @@ struct ParamTraits<mozilla::hal::WakeLockControl>
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::SwitchState>:
|
||||
public EnumSerializer<mozilla::hal::SwitchState,
|
||||
mozilla::hal::SWITCH_STATE_UNKNOWN,
|
||||
mozilla::hal::NUM_SWITCH_STATE> {
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::SwitchState,
|
||||
mozilla::hal::SWITCH_STATE_UNKNOWN,
|
||||
mozilla::hal::NUM_SWITCH_STATE> {
|
||||
};
|
||||
|
||||
/**
|
||||
@ -272,16 +278,18 @@ struct ParamTraits<mozilla::hal::SwitchState>:
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::SwitchDevice>:
|
||||
public EnumSerializer<mozilla::hal::SwitchDevice,
|
||||
mozilla::hal::SWITCH_DEVICE_UNKNOWN,
|
||||
mozilla::hal::NUM_SWITCH_DEVICE> {
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::SwitchDevice,
|
||||
mozilla::hal::SWITCH_DEVICE_UNKNOWN,
|
||||
mozilla::hal::NUM_SWITCH_DEVICE> {
|
||||
};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::ProcessPriority>:
|
||||
public EnumSerializer<mozilla::hal::ProcessPriority,
|
||||
mozilla::hal::PROCESS_PRIORITY_UNKNOWN,
|
||||
mozilla::hal::NUM_PROCESS_PRIORITY> {
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::ProcessPriority,
|
||||
mozilla::hal::PROCESS_PRIORITY_UNKNOWN,
|
||||
mozilla::hal::NUM_PROCESS_PRIORITY> {
|
||||
};
|
||||
|
||||
/**
|
||||
@ -289,9 +297,10 @@ struct ParamTraits<mozilla::hal::ProcessPriority>:
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::FMRadioOperation>:
|
||||
public EnumSerializer<mozilla::hal::FMRadioOperation,
|
||||
mozilla::hal::FM_RADIO_OPERATION_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_OPERATION>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::FMRadioOperation,
|
||||
mozilla::hal::FM_RADIO_OPERATION_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_OPERATION>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -299,9 +308,10 @@ struct ParamTraits<mozilla::hal::FMRadioOperation>:
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::FMRadioOperationStatus>:
|
||||
public EnumSerializer<mozilla::hal::FMRadioOperationStatus,
|
||||
mozilla::hal::FM_RADIO_OPERATION_STATUS_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_OPERATION_STATUS>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::FMRadioOperationStatus,
|
||||
mozilla::hal::FM_RADIO_OPERATION_STATUS_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_OPERATION_STATUS>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -309,9 +319,10 @@ struct ParamTraits<mozilla::hal::FMRadioOperationStatus>:
|
||||
*/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::FMRadioSeekDirection>:
|
||||
public EnumSerializer<mozilla::hal::FMRadioSeekDirection,
|
||||
mozilla::hal::FM_RADIO_SEEK_DIRECTION_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_SEEK_DIRECTION>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::FMRadioSeekDirection,
|
||||
mozilla::hal::FM_RADIO_SEEK_DIRECTION_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_SEEK_DIRECTION>
|
||||
{};
|
||||
|
||||
/**
|
||||
@ -319,10 +330,12 @@ struct ParamTraits<mozilla::hal::FMRadioSeekDirection>:
|
||||
**/
|
||||
template <>
|
||||
struct ParamTraits<mozilla::hal::FMRadioCountry>:
|
||||
public EnumSerializer<mozilla::hal::FMRadioCountry,
|
||||
mozilla::hal::FM_RADIO_COUNTRY_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_COUNTRY>
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::FMRadioCountry,
|
||||
mozilla::hal::FM_RADIO_COUNTRY_UNKNOWN,
|
||||
mozilla::hal::NUM_FM_RADIO_COUNTRY>
|
||||
{};
|
||||
|
||||
} // namespace IPC
|
||||
|
||||
#endif // mozilla_hal_Types_h
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "mozilla/TimeStamp_windows.h"
|
||||
#endif
|
||||
#include "mozilla/TypedEnum.h"
|
||||
#include "mozilla/IntegerTypeTraits.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
@ -91,43 +92,31 @@ namespace IPC {
|
||||
/**
|
||||
* Generic enum serializer.
|
||||
*
|
||||
* Consider using the specializations below, such as ContiguousEnumSerializer.
|
||||
*
|
||||
* This is a generic serializer for any enum type used in IPDL.
|
||||
* Programmers can define ParamTraits<E> for enum type E by deriving
|
||||
* EnumSerializer<E, smallestLegal, highGuard>.
|
||||
*
|
||||
* The serializer would check value againts a range specified by
|
||||
* smallestLegal and highGuard. Only values from smallestLegal to
|
||||
* highGuard are valid, include smallestLegal but highGuard.
|
||||
*
|
||||
* For example, following is definition of serializer for enum type FOO.
|
||||
* \code
|
||||
* enum FOO { FOO_FIRST, FOO_SECOND, FOO_LAST, NUM_FOO };
|
||||
*
|
||||
* template <>
|
||||
* struct ParamTraits<FOO>:
|
||||
* public EnumSerializer<FOO, FOO_FIRST, NUM_FOO> {};
|
||||
* \endcode
|
||||
* FOO_FIRST, FOO_SECOND, and FOO_LAST are valid value.
|
||||
* EnumSerializer<E, MyEnumValidator> where MyEnumValidator is a struct
|
||||
* that has to define a static IsLegalValue function returning whether
|
||||
* a given value is a legal value of the enum type at hand.
|
||||
*
|
||||
* \sa https://developer.mozilla.org/en/IPDL/Type_Serialization
|
||||
*/
|
||||
template <typename E, E smallestLegal, E highBound>
|
||||
template <typename E, typename EnumValidator>
|
||||
struct EnumSerializer {
|
||||
typedef E paramType;
|
||||
|
||||
static bool IsLegalValue(const paramType &aValue) {
|
||||
return smallestLegal <= aValue && aValue < highBound;
|
||||
}
|
||||
typedef typename mozilla::UnsignedStdintTypeForSize<sizeof(paramType)>::Type
|
||||
uintParamType;
|
||||
|
||||
static void Write(Message* aMsg, const paramType& aValue) {
|
||||
MOZ_ASSERT(IsLegalValue(aValue));
|
||||
WriteParam(aMsg, (int32_t)aValue);
|
||||
MOZ_ASSERT(EnumValidator::IsLegalValue(aValue));
|
||||
WriteParam(aMsg, uintParamType(aValue));
|
||||
}
|
||||
|
||||
static bool Read(const Message* aMsg, void** aIter, paramType* aResult) {
|
||||
int32_t value;
|
||||
uintParamType value;
|
||||
if(!ReadParam(aMsg, aIter, &value) ||
|
||||
!IsLegalValue(paramType(value))) {
|
||||
!EnumValidator::IsLegalValue(paramType(value))) {
|
||||
return false;
|
||||
}
|
||||
*aResult = paramType(value);
|
||||
@ -135,48 +124,79 @@ struct EnumSerializer {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Variant of EnumSerializer for MFBT's typed enums
|
||||
* defined by MOZ_BEGIN_ENUM_CLASS in mfbt/TypedEnum.h
|
||||
*
|
||||
* This is only needed on non-C++11 compilers such as B2G's GCC 4.4,
|
||||
* where MOZ_BEGIN_ENUM_CLASS is implemented using a nested enum, T::Enum,
|
||||
* in a wrapper class T. In this case, the "typed enum" type T cannot be
|
||||
* used as an integer template parameter type. MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(T)
|
||||
* is how we get at the integer enum type.
|
||||
*/
|
||||
template <typename E,
|
||||
MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) smallestLegal,
|
||||
MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) highBound>
|
||||
struct TypedEnumSerializer {
|
||||
typedef E paramType;
|
||||
typedef MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) intParamType;
|
||||
|
||||
static bool IsLegalValue(const paramType &aValue) {
|
||||
return smallestLegal <= intParamType(aValue) && intParamType(aValue) < highBound;
|
||||
}
|
||||
|
||||
static void Write(Message* aMsg, const paramType& aValue) {
|
||||
MOZ_ASSERT(IsLegalValue(aValue));
|
||||
WriteParam(aMsg, int32_t(intParamType(aValue)));
|
||||
}
|
||||
|
||||
static bool Read(const Message* aMsg, void** aIter, paramType* aResult) {
|
||||
int32_t value;
|
||||
if(!ReadParam(aMsg, aIter, &value) ||
|
||||
!IsLegalValue(intParamType(value))) {
|
||||
return false;
|
||||
}
|
||||
*aResult = intParamType(value);
|
||||
return true;
|
||||
E MinLegal,
|
||||
E HighBound>
|
||||
struct ContiguousEnumValidator
|
||||
{
|
||||
static bool IsLegalValue(E e)
|
||||
{
|
||||
return MinLegal <= e && e < HighBound;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename E,
|
||||
MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) MinLegal,
|
||||
MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) HighBound>
|
||||
class ContiguousTypedEnumValidator
|
||||
{
|
||||
// Silence overzealous -Wtype-limits bug in GCC fixed in GCC 4.8:
|
||||
// "comparison of unsigned expression >= 0 is always true"
|
||||
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11856
|
||||
template <typename T>
|
||||
static bool IsLessThanOrEqual(T a, T b) { return a <= b; }
|
||||
|
||||
public:
|
||||
static bool IsLegalValue(E e)
|
||||
{
|
||||
typedef MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) ActualEnumType;
|
||||
return IsLessThanOrEqual(MinLegal, ActualEnumType(e)) &&
|
||||
ActualEnumType(e) < HighBound;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Specialization of EnumSerializer for enums with contiguous enum values.
|
||||
*
|
||||
* Provide two values: MinLegal, HighBound. An enum value x will be
|
||||
* considered legal if MinLegal <= x < HighBound.
|
||||
*
|
||||
* For example, following is definition of serializer for enum type FOO.
|
||||
* \code
|
||||
* enum FOO { FOO_FIRST, FOO_SECOND, FOO_LAST, NUM_FOO };
|
||||
*
|
||||
* template <>
|
||||
* struct ParamTraits<FOO>:
|
||||
* public ContiguousEnumSerializer<FOO, FOO_FIRST, NUM_FOO> {};
|
||||
* \endcode
|
||||
* FOO_FIRST, FOO_SECOND, and FOO_LAST are valid value.
|
||||
*/
|
||||
template <typename E,
|
||||
E MinLegal,
|
||||
E HighBound>
|
||||
struct ContiguousEnumSerializer
|
||||
: EnumSerializer<E,
|
||||
ContiguousEnumValidator<E, MinLegal, HighBound>>
|
||||
{};
|
||||
|
||||
/**
|
||||
* Similar to ContiguousEnumSerializer, but for MFBT typed enums
|
||||
* as constructed by MOZ_BEGIN_ENUM_CLASS. This can go away when
|
||||
* we drop MOZ_BEGIN_ENUM_CLASS and use C++11 enum classes directly.
|
||||
*/
|
||||
template <typename E,
|
||||
MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) MinLegal,
|
||||
MOZ_TEMPLATE_ENUM_CLASS_ENUM_TYPE(E) HighBound>
|
||||
struct ContiguousTypedEnumSerializer
|
||||
: EnumSerializer<E,
|
||||
ContiguousTypedEnumValidator<E, MinLegal, HighBound>>
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct ParamTraits<base::ChildPrivileges>
|
||||
: public EnumSerializer<base::ChildPrivileges,
|
||||
base::PRIVILEGES_DEFAULT,
|
||||
base::PRIVILEGES_LAST>
|
||||
: public ContiguousEnumSerializer<base::ChildPrivileges,
|
||||
base::PRIVILEGES_DEFAULT,
|
||||
base::PRIVILEGES_LAST>
|
||||
{ };
|
||||
|
||||
template<>
|
||||
@ -477,9 +497,9 @@ struct ParamTraits<float>
|
||||
|
||||
template <>
|
||||
struct ParamTraits<nsCSSProperty>
|
||||
: public EnumSerializer<nsCSSProperty,
|
||||
eCSSProperty_UNKNOWN,
|
||||
eCSSProperty_COUNT>
|
||||
: public ContiguousEnumSerializer<nsCSSProperty,
|
||||
eCSSProperty_UNKNOWN,
|
||||
eCSSProperty_COUNT>
|
||||
{};
|
||||
|
||||
template<>
|
||||
|
@ -35,9 +35,10 @@ namespace IPC {
|
||||
|
||||
template <>
|
||||
struct ParamTraits<mozilla::layout::ScrollingBehavior>
|
||||
: public EnumSerializer<mozilla::layout::ScrollingBehavior,
|
||||
mozilla::layout::DEFAULT_SCROLLING,
|
||||
mozilla::layout::SCROLLING_BEHAVIOR_SENTINEL>
|
||||
: public ContiguousEnumSerializer<
|
||||
mozilla::layout::ScrollingBehavior,
|
||||
mozilla::layout::DEFAULT_SCROLLING,
|
||||
mozilla::layout::SCROLLING_BEHAVIOR_SENTINEL>
|
||||
{};
|
||||
|
||||
} // namespace IPC
|
||||
|
Loading…
x
Reference in New Issue
Block a user