author Karl Tomlinson <>
Wed, 02 Jul 2014 20:22:45 +1200
changeset 192471 0f1cea1a1a952c84d2a5758dbf9efc3ee6fe5dfc
parent 190615 c055d3168355200ce5bfee2edfcb14ab8340497d
child 234933 ac4464790ec4896a5188fa50cfc69ae0ffeddc08
permissions -rw-r--r--
b=1033140 make speex_resampler declarations consistent with OUTSIDE_SPEEX implementation r=padenot Instead of defining OUTSIDE_SPEEX and RANDOM_PREFIX everywhere speex_resampler.h is included, it is easier to patch the header. Symbol names in gkmedias symbols.def are updated now that RANDOM_PREFIX is taking effect, and unused symbols are no longer exported.

/* nsJARInputStream.h
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at */

#ifndef nsJARINPUTSTREAM_h__
#define nsJARINPUTSTREAM_h__

#include "nsIInputStream.h"
#include "nsJAR.h"
#include "nsTArray.h"
#include "mozilla/Attributes.h"

 * Class nsJARInputStream declaration. This class defines the type of the
 * object returned by calls to nsJAR::GetInputStream(filename) for the
 * purpose of reading a file item out of a JAR file. 
class nsJARInputStream MOZ_FINAL : public nsIInputStream
    nsJARInputStream() : 
        mOutSize(0), mInCrc(0), mOutCrc(0), mCurPos(0),
      memset(&mZs, 0, sizeof(z_stream));

    // takes ownership of |fd|, even on failure
    nsresult InitFile(nsJAR *aJar, nsZipItem *item);

    nsresult InitDirectory(nsJAR *aJar,
                           const nsACString& aJarDirSpec,
                           const char* aDir);
    ~nsJARInputStream() { Close(); }

    nsRefPtr<nsZipHandle>  mFd;         // handle for reading
    uint32_t               mOutSize;    // inflated size 
    uint32_t               mInCrc;      // CRC as provided by the zipentry
    uint32_t               mOutCrc;     // CRC as calculated by me
    z_stream               mZs;         // zip data structure

    /* For directory reading */
    nsRefPtr<nsJAR>        mJar;        // string reference to zipreader
    uint32_t               mNameLen;    // length of dirname
    nsCString              mBuffer;     // storage for generated text of stream
    uint32_t               mCurPos;     // Current position in buffer
    uint32_t               mArrPos;     // current position within mArray
    nsTArray<nsCString>    mArray;      // array of names in (zip) directory

	typedef enum {
    } JISMode;

    JISMode                mMode;		// Modus of the stream

    nsresult ContinueInflate(char* aBuf, uint32_t aCount, uint32_t* aBytesRead);
    nsresult ReadDirectory(char* aBuf, uint32_t aCount, uint32_t* aBytesRead);
    uint32_t CopyDataToBuffer(char* &aBuffer, uint32_t &aCount);

#endif /* nsJARINPUTSTREAM_h__ */