// Path: src/main/java/com/technofovea/hllib/methods/FullLibrary.java
// public interface FullLibrary extends BasicLibrary {
// 
//     /**
//      * Called to initialize the DLL library.
//      */
//     public void initialize();
// 
//     /**
//      * Called to shut down the DLL library.
//      */
//     public void shutdown();
// 
//     public boolean itemGetSize(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeEx(DirectoryItem item, LongByReference size);
// 
//     public boolean itemGetSizeOnDisk(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeOnDiskEx(DirectoryItem item, LongByReference size);
// 
//     public void itemGetPath(DirectoryItem item, byte[] buffer, int bufsize);
// 
//     public boolean createPackage(PackageType ePackageType, IntByReference packageId);
// 
//     public void packageClose();
// 
//     public void deletePackage(HlPackage pkg);
// 
//     public boolean packageGetExtractable(DirectoryItem file, ByteByReference extractable);
// 
//     public boolean packageGetFileSize(DirectoryItem file, IntByReference size);
// 
//     public boolean packageGetFileSizeOnDisk(DirectoryItem file, IntByReference size);
// 
//     public boolean packageCreateStream(DirectoryItem file, PointerByReference stream);
// 
//     public boolean fileCreateStream(DirectoryItem item, PointerByReference stream);
// }
// 
// Path: src/main/java/com/technofovea/hllib/enums/HlOption.java
// public enum HlOption implements JnaEnum<HlOption> {
// 
//     VERSION,
//     ERROR,
//     ERROR_SYSTEM,
//     ERROR_SHORT_FORMATED,
//     ERROR_LONG_FORMATED,
//     PROC_OPEN,
//     PROC_CLOSE,
//     PROC_READ,
//     PROC_WRITE,
//     PROC_SEEK,
//     PROC_TELL,
//     PROC_SIZE,
//     PROC_EXTRACT_ITEM_START,
//     PROC_EXTRACT_ITEM_END,
//     PROC_EXTRACT_FILE_PROGRESS,
//     PROC_VALIDATE_FILE_PROGRESS,
//     OVERWRITE_FILES,
//     PACKAGE_BOUND,
//     PACKAGE_ID,
//     PACKAGE_SIZE,
//     PACKAGE_TOTAL_ALLOCATIONS,
//     PACKAGE_TOTAL_MEMORY_ALLOCATED,
//     PACKAGE_TOTAL_MEMORY_USED,
//     READ_ENCRYPTED,
//     FORCE_DEFRAGMENT,
//     PROC_DEFRAGMENT_PROGRESS,
//     PROC_DEFRAGMENT_PROGRESS_EX,;
//     
//     private static int start = 0;
// 
//     public int getIntValue() {
//         return this.ordinal() + start;
//     }
// 
// 
//     public HlOption getForValue(int i) {
//         for (HlOption o : this.values()) {
//             if (o.getIntValue() == i) {
//                 return o;
//             }
//         }
//         return null;
//     }
//     
// }
// 
// Path: src/main/java/com/technofovea/hllib/methods/ManagedLibrary.java
// public interface ManagedLibrary extends BasicLibrary, ManagedCalls{       
// 
// }


import com.sun.jna.FunctionMapper;
import com.sun.jna.NativeLibrary;
import com.technofovea.hllib.methods.FullLibrary;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.technofovea.hllib.enums.HlOption;
import com.technofovea.hllib.methods.ManagedLibrary;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package com.technofovea.hllib;


/**
 * This class provides access to the singleton libary interface with the HlLib
 * DLL. It is possible to either request the raw interface, or the safer proxied
 * "managed" interface. These are not separate instances, just different levels
 * of safety for accessing the singleton.
 * 
 * @author Darien Hager
 */
public class HlLib {

    public static final String LIBRARY_NAME = "hllib";
    public static final String ARCH_PROPERTY = "sun.arch.data.model";
    public static final String ARCH_32 = "32";
    public static final String ARCH_64 = "64";
    public static final String ARCH_32_SUFFIX = "_32";
    public static final String ARCH_64_SUFFIX = "_64";
    private static final Logger logger = LoggerFactory.getLogger(HlLib.class);

    public static final String LIBRARY_VERSION = "2.4.0";
    static ManagedLibrary instance = null;
// Path: src/main/java/com/technofovea/hllib/methods/FullLibrary.java
// public interface FullLibrary extends BasicLibrary {
// 
//     /**
//      * Called to initialize the DLL library.
//      */
//     public void initialize();
// 
//     /**
//      * Called to shut down the DLL library.
//      */
//     public void shutdown();
// 
//     public boolean itemGetSize(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeEx(DirectoryItem item, LongByReference size);
// 
//     public boolean itemGetSizeOnDisk(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeOnDiskEx(DirectoryItem item, LongByReference size);
// 
//     public void itemGetPath(DirectoryItem item, byte[] buffer, int bufsize);
// 
//     public boolean createPackage(PackageType ePackageType, IntByReference packageId);
// 
//     public void packageClose();
// 
//     public void deletePackage(HlPackage pkg);
// 
//     public boolean packageGetExtractable(DirectoryItem file, ByteByReference extractable);
// 
//     public boolean packageGetFileSize(DirectoryItem file, IntByReference size);
// 
//     public boolean packageGetFileSizeOnDisk(DirectoryItem file, IntByReference size);
// 
//     public boolean packageCreateStream(DirectoryItem file, PointerByReference stream);
// 
//     public boolean fileCreateStream(DirectoryItem item, PointerByReference stream);
// }
// 
// Path: src/main/java/com/technofovea/hllib/enums/HlOption.java
// public enum HlOption implements JnaEnum<HlOption> {
// 
//     VERSION,
//     ERROR,
//     ERROR_SYSTEM,
//     ERROR_SHORT_FORMATED,
//     ERROR_LONG_FORMATED,
//     PROC_OPEN,
//     PROC_CLOSE,
//     PROC_READ,
//     PROC_WRITE,
//     PROC_SEEK,
//     PROC_TELL,
//     PROC_SIZE,
//     PROC_EXTRACT_ITEM_START,
//     PROC_EXTRACT_ITEM_END,
//     PROC_EXTRACT_FILE_PROGRESS,
//     PROC_VALIDATE_FILE_PROGRESS,
//     OVERWRITE_FILES,
//     PACKAGE_BOUND,
//     PACKAGE_ID,
//     PACKAGE_SIZE,
//     PACKAGE_TOTAL_ALLOCATIONS,
//     PACKAGE_TOTAL_MEMORY_ALLOCATED,
//     PACKAGE_TOTAL_MEMORY_USED,
//     READ_ENCRYPTED,
//     FORCE_DEFRAGMENT,
//     PROC_DEFRAGMENT_PROGRESS,
//     PROC_DEFRAGMENT_PROGRESS_EX,;
//     
//     private static int start = 0;
// 
//     public int getIntValue() {
//         return this.ordinal() + start;
//     }
// 
// 
//     public HlOption getForValue(int i) {
//         for (HlOption o : this.values()) {
//             if (o.getIntValue() == i) {
//                 return o;
//             }
//         }
//         return null;
//     }
//     
// }
// 
// Path: src/main/java/com/technofovea/hllib/methods/ManagedLibrary.java
// public interface ManagedLibrary extends BasicLibrary, ManagedCalls{       
// 
// }


// Path: src/main/java/com/technofovea/hllib/HlLib.java
import com.sun.jna.FunctionMapper;
import com.sun.jna.NativeLibrary;
import com.technofovea.hllib.methods.FullLibrary;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.technofovea.hllib.enums.HlOption;
import com.technofovea.hllib.methods.ManagedLibrary;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

package com.technofovea.hllib;


/**
 * This class provides access to the singleton libary interface with the HlLib
 * DLL. It is possible to either request the raw interface, or the safer proxied
 * "managed" interface. These are not separate instances, just different levels
 * of safety for accessing the singleton.
 * 
 * @author Darien Hager
 */
public class HlLib {

    public static final String LIBRARY_NAME = "hllib";
    public static final String ARCH_PROPERTY = "sun.arch.data.model";
    public static final String ARCH_32 = "32";
    public static final String ARCH_64 = "64";
    public static final String ARCH_32_SUFFIX = "_32";
    public static final String ARCH_64_SUFFIX = "_64";
    private static final Logger logger = LoggerFactory.getLogger(HlLib.class);

    public static final String LIBRARY_VERSION = "2.4.0";
    static ManagedLibrary instance = null;
    static FullLibrary rawInstance;