#pragma once

// note: Ids (defined in fusenet.idl) have to be in sync with eStringTableId in manifestimport.h

class CManifestApplicationInfo : public IManifestApplicationInfo
{
    public:
    // IUnknown methods
    STDMETHODIMP            QueryInterface(REFIID riid,void ** ppv);
    STDMETHODIMP_(ULONG)    AddRef();
    STDMETHODIMP_(ULONG)    Release();

    STDMETHOD(Set)(
        /* in */ DWORD dwId,
        /* in */ LPCOLESTR pwzProperty);

    STDMETHOD(Get)(
        /* in */ DWORD dwId,
        /* out */ LPOLESTR *ppwzProperty,
        /* out */ LPDWORD   pccProperty);
    
    CManifestApplicationInfo();
    ~CManifestApplicationInfo();

    private:
    struct ApplicationInfo
    {
        LPWSTR pwzProperty;
        DWORD  ccProperty;
    };
        
    DWORD    _dwSig;
    DWORD    _cRef;
    HRESULT  _hr;

    ApplicationInfo _ai[MAN_APPLICATION_MAX];


};