mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
switch from enum-primitive-derive to num_enum
This commit is contained in:
parent
89a7846994
commit
c4f9b7bfb8
6 changed files with 155 additions and 315 deletions
|
|
@ -1,5 +1,5 @@
|
|||
use enum_primitive_derive::Primitive;
|
||||
use num_traits::FromPrimitive;
|
||||
use num_enum::TryFromPrimitive;
|
||||
use std::convert::TryFrom;
|
||||
|
||||
pub use generated::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
@ -28,7 +28,7 @@ pub mod tempentities;
|
|||
pub mod usermessage;
|
||||
pub mod voice;
|
||||
|
||||
#[derive(Primitive, Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
|
||||
#[derive(TryFromPrimitive, Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
|
||||
#[repr(u8)]
|
||||
pub enum MessageType {
|
||||
Empty = 0,
|
||||
|
|
@ -64,8 +64,7 @@ pub enum MessageType {
|
|||
impl Parse for MessageType {
|
||||
fn parse(stream: &mut Stream, _state: &ParserState) -> Result<Self> {
|
||||
let raw = stream.read_int(6)?;
|
||||
let prop_type: Option<MessageType> = MessageType::from_u8(raw);
|
||||
prop_type.ok_or(ParseError::InvalidMessageType(raw))
|
||||
MessageType::try_from(raw).map_err(|_| ParseError::InvalidMessageType(raw))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
use bitstream_reader::{BitRead, LittleEndian, ReadError};
|
||||
use enum_primitive_derive::Primitive;
|
||||
use num_traits::FromPrimitive;
|
||||
use num_enum::TryFromPrimitive;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::convert::TryFrom;
|
||||
|
||||
use crate::demo::parser::ParseBitSkip;
|
||||
use crate::{ParseError, ReadResult, Result, Stream};
|
||||
|
||||
#[derive(Primitive, Clone, Copy, Debug)]
|
||||
#[derive(TryFromPrimitive, Clone, Copy, Debug)]
|
||||
#[repr(u8)]
|
||||
pub enum UserMessageType {
|
||||
Geiger = 0,
|
||||
Train = 1,
|
||||
|
|
@ -83,7 +84,7 @@ pub enum UserMessage {
|
|||
impl BitRead<LittleEndian> for UserMessage {
|
||||
fn read(stream: &mut Stream) -> ReadResult<Self> {
|
||||
let message_type =
|
||||
UserMessageType::from_u8(stream.read()?).unwrap_or(UserMessageType::Unknown);
|
||||
UserMessageType::try_from(stream.read::<u8>()?).unwrap_or(UserMessageType::Unknown);
|
||||
let length = stream.read_int(11)?;
|
||||
let mut data = stream.read_bits(length)?;
|
||||
let message = match message_type {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
use bitstream_reader::BitRead;
|
||||
use enum_primitive_derive::Primitive;
|
||||
use num_enum::TryFromPrimitive;
|
||||
use std::convert::TryFrom;
|
||||
|
||||
use crate::{Parse, ParserState, Result, Stream};
|
||||
|
||||
|
|
@ -31,8 +32,9 @@ pub enum Packet {
|
|||
StringTables(StringTablePacket),
|
||||
}
|
||||
|
||||
#[derive(BitRead, Primitive, Debug)]
|
||||
#[derive(BitRead, TryFromPrimitive, Debug)]
|
||||
#[discriminant_bits = 8]
|
||||
#[repr(u8)]
|
||||
pub enum PacketType {
|
||||
Sigon = 1,
|
||||
Message = 2,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use bitstream_reader::{BitRead, LittleEndian};
|
||||
use enumflags2::BitFlags;
|
||||
use enumflags2_derive::EnumFlags;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{Parse, ParseError, ReadResult, Result, Stream};
|
||||
|
|
@ -228,7 +227,7 @@ pub enum SendPropType {
|
|||
NumSendPropTypes = 7,
|
||||
}
|
||||
|
||||
#[derive(EnumFlags, Copy, Clone, PartialEq, Debug)]
|
||||
#[derive(BitFlags, Copy, Clone, PartialEq, Debug)]
|
||||
#[repr(u16)]
|
||||
pub enum SendPropFlag {
|
||||
// Unsigned integer data.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue