19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Copyright 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// State bundle.  Used to pass around stuff like command-line args.
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef __BUNDLE_H
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define __BUNDLE_H
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdlib.h>
103b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Log.h>
113b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/threads.h>
123b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/List.h>
133b4062eeb01be33951ba214e027da523cf09f8b1Mathias Agopian#include <utils/Errors.h>
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/String8.h>
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Vector.h>
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Things we can do.
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef enum Command {
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandUnknown = 0,
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandVersion,
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandList,
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandDump,
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandAdd,
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandRemove,
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    kCommandPackage,
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} Command;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle of goodies, including everything specified on the command line.
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Bundle {
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Bundle(void)
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        : mCmd(kCommandUnknown), mVerbose(false), mAndroidList(false),
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false),
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mUpdate(false), mExtending(false),
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mRequireLocalization(false), mPseudolocalize(false),
40e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn          mValues(false),
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mCompressionMethod(0), mOutputAPKFile(NULL),
421553c82e084ac5763fb393857224145506771b99Joe Onorato          mAssetSourceDir(NULL), mProguardFile(NULL),
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mRClassDir(NULL), mResourceIntermediatesDir(NULL),
45fa6baa259d8b1af768e5c1d7ceb27184391f8fb1Dianne Hackborn          mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
4663459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet          mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL),
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project          mArgc(0), mArgv(NULL)
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {}
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ~Bundle(void) {}
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set the command value.  Returns "false" if it was previously set.
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Command getCommand(void) const { return mCmd; }
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setCommand(Command cmd) { mCmd = cmd; }
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Command modifiers.  Not all modifiers are appropriate for all
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * commands.
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getVerbose(void) const { return mVerbose; }
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setVerbose(bool val) { mVerbose = val; }
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getAndroidList(void) const { return mAndroidList; }
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAndroidList(bool val) { mAndroidList = val; }
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getForce(void) const { return mForce; }
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setForce(bool val) { mForce = val; }
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setGrayscaleTolerance(int val) { mGrayscaleTolerance = val; }
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int  getGrayscaleTolerance() { return mGrayscaleTolerance; }
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getMakePackageDirs(void) const { return mMakePackageDirs; }
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setMakePackageDirs(bool val) { mMakePackageDirs = val; }
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getUpdate(void) const { return mUpdate; }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setUpdate(bool val) { mUpdate = val; }
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getExtending(void) const { return mExtending; }
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setExtending(bool val) { mExtending = val; }
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getRequireLocalization(void) const { return mRequireLocalization; }
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRequireLocalization(bool val) { mRequireLocalization = val; }
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool getPseudolocalize(void) const { return mPseudolocalize; }
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setPseudolocalize(bool val) { mPseudolocalize = val; }
79e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn    bool getValues(void) const { return mValues; }
80e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn    void setValues(bool val) { mValues = val; }
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getCompressionMethod(void) const { return mCompressionMethod; }
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setCompressionMethod(int val) { mCompressionMethod = val; }
8337c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker    bool getJunkPath(void) const { return mJunkPath; }
8437c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker    void setJunkPath(bool val) { mJunkPath = val; }
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getOutputAPKFile() const { return mOutputAPKFile; }
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setOutputAPKFile(const char* val) { mOutputAPKFile = val; }
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8837c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker    /*
8937c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker     * Input options.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getAssetSourceDir() const { return mAssetSourceDir; }
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAssetSourceDir(const char* dir) { mAssetSourceDir = dir; }
931553c82e084ac5763fb393857224145506771b99Joe Onorato    const char* getProguardFile() const { return mProguardFile; }
941553c82e084ac5763fb393857224145506771b99Joe Onorato    void setProguardFile(const char* file) { mProguardFile = file; }
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; }
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); }
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getAndroidManifestFile() const { return mAndroidManifestFile; }
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAndroidManifestFile(const char* file) { mAndroidManifestFile = file; }
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getPublicOutputFile() const { return mPublicOutputFile; }
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setPublicOutputFile(const char* file) { mPublicOutputFile = file; }
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getRClassDir() const { return mRClassDir; }
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRClassDir(const char* dir) { mRClassDir = dir; }
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getConfigurations() const { return mConfigurations.size() > 0 ? mConfigurations.string() : NULL; }
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addConfigurations(const char* val) { if (mConfigurations.size() > 0) { mConfigurations.append(","); mConfigurations.append(val); } else { mConfigurations = val; } }
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getResourceIntermediatesDir() const { return mResourceIntermediatesDir; }
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setResourceIntermediatesDir(const char* dir) { mResourceIntermediatesDir = dir; }
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const android::Vector<const char*>& getPackageIncludes() const { return mPackageIncludes; }
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addPackageInclude(const char* file) { mPackageIncludes.add(file); }
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const android::Vector<const char*>& getJarFiles() const { return mJarFiles; }
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addJarFile(const char* file) { mJarFiles.add(file); }
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; }
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); }
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
114a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char*  getMinSdkVersion() const { return mMinSdkVersion; }
115a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    void setMinSdkVersion(const char*  val) { mMinSdkVersion = val; }
116a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char*  getTargetSdkVersion() const { return mTargetSdkVersion; }
117a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    void setTargetSdkVersion(const char*  val) { mTargetSdkVersion = val; }
118a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char*  getMaxSdkVersion() const { return mMaxSdkVersion; }
119a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    void setMaxSdkVersion(const char*  val) { mMaxSdkVersion = val; }
120a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char*  getVersionCode() const { return mVersionCode; }
121a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    void setVersionCode(const char*  val) { mVersionCode = val; }
122a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char* getVersionName() const { return mVersionName; }
123a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    void setVersionName(const char* val) { mVersionName = val; }
12463459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet    const char* getCustomPackage() const { return mCustomPackage; }
12563459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet    void setCustomPackage(const char* val) { mCustomPackage = val; }
12637c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set and get the file specification.
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Note this does NOT make a copy of argv.
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setFileSpec(char* const argv[], int argc) {
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mArgc = argc;
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mArgv = argv;
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getFileSpecCount(void) const { return mArgc; }
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* getFileSpecEntry(int idx) const { return mArgv[idx]; }
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void eatArgs(int n) {
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (n > mArgc) n = mArgc;
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mArgv += n;
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mArgc -= n;
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Package count.  Nothing to do with anything else here; this is
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * just a convenient place to stuff it so we don't have to pass it
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * around everywhere.
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPackageCount(void) const { return mPackageCount; }
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setPackageCount(int val) { mPackageCount = val; }
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate:
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* commands & modifiers */
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Command     mCmd;
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mVerbose;
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mAndroidList;
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mForce;
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int         mGrayscaleTolerance;
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mMakePackageDirs;
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mUpdate;
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mExtending;
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mRequireLocalization;
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    bool        mPseudolocalize;
166e17086ba346009a26cc2299b133a0fe602acb6ecDianne Hackborn    bool        mValues;
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int         mCompressionMethod;
16837c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker    bool        mJunkPath;
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* mOutputAPKFile;
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* mAssetSourceDir;
1711553c82e084ac5763fb393857224145506771b99Joe Onorato    const char* mProguardFile;
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* mAndroidManifestFile;
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* mPublicOutputFile;
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* mRClassDir;
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const char* mResourceIntermediatesDir;
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    android::String8 mConfigurations;
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    android::Vector<const char*> mPackageIncludes;
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    android::Vector<const char*> mJarFiles;
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    android::Vector<const char*> mNoCompressExtensions;
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    android::Vector<const char*> mResourceSourceDirs;
18137c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker
182a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char* mMinSdkVersion;
183a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char* mTargetSdkVersion;
184a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char* mMaxSdkVersion;
185a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char* mVersionCode;
186a96cbb435d7b2197ab2b61fd98d14cbd6e0c5c3dDianne Hackborn    const char* mVersionName;
18763459ad555c10de1f316d6de01fc3cd0c0aaa457Xavier Ducrohet    const char* mCustomPackage;
18837c4157d7cdad71dc9abc93d652e81c33e346d93Doug Zongker
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* file specification */
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int         mArgc;
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    char* const* mArgv;
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#if 0
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* misc stuff */
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int         mPackageCount;
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // __BUNDLE_H
200