// Code generated by gobind. DO NOT EDIT.

// Java class io.nekohasekai.libbox.ProfileContent is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java -javapkg=io.nekohasekai github.com/sagernet/sing-box/experimental/libbox
package io.nekohasekai.libbox;

import go.Seq;

public final class ProfileContent implements Seq.Proxy {
	static { Libbox.touch(); }
	
	public final int refnum;
	
	@Override public final int incRefnum() {
	      Seq.incGoRef(refnum, this);
	      return refnum;
	}
	
	ProfileContent(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
	
	public ProfileContent() { this.refnum = __New(); Seq.trackGoRef(refnum, this); }
	
	private static native int __New();
	
	public final native String getName();
	public final native void setName(String v);
	
	public final native int getType();
	public final native void setType(int v);
	
	public final native String getConfig();
	public final native void setConfig(String v);
	
	public final native String getRemotePath();
	public final native void setRemotePath(String v);
	
	public final native boolean getAutoUpdate();
	public final native void setAutoUpdate(boolean v);
	
	public final native int getAutoUpdateInterval();
	public final native void setAutoUpdateInterval(int v);
	
	public final native long getLastUpdated();
	public final native void setLastUpdated(long v);
	
	public native byte[] encode();
	@Override public boolean equals(Object o) {
		if (o == null || !(o instanceof ProfileContent)) {
		    return false;
		}
		ProfileContent that = (ProfileContent)o;
		String thisName = getName();
		String thatName = that.getName();
		if (thisName == null) {
			if (thatName != null) {
			    return false;
			}
		} else if (!thisName.equals(thatName)) {
		    return false;
		}
		int thisType = getType();
		int thatType = that.getType();
		if (thisType != thatType) {
		    return false;
		}
		String thisConfig = getConfig();
		String thatConfig = that.getConfig();
		if (thisConfig == null) {
			if (thatConfig != null) {
			    return false;
			}
		} else if (!thisConfig.equals(thatConfig)) {
		    return false;
		}
		String thisRemotePath = getRemotePath();
		String thatRemotePath = that.getRemotePath();
		if (thisRemotePath == null) {
			if (thatRemotePath != null) {
			    return false;
			}
		} else if (!thisRemotePath.equals(thatRemotePath)) {
		    return false;
		}
		boolean thisAutoUpdate = getAutoUpdate();
		boolean thatAutoUpdate = that.getAutoUpdate();
		if (thisAutoUpdate != thatAutoUpdate) {
		    return false;
		}
		int thisAutoUpdateInterval = getAutoUpdateInterval();
		int thatAutoUpdateInterval = that.getAutoUpdateInterval();
		if (thisAutoUpdateInterval != thatAutoUpdateInterval) {
		    return false;
		}
		long thisLastUpdated = getLastUpdated();
		long thatLastUpdated = that.getLastUpdated();
		if (thisLastUpdated != thatLastUpdated) {
		    return false;
		}
		return true;
	}
	
	@Override public int hashCode() {
	    return java.util.Arrays.hashCode(new Object[] {getName(), getType(), getConfig(), getRemotePath(), getAutoUpdate(), getAutoUpdateInterval(), getLastUpdated()});
	}
	
	@Override public String toString() {
		StringBuilder b = new StringBuilder();
		b.append("ProfileContent").append("{");
		b.append("Name:").append(getName()).append(",");
		b.append("Type:").append(getType()).append(",");
		b.append("Config:").append(getConfig()).append(",");
		b.append("RemotePath:").append(getRemotePath()).append(",");
		b.append("AutoUpdate:").append(getAutoUpdate()).append(",");
		b.append("AutoUpdateInterval:").append(getAutoUpdateInterval()).append(",");
		b.append("LastUpdated:").append(getLastUpdated()).append(",");
		return b.append("}").toString();
	}
}

