package com.mindoo.domino.jna.internal.structs;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.List;

import com.sun.jna.Pointer;
import com.sun.jna.Structure;
/**
 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
 * a tool written by <a href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>
 * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>.
 */
public class NotesTFMTStruct extends BaseStructure {
	/** Date Display Format */
	public byte Date;
	/** Time Display Format */
	public byte Time;
	/** Time Zone Display Format */
	public byte Zone;
	/** Overall Date/Time Structure */
	public byte Structure;
	public NotesTFMTStruct() {
		super();
	}
	
	public static NotesTFMTStruct newInstance() {
		return AccessController.doPrivileged(new PrivilegedAction<NotesTFMTStruct>() {

			@Override
			public NotesTFMTStruct run() {
				return new NotesTFMTStruct();
			}
		});
	}

	protected List<String> getFieldOrder() {
		return Arrays.asList("Date", "Time", "Zone", "Structure");
	}
	/**
	 * @param Date Date Display Format<br>
	 * @param Time Time Display Format<br>
	 * @param Zone Time Zone Display Format<br>
	 * @param Structure Overall Date/Time Structure
	 */
	public NotesTFMTStruct(byte Date, byte Time, byte Zone, byte Structure) {
		super();
		this.Date = Date;
		this.Time = Time;
		this.Zone = Zone;
		this.Structure = Structure;
	}
	
	public static NotesTFMTStruct newInstance(final byte Date, final byte Time, final byte Zone, final byte Structure) {
		return AccessController.doPrivileged(new PrivilegedAction<NotesTFMTStruct>() {

			@Override
			public NotesTFMTStruct run() {
				return new NotesTFMTStruct(Date, Time, Zone, Structure);
			}
		});
	}
	
	public NotesTFMTStruct(Pointer peer) {
		super(peer);
	}
	
	public static NotesTFMTStruct newInstance(final Pointer peer) {
		return AccessController.doPrivileged(new PrivilegedAction<NotesTFMTStruct>() {

			@Override
			public NotesTFMTStruct run() {
				return new NotesTFMTStruct(peer);
			}
		});
	}

	public static class ByReference extends NotesTFMTStruct implements Structure.ByReference {
		
	};
	public static class ByValue extends NotesTFMTStruct implements Structure.ByValue {
		
	};
}
