コード例 #1
0
ファイル: gameswf_tools.cpp プロジェクト: xuxiandi/LiquidFL
		bool	do_copy()
		// Copy the data.  Return true on success, false on failure.
		{
			if (m_done_copy)
			{
				assert(0);
				log_error("gameswf::tools::copy_helper() already done copy\n");
				return false;
			}

			m_done_copy = true;

			int	current_in_pos = m_in->get_position();
			int	bytes_to_copy = current_in_pos - m_initial_in_pos;
			if (bytes_to_copy > 0)
			{
				m_in->set_position(m_initial_in_pos);
				int	bytes_copied = m_out->copy_bytes(m_in, bytes_to_copy);

				if (bytes_copied != bytes_to_copy)
				{
					m_in->set_position(current_in_pos);	// fixup
					return false;
				}
				assert(m_in->get_position() == current_in_pos);

				return true;
			}
			else
			{
				log_error("gameswf::tools::copy_helper asked to copy %d bytes\n",
					  bytes_to_copy);
				return false;
			}
		}
コード例 #2
0
ファイル: zlib_adapter.cpp プロジェクト: cluber2001/CrossApp
    void	rewind_unused_bytes()
    // If we have unused bytes in our input buffer, rewind
    // to before they started.
    {
        if (m_zstream.avail_in > 0)
        {
            int	pos = m_in->get_position();
            int	rewound_pos = pos - m_zstream.avail_in;
            assert(pos >= 0);
            assert(pos >= m_initial_stream_pos);
            assert(rewound_pos >= 0);
            assert(rewound_pos >= m_initial_stream_pos);

            m_in->set_position(rewound_pos);
        }
    }