Ejemplo n.º 1
0
        ActionBase IActionVisitor <XElement, ActionBase> .Visit(ActionConstantPool action, XElement xAction)
        {
            var xStrings = xAction.RequiredElement("strings");

            foreach (var xString in xStrings.Elements())
            {
                action.ConstantPool.Add(xString.RequiredStringAttribute("value"));
            }
            return(action);
        }
Ejemplo n.º 2
0
        XElement IActionVisitor <XElement, XElement> .Visit(ActionConstantPool action, XElement param)
        {
            var res     = new XElement(XActionNames.FromAction(action));
            var strings = new XElement("strings");

            foreach (var item in action.ConstantPool)
            {
                strings.Add(new XElement("String", new XAttribute("value", item)));
            }
            res.Add(strings);
            return(res);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Read <see cref="SwfOp.ByteCode.Actions.ActionConstantPool">constant pool</see> action from swf. the constant pool is not parsed.
        /// </summary>
        private ActionConstantPool ReadActionConstantPool(BinaryReader br)
        {
            // read block length
            int len = Convert.ToInt32(br.ReadUInt16());

            int constCount = Convert.ToInt32(br.ReadUInt16());

            string[] constantPool = new string[constCount];

            for (int i = 0; i < constCount; i++)
            {
                constantPool[i] = BinaryStringRW.ReadString(br);
            }
            ActionConstantPool a = new ActionConstantPool(constantPool);

            //a.ByteSize = len+3;
            return(a);
        }