Recurity.Swf.AVM1.ActionDefineFunction2.Render C# (CSharp) Method

Render() protected method

Renders the DefineFuntion parameters back to a output stream
protected Render ( BinaryWriter outputStream ) : ulong
outputStream System.IO.BinaryWriter The outputstream
return ulong
        protected override ulong Render( BinaryWriter outputStream )
        {
            long pos = outputStream.BaseStream.Position;

            Helper.SwfStrings.SwfWriteString( this.Version, outputStream, _functionName );
            _numParams = ( ushort )_Parameters.Count;
            outputStream.Write( _numParams );
            outputStream.Write( _numRegister );

            BitStream bits = new BitStream( outputStream.BaseStream );
            bits.WriteBits( 1, ( _PreloadParentFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _PreloadRootFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _SuppressSuperFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _PreloadSuperFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _SuppressArgumentsFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _PreloadArgumentsFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _SuppressThisFlag ? 1 : 0 ) );
            bits.WriteBits( 1, ( _PreloadThisFlag ? 1 : 0 ) );
            bits.WriteBits( 7, 0 );
            bits.WriteBits( 1, ( _PreloadGlobalFlag ? 1 : 0 ) );
            bits.WriteFlush();

            for ( int i = 0; i < _Parameters.Count; i++ )
            {
                outputStream.Write( _Parameters[ i ].Register );
                Helper.SwfStrings.SwfWriteString( this.Version, outputStream, _Parameters[ i ].ParamName );
            }

            outputStream.Write( _codeSize );

            return ( ulong )( outputStream.BaseStream.Position - pos );
        }