--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2018 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-WinRT                                                               --
--                                                                            --
-- This program is free software: you can redistribute it and / or modify     --
-- it under the terms of the GNU Lesser General Public License as published by--
-- the Free Software Foundation, either version 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program is distributed in the hope that it will be useful,            --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of             --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the               --
-- GNU Lesser General Public License for more details.                        --
--                                                                            --
-- You should have received a copy of the GNU Lesser General Public License   --
-- along with this program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with Windows.Graphics.Imaging;
with Windows.Storage;
with Windows.Storage.Streams;
with Ada.Unchecked_Conversion;
--------------------------------------------------------------------------------
package body Windows.Devices.PointOfService is

   ------------------------------------------------------------------------
   -- Delegates/Events
   ------------------------------------------------------------------------
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IBarcodeScanner_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IBarcodeScanner
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IBarcodeSymbologyAttributes_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IBarcodeSymbologyAttributes
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_ICashDrawer_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_ICashDrawer
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IClaimedBarcodeScanner_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IClaimedBarcodeScanner
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IClaimedCashDrawer_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IClaimedCashDrawer
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IClaimedLineDisplay_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IClaimedLineDisplay
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IClaimedMagneticStripeReader_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IClaimedMagneticStripeReader
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IClaimedPosPrinter_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IClaimedPosPrinter
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_ILineDisplay_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_ILineDisplay
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_ILineDisplayStoredBitmap_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_ILineDisplayStoredBitmap
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_ILineDisplayWindow_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_ILineDisplayWindow
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IMagneticStripeReader_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IMagneticStripeReader
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_IPosPrinter_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_IPosPrinter
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access AsyncOperationCompletedHandler_LineDisplayPowerStatus_Interface
      ; asyncInfo : Windows.Devices.PointOfService.IAsyncOperation_LineDisplayPowerStatus
      ; asyncStatus : Windows.Foundation.AsyncStatus
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(asyncInfo, asyncStatus);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access EventHandler_IClaimedBarcodeScanner_Interface
      ; sender : Windows.Object
      ; args : Windows.Devices.PointOfService.IClaimedBarcodeScanner
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(sender, args);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access EventHandler_IClaimedMagneticStripeReader_Interface
      ; sender : Windows.Object
      ; args : Windows.Devices.PointOfService.IClaimedMagneticStripeReader
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(sender, args);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IBarcodeScanner_add_StatusUpdated_Interface
      ; sender : Windows.Devices.PointOfService.IBarcodeScanner
      ; args : Windows.Devices.PointOfService.IBarcodeScannerStatusUpdatedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IBarcodeScanner(sender), Windows.Devices.PointOfService.IBarcodeScannerStatusUpdatedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_ICashDrawer_add_StatusUpdated_Interface
      ; sender : Windows.Devices.PointOfService.ICashDrawer
      ; args : Windows.Devices.PointOfService.ICashDrawerStatusUpdatedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.ICashDrawer(sender), Windows.Devices.PointOfService.ICashDrawerStatusUpdatedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_ICashDrawerCloseAlarm_add_AlarmTimeoutExpired_Interface
      ; sender : Windows.Devices.PointOfService.ICashDrawerCloseAlarm
      ; args : Windows.Object
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.ICashDrawerCloseAlarm(sender), args);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_ICashDrawerEventSource_add_DrawerClosed_Interface
      ; sender : Windows.Devices.PointOfService.ICashDrawerEventSource
      ; args : Windows.Devices.PointOfService.ICashDrawerEventSourceEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.ICashDrawerEventSource(sender), Windows.Devices.PointOfService.ICashDrawerEventSourceEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_ICashDrawerEventSource_add_DrawerOpened_Interface
      ; sender : Windows.Devices.PointOfService.ICashDrawerEventSource
      ; args : Windows.Devices.PointOfService.ICashDrawerEventSourceEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.ICashDrawerEventSource(sender), Windows.Devices.PointOfService.ICashDrawerEventSourceEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedBarcodeScanner_add_DataReceived_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedBarcodeScanner
      ; args : Windows.Devices.PointOfService.IBarcodeScannerDataReceivedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedBarcodeScanner(sender), Windows.Devices.PointOfService.IBarcodeScannerDataReceivedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedBarcodeScanner_add_ErrorOccurred_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedBarcodeScanner
      ; args : Windows.Devices.PointOfService.IBarcodeScannerErrorOccurredEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedBarcodeScanner(sender), Windows.Devices.PointOfService.IBarcodeScannerErrorOccurredEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedBarcodeScanner_add_ImagePreviewReceived_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedBarcodeScanner
      ; args : Windows.Devices.PointOfService.IBarcodeScannerImagePreviewReceivedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedBarcodeScanner(sender), Windows.Devices.PointOfService.IBarcodeScannerImagePreviewReceivedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedBarcodeScanner4_add_Closed_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedBarcodeScanner
      ; args : Windows.Devices.PointOfService.IClaimedBarcodeScannerClosedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedBarcodeScanner(sender), Windows.Devices.PointOfService.IClaimedBarcodeScannerClosedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedCashDrawer_add_ReleaseDeviceRequested_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedCashDrawer
      ; args : Windows.Object
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedCashDrawer(sender), args);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedCashDrawer2_add_Closed_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedCashDrawer
      ; args : Windows.Devices.PointOfService.IClaimedCashDrawerClosedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedCashDrawer(sender), Windows.Devices.PointOfService.IClaimedCashDrawerClosedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedLineDisplay_add_ReleaseDeviceRequested_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedLineDisplay
      ; args : Windows.Object
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedLineDisplay(sender), args);
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedLineDisplay2_add_StatusUpdated_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedLineDisplay
      ; args : Windows.Devices.PointOfService.ILineDisplayStatusUpdatedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedLineDisplay(sender), Windows.Devices.PointOfService.ILineDisplayStatusUpdatedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedLineDisplay3_add_Closed_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedLineDisplay
      ; args : Windows.Devices.PointOfService.IClaimedLineDisplayClosedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedLineDisplay(sender), Windows.Devices.PointOfService.IClaimedLineDisplayClosedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedMagneticStripeReader_add_AamvaCardDataReceived_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedMagneticStripeReader
      ; args : Windows.Devices.PointOfService.IMagneticStripeReaderAamvaCardDataReceivedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedMagneticStripeReader(sender), Windows.Devices.PointOfService.IMagneticStripeReaderAamvaCardDataReceivedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedMagneticStripeReader_add_BankCardDataReceived_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedMagneticStripeReader
      ; args : Windows.Devices.PointOfService.IMagneticStripeReaderBankCardDataReceivedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedMagneticStripeReader(sender), Windows.Devices.PointOfService.IMagneticStripeReaderBankCardDataReceivedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedMagneticStripeReader_add_ErrorOccurred_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedMagneticStripeReader
      ; args : Windows.Devices.PointOfService.IMagneticStripeReaderErrorOccurredEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedMagneticStripeReader(sender), Windows.Devices.PointOfService.IMagneticStripeReaderErrorOccurredEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedMagneticStripeReader_add_VendorSpecificDataReceived_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedMagneticStripeReader
      ; args : Windows.Devices.PointOfService.IMagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedMagneticStripeReader(sender), Windows.Devices.PointOfService.IMagneticStripeReaderVendorSpecificCardDataReceivedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedMagneticStripeReader2_add_Closed_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedMagneticStripeReader
      ; args : Windows.Devices.PointOfService.IClaimedMagneticStripeReaderClosedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedMagneticStripeReader(sender), Windows.Devices.PointOfService.IClaimedMagneticStripeReaderClosedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedPosPrinter_add_ReleaseDeviceRequested_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedPosPrinter
      ; args : Windows.Devices.PointOfService.IPosPrinterReleaseDeviceRequestedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedPosPrinter(sender), Windows.Devices.PointOfService.IPosPrinterReleaseDeviceRequestedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IClaimedPosPrinter2_add_Closed_Interface
      ; sender : Windows.Devices.PointOfService.IClaimedPosPrinter
      ; args : Windows.Devices.PointOfService.IClaimedPosPrinterClosedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IClaimedPosPrinter(sender), Windows.Devices.PointOfService.IClaimedPosPrinterClosedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IMagneticStripeReader_add_StatusUpdated_Interface
      ; sender : Windows.Devices.PointOfService.IMagneticStripeReader
      ; args : Windows.Devices.PointOfService.IMagneticStripeReaderStatusUpdatedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IMagneticStripeReader(sender), Windows.Devices.PointOfService.IMagneticStripeReaderStatusUpdatedEventArgs(args));
      return Hr;
   end;
   
   function Invoke
   (
      This       : access TypedEventHandler_IPosPrinter_add_StatusUpdated_Interface
      ; sender : Windows.Devices.PointOfService.IPosPrinter
      ; args : Windows.Devices.PointOfService.IPosPrinterStatusUpdatedEventArgs
   )
   return Windows.HRESULT is
      Hr : Windows.HRESULT := S_OK;
   begin
      This.Callback(Windows.Devices.PointOfService.IPosPrinter(sender), Windows.Devices.PointOfService.IPosPrinterStatusUpdatedEventArgs(args));
      return Hr;
   end;
   
   ------------------------------------------------------------------------
   -- Create functions (for activatable classes)
   ------------------------------------------------------------------------
   
   function CreateInstance
   (
      scanDataType : Windows.UInt32
      ; scanData : Windows.Storage.Streams.IBuffer
      ; scanDataLabel : Windows.Storage.Streams.IBuffer
   )
   return Windows.Devices.PointOfService.IBarcodeScannerReport is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeScannerReport");
      m_Factory     : Windows.Devices.PointOfService.IBarcodeScannerReportFactory := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IBarcodeScannerReport := null;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeScannerReportFactory'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.CreateInstance(scanDataType, scanData, scanDataLabel, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function Create return Windows.Devices.PointOfService.IPosPrinterPrintOptions is
      Hr            : Windows.HResult := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinterPrintOptions");
      Instance      : aliased IInspectable := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased IUnknown := null;
      function Convert is new Ada.Unchecked_Conversion(IUnknown , Windows.Devices.PointOfService.IPosPrinterPrintOptions) with inline;
   begin
      Hr := RoActivateInstance(m_hString, Instance'Address);
      if Hr = 0 then
         Hr := Instance.QueryInterface(Windows.Devices.PointOfService.IID_IPosPrinterPrintOptions'Access, RetVal'access);
         RefCount := Instance.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return Convert(RetVal);
   end;
   
   function CreateInstance
   (
      message : Windows.String
      ; severity : Windows.Devices.PointOfService.UnifiedPosErrorSeverity
      ; reason : Windows.Devices.PointOfService.UnifiedPosErrorReason
      ; extendedReason : Windows.UInt32
   )
   return Windows.Devices.PointOfService.IUnifiedPosErrorData is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.UnifiedPosErrorData");
      m_Factory     : Windows.Devices.PointOfService.IUnifiedPosErrorDataFactory := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IUnifiedPosErrorData := null;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IUnifiedPosErrorDataFactory'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.CreateInstance(message, severity, reason, extendedReason, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   ------------------------------------------------------------------------
   -- Override Implementations
   ------------------------------------------------------------------------
   
   ------------------------------------------------------------------------
   -- Static procedures/functions
   ------------------------------------------------------------------------
   
   function FromIdAsync
   (
      deviceId : Windows.String
   )
   return Windows.Devices.PointOfService.IAsyncOperation_IBarcodeScanner is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeScanner");
      m_Factory     : IBarcodeScannerStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IBarcodeScanner;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeScannerStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.FromIdAsync(deviceId, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDefaultAsync
   return Windows.Devices.PointOfService.IAsyncOperation_IBarcodeScanner is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeScanner");
      m_Factory     : IBarcodeScannerStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IBarcodeScanner;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeScannerStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDefaultAsync(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelector
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeScanner");
      m_Factory     : IBarcodeScannerStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeScannerStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelectorWithConnectionTypes
   (
      connectionTypes : Windows.Devices.PointOfService.PosConnectionTypes
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeScanner");
      m_Factory     : IBarcodeScannerStatics2 := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeScannerStatics2'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelectorWithConnectionTypes(connectionTypes, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_AusPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_AusPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Aztec
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Aztec(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_CanPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_CanPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ccab
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ccab(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ccc
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ccc(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_ChinaPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_ChinaPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Codabar
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Codabar(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Codablock128
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Codablock128(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_CodablockA
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_CodablockA(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_CodablockF
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_CodablockF(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code11
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code11(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code128
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code128(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code16k
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code16k(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code32
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code32(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code39
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code39(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code39Ex
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code39Ex(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code49
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code49(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code93
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code93(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Code93Ex
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Code93Ex(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_DataCode
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_DataCode(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_DataMatrix
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_DataMatrix(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_DutchKix
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_DutchKix(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean13
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean13(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean13Add2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean13Add2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean13Add5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean13Add5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean8
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean8(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean8Add2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean8Add2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean8Add5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean8Add5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean99
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean99(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean99Add2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean99Add2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ean99Add5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ean99Add5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Eanv
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Eanv(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_EanvAdd2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_EanvAdd2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_EanvAdd5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_EanvAdd5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_ExtendedBase
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_ExtendedBase(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Gs1128
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Gs1128(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Gs1128Coupon
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Gs1128Coupon(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Gs1DatabarType1
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Gs1DatabarType1(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Gs1DatabarType2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Gs1DatabarType2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Gs1DatabarType3
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Gs1DatabarType3(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_HanXin
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_HanXin(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_InfoMail
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_InfoMail(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Isbn
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Isbn(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_IsbnAdd5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_IsbnAdd5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Isbt
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Isbt(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ismn
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ismn(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_IsmnAdd2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_IsmnAdd2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_IsmnAdd5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_IsmnAdd5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Issn
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Issn(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_IssnAdd2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_IssnAdd2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_IssnAdd5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_IssnAdd5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_ItalianPost25
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_ItalianPost25(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_ItalianPost39
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_ItalianPost39(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_JapanPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_JapanPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_KoreanPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_KoreanPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Maxicode
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Maxicode(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Micr
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Micr(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_MicroPdf417
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_MicroPdf417(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_MicroQr
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_MicroQr(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Msi
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Msi(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_MsTag
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_MsTag(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_OcrA
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_OcrA(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_OcrB
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_OcrB(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Pdf417
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Pdf417(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Plessey
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Plessey(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Pzn
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Pzn(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Qr
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Qr(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Sisac
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Sisac(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_SwedenPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_SwedenPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Telepen
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Telepen(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TfDis
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TfDis(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TfIata
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TfIata(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TfInd
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TfInd(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TfInt
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TfInt(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TfMat
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TfMat(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TfStd
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TfStd(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Tlc39
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Tlc39(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Trioptic39
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Trioptic39(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UccEan128
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UccEan128(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UkPost
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UkPost(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Unknown
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Unknown(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Upca
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Upca(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UpcaAdd2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UpcaAdd2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UpcaAdd5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UpcaAdd5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UpcCoupon
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UpcCoupon(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Upce
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Upce(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UpceAdd2
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UpceAdd2(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UpceAdd5
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UpceAdd5(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Us4StateFics
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Us4StateFics(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UsIntelligent
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UsIntelligent(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UsIntelligentPkg
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UsIntelligentPkg(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UsPlanet
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UsPlanet(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_UsPostNet
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_UsPostNet(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetName
   (
      scanDataType : Windows.UInt32
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetName(scanDataType, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Gs1DWCode
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.BarcodeSymbologies");
      m_Factory     : IBarcodeSymbologiesStatics2 := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IBarcodeSymbologiesStatics2'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Gs1DWCode(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function FromIdAsync
   (
      deviceId : Windows.String
   )
   return Windows.Devices.PointOfService.IAsyncOperation_ICashDrawer is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.CashDrawer");
      m_Factory     : ICashDrawerStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_ICashDrawer;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ICashDrawerStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.FromIdAsync(deviceId, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDefaultAsync
   return Windows.Devices.PointOfService.IAsyncOperation_ICashDrawer is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.CashDrawer");
      m_Factory     : ICashDrawerStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_ICashDrawer;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ICashDrawerStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDefaultAsync(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelector_ICashDrawer
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.CashDrawer");
      m_Factory     : ICashDrawerStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ICashDrawerStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelectorWithConnectionTypes_ICashDrawer
   (
      connectionTypes : Windows.Devices.PointOfService.PosConnectionTypes
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.CashDrawer");
      m_Factory     : ICashDrawerStatics2 := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ICashDrawerStatics2'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelectorWithConnectionTypes(connectionTypes, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function FromIdAsync
   (
      deviceId : Windows.String
   )
   return Windows.Devices.PointOfService.IAsyncOperation_IClaimedLineDisplay is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.ClaimedLineDisplay");
      m_Factory     : IClaimedLineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IClaimedLineDisplay;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IClaimedLineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.FromIdAsync(deviceId, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelector_IClaimedLineDisplay
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.ClaimedLineDisplay");
      m_Factory     : IClaimedLineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IClaimedLineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelectorWithConnectionTypes_IClaimedLineDisplay
   (
      connectionTypes : Windows.Devices.PointOfService.PosConnectionTypes
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.ClaimedLineDisplay");
      m_Factory     : IClaimedLineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IClaimedLineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelectorWithConnectionTypes(connectionTypes, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function FromIdAsync
   (
      deviceId : Windows.String
   )
   return Windows.Devices.PointOfService.IAsyncOperation_ILineDisplay is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.LineDisplay");
      m_Factory     : ILineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_ILineDisplay;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ILineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.FromIdAsync(deviceId, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDefaultAsync
   return Windows.Devices.PointOfService.IAsyncOperation_ILineDisplay is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.LineDisplay");
      m_Factory     : ILineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_ILineDisplay;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ILineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDefaultAsync(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelector_ILineDisplay
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.LineDisplay");
      m_Factory     : ILineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ILineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelectorWithConnectionTypes_ILineDisplay
   (
      connectionTypes : Windows.Devices.PointOfService.PosConnectionTypes
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.LineDisplay");
      m_Factory     : ILineDisplayStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ILineDisplayStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelectorWithConnectionTypes(connectionTypes, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_StatisticsCategorySelector
   return Windows.Devices.PointOfService.ILineDisplayStatisticsCategorySelector is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.LineDisplay");
      m_Factory     : ILineDisplayStatics2 := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.ILineDisplayStatisticsCategorySelector;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_ILineDisplayStatics2'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_StatisticsCategorySelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function FromIdAsync
   (
      deviceId : Windows.String
   )
   return Windows.Devices.PointOfService.IAsyncOperation_IMagneticStripeReader is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReader");
      m_Factory     : IMagneticStripeReaderStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IMagneticStripeReader;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.FromIdAsync(deviceId, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDefaultAsync
   return Windows.Devices.PointOfService.IAsyncOperation_IMagneticStripeReader is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReader");
      m_Factory     : IMagneticStripeReaderStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IMagneticStripeReader;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDefaultAsync(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelector_IMagneticStripeReader
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReader");
      m_Factory     : IMagneticStripeReaderStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelectorWithConnectionTypes_IMagneticStripeReader
   (
      connectionTypes : Windows.Devices.PointOfService.PosConnectionTypes
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReader");
      m_Factory     : IMagneticStripeReaderStatics2 := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderStatics2'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelectorWithConnectionTypes(connectionTypes, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Aamva
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderCardTypes");
      m_Factory     : IMagneticStripeReaderCardTypesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderCardTypesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Aamva(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Bank
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderCardTypes");
      m_Factory     : IMagneticStripeReaderCardTypesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderCardTypesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Bank(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_ExtendedBase_MagneticStripeReaderCardTypes
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderCardTypes");
      m_Factory     : IMagneticStripeReaderCardTypesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderCardTypesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_ExtendedBase(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Unknown_MagneticStripeReaderCardTypes
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderCardTypes");
      m_Factory     : IMagneticStripeReaderCardTypesStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderCardTypesStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Unknown(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_ExtendedBase_MagneticStripeReaderEncryptionAlgorithms
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderEncryptionAlgorithms");
      m_Factory     : IMagneticStripeReaderEncryptionAlgorithmsStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderEncryptionAlgorithmsStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_ExtendedBase(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_None
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderEncryptionAlgorithms");
      m_Factory     : IMagneticStripeReaderEncryptionAlgorithmsStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderEncryptionAlgorithmsStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_None(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_TripleDesDukpt
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.MagneticStripeReaderEncryptionAlgorithms");
      m_Factory     : IMagneticStripeReaderEncryptionAlgorithmsStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IMagneticStripeReaderEncryptionAlgorithmsStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_TripleDesDukpt(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function FromIdAsync
   (
      deviceId : Windows.String
   )
   return Windows.Devices.PointOfService.IAsyncOperation_IPosPrinter is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinter");
      m_Factory     : IPosPrinterStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IPosPrinter;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.FromIdAsync(deviceId, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDefaultAsync
   return Windows.Devices.PointOfService.IAsyncOperation_IPosPrinter is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinter");
      m_Factory     : IPosPrinterStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.Devices.PointOfService.IAsyncOperation_IPosPrinter;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDefaultAsync(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelector_IPosPrinter
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinter");
      m_Factory     : IPosPrinterStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelector(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function GetDeviceSelectorWithConnectionTypes_IPosPrinter
   (
      connectionTypes : Windows.Devices.PointOfService.PosConnectionTypes
   )
   return Windows.String is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinter");
      m_Factory     : IPosPrinterStatics2 := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.String;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterStatics2'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.GetDeviceSelectorWithConnectionTypes(connectionTypes, RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ansi
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinterCharacterSetIds");
      m_Factory     : IPosPrinterCharacterSetIdsStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterCharacterSetIdsStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ansi(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Ascii
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinterCharacterSetIds");
      m_Factory     : IPosPrinterCharacterSetIdsStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterCharacterSetIdsStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Ascii(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
   function get_Utf16LE
   return Windows.UInt32 is
      Hr            : Windows.HRESULT := S_OK;
      m_hString     : Windows.String := To_String("Windows.Devices.PointOfService.PosPrinterCharacterSetIds");
      m_Factory     : IPosPrinterCharacterSetIdsStatics := null;
      RefCount      : Windows.UInt32 := 0;
      RetVal        : aliased Windows.UInt32;
   begin
      Hr := RoGetActivationFactory(m_hString, IID_IPosPrinterCharacterSetIdsStatics'Access , m_Factory'Address);
      if Hr = 0 then
         Hr := m_Factory.get_Utf16LE(RetVal'Access);
         RefCount := m_Factory.Release;
      end if;
      Hr := WindowsDeleteString(m_hString);
      return RetVal;
   end;
   
end;
