/**@class android.app.backup.BackupDataInput
@extends java.lang.Object

 Provides the structured interface through which a {@link android.app.backup.BackupAgent} reads
 information from the backup data set, via its
 {@link android.app.backup.BackupAgent#onRestore(BackupDataInput, int, android.os.ParcelFileDescriptor) onRestore()}
 method.  The data is presented as a set of "entities," each
 representing one named record as previously stored by the agent's
 {@link android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor,BackupDataOutput,ParcelFileDescriptor)
 onBackup()} implementation.  An entity is composed of a descriptive header plus a
 byte array that holds the raw data saved in the remote backup.
 <p>
 The agent must consume every entity in the data stream, otherwise the
 restored state of the application will be incomplete.
 <h3>Example</h3>
 <p>
 A typical
 {@link android.app.backup.BackupAgent#onRestore(BackupDataInput,int,ParcelFileDescriptor)
 onRestore()} implementation might be structured something like this:
 <pre>
 public void onRestore(BackupDataInput data, int appVersionCode,
                       ParcelFileDescriptor newState) {
     while (data.readNextHeader()) {
         String key = data.getKey();
         int dataSize = data.getDataSize();

         if (key.equals(MY_BACKUP_KEY_ONE)) {
             // process this kind of record here
             byte[] buffer = new byte[dataSize];
             data.readEntityData(buffer, 0, dataSize); // reads the entire entity at once

             // now 'buffer' holds the raw data and can be processed however
             // the agent wishes
             processBackupKeyOne(buffer);
         } else if (key.equals(MY_BACKUP_KEY_TO_IGNORE) {
             // a key we recognize but wish to discard
             data.skipEntityData();
         } // ... etc.
    }
 }</pre>
*/
var BackupDataInput = {

/**Extract the next entity header from the restore stream.  After this method
 return success, the {@link #getKey}() and {@link #getDataSize}() methods can
 be used to inspect the entity that is now available for processing.
@return {Boolean} <code>true</code> when there is an entity ready for consumption from the
    restore stream, <code>false</code> if the restore stream has been fully consumed.
@throws IOException if an error occurred while reading the restore stream
*/
readNextHeader : function(  ) {},

/**Report the key associated with the current entity in the restore stream
@return {String} the current entity's key string
@throws IllegalStateException if the next record header has not yet been read
*/
getKey : function(  ) {},

/**Report the size in bytes of the data associated with the current entity in the
 restore stream.
@return {Number} The size of the record's raw data, in bytes
@throws IllegalStateException if the next record header has not yet been read
*/
getDataSize : function(  ) {},

/**Read a record's raw data from the restore stream.  The record's header must first
 have been processed by the {@link #readNextHeader}() method.  Multiple calls to
 this method may be made in order to process the data in chunks; not all of it
 must be read in a single call.  Once all of the raw data for the current entity
 has been read, further calls to this method will simply return zero.
@param {Object {byte[]}} data An allocated byte array of at least 'size' bytes
@param {Number} offset Offset within the 'data' array at which the data will be placed
    when read from the stream
@param {Number} size The number of bytes to read in this pass
@return {Number} The number of bytes of data read.  Once all of the data for this entity
    has been read, further calls to this method will return zero.
@throws IOException if an error occurred when trying to read the restore data stream
*/
readEntityData : function(  ) {},

/**Consume the current entity's data without extracting it into a buffer
 for further processing.  This allows a {@link android.app.backup.BackupAgent} to
 efficiently discard obsolete or otherwise uninteresting records during the
 restore operation.
@throws IOException if an error occurred when trying to read the restore data stream
*/
skipEntityData : function(  ) {},


};