swf: Decode and encode the `applytype` op.
This commit is contained in:
parent
86616b748f
commit
9dafddc1ae
|
@ -2,6 +2,7 @@
|
||||||
pub enum OpCode {
|
pub enum OpCode {
|
||||||
Add = 0xA0,
|
Add = 0xA0,
|
||||||
AddI = 0xC5,
|
AddI = 0xC5,
|
||||||
|
ApplyType = 0x53,
|
||||||
AsType = 0x86,
|
AsType = 0x86,
|
||||||
AsTypeLate = 0x87,
|
AsTypeLate = 0x87,
|
||||||
BitAnd = 0xA8,
|
BitAnd = 0xA8,
|
||||||
|
|
|
@ -519,6 +519,9 @@ impl<'a> Reader<'a> {
|
||||||
let op = match opcode {
|
let op = match opcode {
|
||||||
OpCode::Add => Op::Add,
|
OpCode::Add => Op::Add,
|
||||||
OpCode::AddI => Op::AddI,
|
OpCode::AddI => Op::AddI,
|
||||||
|
OpCode::ApplyType => Op::ApplyType {
|
||||||
|
num_types: self.read_u30()?,
|
||||||
|
},
|
||||||
OpCode::AsType => Op::AsType {
|
OpCode::AsType => Op::AsType {
|
||||||
type_name: self.read_index()?,
|
type_name: self.read_index()?,
|
||||||
},
|
},
|
||||||
|
|
|
@ -233,6 +233,9 @@ pub struct Script {
|
||||||
pub enum Op {
|
pub enum Op {
|
||||||
Add,
|
Add,
|
||||||
AddI,
|
AddI,
|
||||||
|
ApplyType {
|
||||||
|
num_types: u32,
|
||||||
|
},
|
||||||
AsType {
|
AsType {
|
||||||
type_name: Index<Multiname>,
|
type_name: Index<Multiname>,
|
||||||
},
|
},
|
||||||
|
|
|
@ -603,6 +603,10 @@ impl<W: Write> Writer<W> {
|
||||||
match *op {
|
match *op {
|
||||||
Op::Add => self.write_opcode(OpCode::Add)?,
|
Op::Add => self.write_opcode(OpCode::Add)?,
|
||||||
Op::AddI => self.write_opcode(OpCode::AddI)?,
|
Op::AddI => self.write_opcode(OpCode::AddI)?,
|
||||||
|
Op::ApplyType { num_types } => {
|
||||||
|
self.write_opcode(OpCode::ApplyType)?;
|
||||||
|
self.write_u30(num_types)?;
|
||||||
|
}
|
||||||
Op::AsType { ref type_name } => {
|
Op::AsType { ref type_name } => {
|
||||||
self.write_opcode(OpCode::AsType)?;
|
self.write_opcode(OpCode::AsType)?;
|
||||||
self.write_index(type_name)?;
|
self.write_index(type_name)?;
|
||||||
|
|
Loading…
Reference in New Issue