/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */

#ifdef __WIDL__
#pragma winrt ns_prefix
#endif

import "inspectable.idl";

namespace Windows {
  namespace Storage {
    namespace Streams {
      interface IBufferFactory;
      interface IBuffer;
    }
  }
}

namespace Windows {
  namespace Storage {
    namespace Streams {
      [uuid(905A0FE0-BC53-11DF-8C49-001E4FC686DA)]
      interface IBuffer : IInspectable {
        [propget] HRESULT Capacity(UINT32* value);
        [propget] HRESULT Length(UINT32* value);
        [propput] HRESULT Length(UINT32 value);
      }

      [uuid(71AF914D-C10F-484B-BC50-14BC623B3A27)]
      interface IBufferFactory : IInspectable {
        HRESULT Create(UINT32 capacity, IBuffer** value);
      }
    }
  }
}
