#pragma once

#if defined(_WIN32) || defined(WIN32)
    #ifdef FSSM_EXPORTS
        #define FSSM_API __declspec(dllexport)
    #else
        #define FSSM_API __declspec(dllimport)
    #endif
#else
    #define FSSM_API __attribute__((visibility("default")))
#endif

#define MAX_TYPENAME_LENGTH 32

typedef enum FSSMResult {
    Ok = 0,              // Operation completed successfully
    Cancel = 1,          // Operation was cancelled by user
    TimeIsUp = 2,        // Operation timed out
    AlreadyScanning = 3, // FSSM is already in scanning mode
    ScanningIsBreak = 4, // Scanning process was interrupted by another process (internal)
    LibraryError = 5,    // Some problem with library (adapter or driver) - failed to load or missing required functions
    DeviceError = 6,     // Device driver error
    BufferSizeError = 7, // Invalid buffer size provided
    InvalidArgsError = 8,     // Invalid arguments passed to function
    LongScannerNameError = 9, // Scanner name exceeds maximum length
    NoAdapterError = 10,      // No fingerprint adapter found
    AdapterNotReady = 11,     // Adapter is not ready for operation
    UnknownError = 12         // Unspecified or unexpected error
} FSSMResult;
