#ifndef _FS_PORTFOLIO_C_H_
#define _FS_PORTFOLIO_C_H_

#ifdef __cplusplus
extern "C" {
#endif



typedef enum _FSPortfolioNodeType {
e_FSPortfolioNodeTypeTypeUnknown  = 0,
e_FSTypeFolder  = 1,
e_FSTypeFile    = 2,
}FSPortfolioNodeType;


FSErrorCode FSDK_PortfolioNode_Release(FS_PORTFOLIONODE_HANDLE portfolionode_handle);
FSErrorCode FSDK_PortfolioNode_IsEmpty(FS_PORTFOLIONODE_HANDLE portfolionode_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PortfolioNode_GetNodeType(FS_PORTFOLIONODE_HANDLE portfolionode_handle, FSPortfolioNodeType* return_value);
FSErrorCode FSDK_PortfolioFolderNode_Create(const FS_PORTFOLIONODE_HANDLE other, FS_PORTFOLIOFOLDERNODE_HANDLE* portfoliofoldernode_return_value);
FSErrorCode FSDK_PortfolioFolderNode_Release(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle);
FSErrorCode FSDK_PortfolioFolderNode_IsRoot(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, FS_BOOL* return_value);
FSErrorCode FSDK_PortfolioFolderNode_GetName(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, FS_WSTR* return_value);
FSErrorCode FSDK_PortfolioFolderNode_AddFile(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, const wchar_t* file_path, FS_PORTFOLIOFILENODE_HANDLE* return_value);
FSErrorCode FSDK_PortfolioFolderNode_AddFile0(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle,  FSStreamCallback* file_stream, const wchar_t* file_name, FS_PORTFOLIOFILENODE_HANDLE* return_value);
FSErrorCode FSDK_PortfolioFolderNode_AddPDFDoc(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, const FS_PDFDOC_HANDLE pdf_doc, const wchar_t* file_name, FS_PORTFOLIOFILENODE_HANDLE* return_value);
FSErrorCode FSDK_PortfolioFolderNode_AddSubFolder(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, const wchar_t* folder_name, FS_PORTFOLIOFOLDERNODE_HANDLE* return_value);
FSErrorCode FSDK_PortfolioFolderNode_RemoveSubNode(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, const FS_PORTFOLIONODE_HANDLE sub_node);
FSErrorCode FSDK_PortfolioFolderNode_GetSortedSubNodes(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, FS_PORTFOLIONODE_HANDLE* return_portfolionode_array, FS_UINT32* return_array_length);
FSErrorCode FSDK_PortfolioFolderNode_GetModifiedDateTime(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, FSDateTime* return_value);
FSErrorCode FSDK_PortfolioFolderNode_GetCreationDateTime(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, FSDateTime* return_value);
FSErrorCode FSDK_PortfolioFolderNode_GetDescription(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, FS_WSTR* return_value);
FSErrorCode FSDK_PortfolioFolderNode_SetDescription(FS_PORTFOLIOFOLDERNODE_HANDLE portfoliofoldernode_handle, const wchar_t* description);
FSErrorCode FSDK_PortfolioFileNode_Create(const FS_PORTFOLIONODE_HANDLE other, FS_PORTFOLIOFILENODE_HANDLE* portfoliofilenode_return_value);
FSErrorCode FSDK_PortfolioFileNode_Release(FS_PORTFOLIOFILENODE_HANDLE portfoliofilenode_handle);
FSErrorCode FSDK_PortfolioFileNode_GetFileSpec(FS_PORTFOLIOFILENODE_HANDLE portfoliofilenode_handle, FS_FILESPEC_HANDLE* return_value);
FSErrorCode FSDK_PortfolioFileNode_GetKeyName(FS_PORTFOLIOFILENODE_HANDLE portfoliofilenode_handle, FS_WSTR* return_value);

typedef enum _FSInitialViewMode {
e_FSInitialViewModeInitialViewUnknownMode  = 0,
e_FSInitialViewDetailMode  = 1,
e_FSInitialViewTileMode    = 2,
e_FSInitialViewHidden    = 3,
}FSInitialViewMode;


FSErrorCode FSDK_SchemaField_Create(FS_SCHEMAFIELD_HANDLE* schemafield_return_value);
FSErrorCode FSDK_SchemaField_IsEmpty(FS_SCHEMAFIELD_HANDLE schemafield_handle, FS_BOOL* return_value);
FSErrorCode FSDK_SchemaField_Release(FS_SCHEMAFIELD_HANDLE schemafield_handle);
FSErrorCode FSDK_SchemaField_GetKeyName(FS_SCHEMAFIELD_HANDLE schemafield_handle, FS_BSTR* return_value);
FSErrorCode FSDK_SchemaField_SetKeyName(FS_SCHEMAFIELD_HANDLE schemafield_handle, const char* key_name);
FSErrorCode FSDK_SchemaField_GetSubtypeName(FS_SCHEMAFIELD_HANDLE schemafield_handle, FS_BSTR* return_value);
FSErrorCode FSDK_SchemaField_SetSubtypeName(FS_SCHEMAFIELD_HANDLE schemafield_handle, const char* subtype_name);
FSErrorCode FSDK_SchemaField_GetDisplayName(FS_SCHEMAFIELD_HANDLE schemafield_handle, FS_WSTR* return_value);
FSErrorCode FSDK_SchemaField_SetDisplayName(FS_SCHEMAFIELD_HANDLE schemafield_handle, const wchar_t* display_name);
FSErrorCode FSDK_SchemaField_IsVisible(FS_SCHEMAFIELD_HANDLE schemafield_handle, FS_BOOL* return_value);
FSErrorCode FSDK_SchemaField_SetVisibility(FS_SCHEMAFIELD_HANDLE schemafield_handle, FS_BOOL is_visible);
FSErrorCode FSDK_Portfolio_CreatePortfolio(FS_PORTFOLIO_HANDLE* return_value);
FSErrorCode FSDK_Portfolio_CreatePortfolio0(const FS_PDFDOC_HANDLE portfolio_pdf_doc, FS_PORTFOLIO_HANDLE* return_value);
FSErrorCode FSDK_Portfolio_IsEmpty(FS_PORTFOLIO_HANDLE portfolio_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Portfolio_Release(FS_PORTFOLIO_HANDLE portfolio_handle);
FSErrorCode FSDK_Portfolio_GetPortfolioPDFDoc(FS_PORTFOLIO_HANDLE portfolio_handle, FS_PDFDOC_HANDLE* return_value);
FSErrorCode FSDK_Portfolio_GetRootNode(FS_PORTFOLIO_HANDLE portfolio_handle, FS_PORTFOLIONODE_HANDLE* return_value);
FSErrorCode FSDK_Portfolio_GetInitialViewMode(FS_PORTFOLIO_HANDLE portfolio_handle, FSInitialViewMode* return_value);
FSErrorCode FSDK_Portfolio_SetInitialViewMode(FS_PORTFOLIO_HANDLE portfolio_handle, FSInitialViewMode mode);
FSErrorCode FSDK_Portfolio_IsSortedInAscending(FS_PORTFOLIO_HANDLE portfolio_handle, FS_BOOL* return_value);
FSErrorCode FSDK_Portfolio_SetSortingOrder(FS_PORTFOLIO_HANDLE portfolio_handle, FS_BOOL use_ascending_order);
FSErrorCode FSDK_Portfolio_GetSortingFieldKeyName(FS_PORTFOLIO_HANDLE portfolio_handle, FS_BSTR* return_value);
FSErrorCode FSDK_Portfolio_SetSortingFieldKeyName(FS_PORTFOLIO_HANDLE portfolio_handle, const char* name);
FSErrorCode FSDK_Portfolio_GetInitialFileSpecKeyName(FS_PORTFOLIO_HANDLE portfolio_handle, FS_WSTR* return_value);
FSErrorCode FSDK_Portfolio_SetInitialFileSpecKeyName(FS_PORTFOLIO_HANDLE portfolio_handle, const wchar_t* name);
FSErrorCode FSDK_Portfolio_GetSchemaFields(FS_PORTFOLIO_HANDLE portfolio_handle, FS_SCHEMAFIELD_HANDLE* return_schemafield_array, FS_UINT32* return_array_length);
FSErrorCode FSDK_Portfolio_SetSchemaFields(FS_PORTFOLIO_HANDLE portfolio_handle, const FS_SCHEMAFIELD_HANDLE* schemafield_array, FS_UINT32 array_length_field_array);
#ifdef __cplusplus
}
#endif
#endif
