text: //---------------------------------------------------------------------------
  // Copyright (c) 2016 Michael G. Brehm
  // 
  // Permission is hereby granted, free of charge, to any person obtaining a copy
  // of this software and associated documentation files (the "Software"), to deal
  // in the Software without restriction, including without limitation the rights
  // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  // copies of the Software, and to permit persons to whom the Software is
  // furnished to do so, subject to the following conditions:
  // 
  // The above copyright notice and this permission notice shall be included in all
  // copies or substantial portions of the Software.
  // 
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  // SOFTWARE.
  //---------------------------------------------------------------------------
  
  #ifndef __GZIPEXCEPTION_H_
  #define __GZIPEXCEPTION_H_
  #pragma once
  
  #include <bzlib.h>
  
  #pragma warning(push, 4)				// Enable maximum compiler warnings
  
  using namespace System;
  using namespace System::IO;
  using namespace System::Reflection;
  using namespace System::Resources;
  using namespace System::Runtime::Serialization;
  using namespace System::Security;
  using namespace System::Security::Permissions;
  
  namespace zuki::io::compression {
  
  //---------------------------------------------------------------------------
  // Class GzipException
  //
  // Represents a bzip library exception
  //---------------------------------------------------------------------------
  
  [SerializableAttribute]
  public ref class GzipException sealed : public IOException
  {
  public:
  
  	//-----------------------------------------------------------------------
  	// Member Functions
  
  	// GetObjectData
  	//
  	// Overrides Exception::GetObjectData
  	[SecurityCriticalAttribute]
  	[PermissionSetAttribute(SecurityAction::LinkDemand, Unrestricted = true)]
  	[PermissionSetAttribute(SecurityAction::InheritanceDemand, Unrestricted = true)]
  	[SecurityPermissionAttribute(SecurityAction::Demand, SerializationFormatter = true)]
  	virtual void GetObjectData(SerializationInfo^ info, StreamingContext context) override;
  
  	//-----------------------------------------------------------------------
  	// Properties
  
  	// ErrorCode
  	//
  	// Exposes the gzip error code
  	property int ErrorCode
  	{
  		int get(void);
  	}
  
  internal:
  
  	// Instance Constructor
  	//
  	GzipException(int code);
  
  private:
  
  	// Serialization Constructor
  	//
  	[SecurityPermissionAttribute(SecurityAction::Demand, SerializationFormatter = true)]
  	GzipException(SerializationInfo^ info, StreamingContext context);
  
  	//-----------------------------------------------------------------------
  	// Private Member Functions
  
  	// GetErrorMessage
  	//
  	// Retrieves the error message associated with the error code
  	static String^ GetErrorMessage(int code);
  
  	//-----------------------------------------------------------------------
  	// Member Variables
  
  	int						m_code;				// Underlying error code
  };
  
  //---------------------------------------------------------------------------
  
  } // zuki::io::compression
  
  #pragma warning(pop)
  
  #endif	// __GZIPEXCEPTION_H_
  