#ifndef _FS_FILESPEC_C_H_
#define _FS_FILESPEC_C_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "fs_pdfassociatefiles_c.h"

FSErrorCode FSDK_FileSpec_Create(const FS_PDFDOC_HANDLE document, FS_FILESPEC_HANDLE* filespec_return_value);
FSErrorCode FSDK_FileSpec_Create0(const FS_PDFDOC_HANDLE document, FS_PDFOBJECT_HANDLE pdf_object, FS_FILESPEC_HANDLE* filespec_return_value);
FSErrorCode FSDK_FileSpec_Release(FS_FILESPEC_HANDLE filespec_handle);
FSErrorCode FSDK_FileSpec_IsEmpty(FS_FILESPEC_HANDLE filespec_handle, FS_BOOL* return_value);
FSErrorCode FSDK_FileSpec_GetFileName(FS_FILESPEC_HANDLE filespec_handle, FS_WSTR* return_value);
FSErrorCode FSDK_FileSpec_SetFileName(FS_FILESPEC_HANDLE filespec_handle, const wchar_t* file_name);
FSErrorCode FSDK_FileSpec_GetAssociteFileRelationship(FS_FILESPEC_HANDLE filespec_handle, FSRelationship* return_value);
FSErrorCode FSDK_FileSpec_SetAssociteFileRelationship(FS_FILESPEC_HANDLE filespec_handle,  FSRelationship associfile_relationship);
FSErrorCode FSDK_FileSpec_GetFileSize(FS_FILESPEC_HANDLE filespec_handle, FS_INT64* return_value);
FSErrorCode FSDK_FileSpec_GetCompressedEmbeddedFileSize(FS_FILESPEC_HANDLE filespec_handle, FS_INT64* return_value);
FSErrorCode FSDK_FileSpec_GetFileData(FS_FILESPEC_HANDLE filespec_handle, FSReaderCallback* return_value);
FSErrorCode FSDK_FileSpec_Embed(FS_FILESPEC_HANDLE filespec_handle, const wchar_t* file_path, FS_BOOL* return_value);
FSErrorCode FSDK_FileSpec_Embed0(FS_FILESPEC_HANDLE filespec_handle,  FS_PDFOBJECT_HANDLE pdf_object, FS_BOOL* return_value);
FSErrorCode FSDK_FileSpec_Embed1(FS_FILESPEC_HANDLE filespec_handle,  FSStreamCallback* stream, FS_BOOL* return_value);
FSErrorCode FSDK_FileSpec_IsEmbedded(FS_FILESPEC_HANDLE filespec_handle, FS_BOOL* return_value);
FSErrorCode FSDK_FileSpec_GetDescription(FS_FILESPEC_HANDLE filespec_handle, FS_BSTR* return_value);
FSErrorCode FSDK_FileSpec_SetDescription(FS_FILESPEC_HANDLE filespec_handle, const char* description);
FSErrorCode FSDK_FileSpec_GetCreationDateTime(FS_FILESPEC_HANDLE filespec_handle, FSDateTime* return_value);
FSErrorCode FSDK_FileSpec_SetCreationDateTime(FS_FILESPEC_HANDLE filespec_handle, const FSDateTime date_time);
FSErrorCode FSDK_FileSpec_GetModifiedDateTime(FS_FILESPEC_HANDLE filespec_handle, FSDateTime* return_value);
FSErrorCode FSDK_FileSpec_SetModifiedDateTime(FS_FILESPEC_HANDLE filespec_handle, const FSDateTime date_time);
FSErrorCode FSDK_FileSpec_GetChecksum(FS_FILESPEC_HANDLE filespec_handle, FS_BSTR* return_value);
FSErrorCode FSDK_FileSpec_SetChecksum(FS_FILESPEC_HANDLE filespec_handle, const char* checksum);
FSErrorCode FSDK_FileSpec_GetSubtype(FS_FILESPEC_HANDLE filespec_handle, FS_BSTR* return_value);
FSErrorCode FSDK_FileSpec_SetSubtype(FS_FILESPEC_HANDLE filespec_handle, const char* subtype);
FSErrorCode FSDK_FileSpec_GetDict(FS_FILESPEC_HANDLE filespec_handle, FS_PDFDICTIONARY_HANDLE* return_value);
FSErrorCode FSDK_FileSpec_ExportToFile(FS_FILESPEC_HANDLE filespec_handle, const wchar_t* path, FS_BOOL* return_value);
FSErrorCode FSDK_FileSpec_ExportToFileStream(FS_FILESPEC_HANDLE filespec_handle,  FSStreamCallback* stream, FS_BOOL* return_value);
#ifdef __cplusplus
}
#endif
#endif
