// DO NOT EDIT! This is an autogenerated file. All changes will be
// overwritten!

//	Copyright (c) 2023 Vidyo, Inc. All rights reserved.


using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;

namespace VidyoClient
{
	public class ConnectorGoogleAnalyticsEventTableFactory
	{
		public static ConnectorGoogleAnalyticsEventTable Create()
		{
			return new ConnectorGoogleAnalyticsEventTable(IntPtr.Zero);
		}
		public static void Destroy(ConnectorGoogleAnalyticsEventTable obj)
		{
		}
	}
	/// <summary>
	/// Represents the google analytics event table.
	/// </summary>
	public class ConnectorGoogleAnalyticsEventTable {
#if __IOS__
		const string importLib = "__Internal";
#else
		const string importLib = "libVidyoClient";
#endif
		private IntPtr objPtr; // opaque VidyoConnectorGoogleAnalyticsEventTable reference.
		public IntPtr GetObjectPtr() {

			VidyoConnectorGoogleAnalyticsEventTableSetenableNative(objPtr, enable);
			VidyoConnectorGoogleAnalyticsEventTableSeteventActionNative(objPtr, eventAction);
			VidyoConnectorGoogleAnalyticsEventTableSeteventCategoryNative(objPtr, eventCategory);

			return objPtr;
		}
		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		[return: MarshalAs(UnmanagedType.I1)]
		private static extern Boolean VidyoConnectorGoogleAnalyticsEventTableGetenableNative(IntPtr obj);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		private static extern void VidyoConnectorGoogleAnalyticsEventTableSetenableNative(IntPtr obj, Boolean enable);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		[return: MarshalAs(UnmanagedType.I4)]
		private static extern Connector.ConnectorGoogleAnalyticsEventAction VidyoConnectorGoogleAnalyticsEventTableGeteventActionNative(IntPtr obj);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		private static extern void VidyoConnectorGoogleAnalyticsEventTableSeteventActionNative(IntPtr obj, Connector.ConnectorGoogleAnalyticsEventAction eventAction);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		[return: MarshalAs(UnmanagedType.I4)]
		private static extern Connector.ConnectorGoogleAnalyticsEventCategory VidyoConnectorGoogleAnalyticsEventTableGeteventCategoryNative(IntPtr obj);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		private static extern void VidyoConnectorGoogleAnalyticsEventTableSeteventCategoryNative(IntPtr obj, Connector.ConnectorGoogleAnalyticsEventCategory eventCategory);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		public static extern IntPtr VidyoConnectorGoogleAnalyticsEventTableConstructCopyNative(IntPtr obj);

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		public static extern IntPtr VidyoConnectorGoogleAnalyticsEventTableConstructDefaultNative();

		[DllImport(importLib, CallingConvention = CallingConvention.Cdecl)]
		public static extern void VidyoConnectorGoogleAnalyticsEventTableDestructNative(IntPtr obj);

		/// <summary>
		/// Represents the event action enable flag.
		/// </summary>
		public Boolean enable;
		/// <summary>
		/// Represents the event action of google analytics.
		/// </summary>
		public Connector.ConnectorGoogleAnalyticsEventAction eventAction;
		/// <summary>
		/// Represents the event category of google analytics.
		/// </summary>
		public Connector.ConnectorGoogleAnalyticsEventCategory eventCategory;
		public ConnectorGoogleAnalyticsEventTable(IntPtr obj){
			if(obj == IntPtr.Zero) {
				objPtr = VidyoConnectorGoogleAnalyticsEventTableConstructDefaultNative();
			}
			else {
				objPtr = VidyoConnectorGoogleAnalyticsEventTableConstructCopyNative(obj);
			}

			enable = VidyoConnectorGoogleAnalyticsEventTableGetenableNative(objPtr);
			eventAction = VidyoConnectorGoogleAnalyticsEventTableGeteventActionNative(objPtr);
			eventCategory = VidyoConnectorGoogleAnalyticsEventTableGeteventCategoryNative(objPtr);
		}
		~ConnectorGoogleAnalyticsEventTable() {
			VidyoConnectorGoogleAnalyticsEventTableDestructNative(objPtr);
		 }
	};
}
