summaryrefslogtreecommitdiffstats
path: root/inc/libcmis-c
diff options
context:
space:
mode:
Diffstat (limited to 'inc/libcmis-c')
-rw-r--r--inc/libcmis-c/Makefile.am20
-rw-r--r--inc/libcmis-c/allowable-actions.h50
-rw-r--r--inc/libcmis-c/document.h96
-rw-r--r--inc/libcmis-c/error.h48
-rw-r--r--inc/libcmis-c/folder.h81
-rw-r--r--inc/libcmis-c/libcmis-c-api.h45
-rw-r--r--inc/libcmis-c/libcmis-c.h50
-rw-r--r--inc/libcmis-c/oauth2-data.h58
-rw-r--r--inc/libcmis-c/object-type.h114
-rw-r--r--inc/libcmis-c/object.h134
-rw-r--r--inc/libcmis-c/property-type.h86
-rw-r--r--inc/libcmis-c/property.h66
-rw-r--r--inc/libcmis-c/rendition.h59
-rw-r--r--inc/libcmis-c/repository.h107
-rw-r--r--inc/libcmis-c/session-factory.h79
-rw-r--r--inc/libcmis-c/session.h83
-rw-r--r--inc/libcmis-c/types.h228
-rw-r--r--inc/libcmis-c/vectors.h68
18 files changed, 1472 insertions, 0 deletions
diff --git a/inc/libcmis-c/Makefile.am b/inc/libcmis-c/Makefile.am
new file mode 100644
index 0000000..eefbde2
--- /dev/null
+++ b/inc/libcmis-c/Makefile.am
@@ -0,0 +1,20 @@
+libcmis_cdir = $(includedir)/libcmis-c-@LIBCMIS_API_VERSION@/libcmis-c
+
+dist_libcmis_c_HEADERS = \
+ allowable-actions.h \
+ document.h \
+ error.h \
+ folder.h \
+ libcmis-c-api.h \
+ libcmis-c.h \
+ oauth2-data.h \
+ object-type.h \
+ object.h \
+ property-type.h \
+ property.h \
+ rendition.h \
+ repository.h \
+ session-factory.h \
+ session.h \
+ types.h \
+ vectors.h
diff --git a/inc/libcmis-c/allowable-actions.h b/inc/libcmis-c/allowable-actions.h
new file mode 100644
index 0000000..c2764d3
--- /dev/null
+++ b/inc/libcmis-c/allowable-actions.h
@@ -0,0 +1,50 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_ALLOWABLE_ACTIONS_H_
+#define _LIBCMIS_ALLOWABLE_ACTIONS_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_allowable_actions_free( libcmis_AllowableActionsPtr allowable );
+
+LIBCMIS_C_API bool libcmis_allowable_actions_isAllowed( libcmis_AllowableActionsPtr allowable,
+ libcmis_allowable_actions_Type action );
+
+LIBCMIS_C_API bool libcmis_allowable_actions_isDefined( libcmis_AllowableActionsPtr allowable,
+ libcmis_allowable_actions_Type action );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/document.h b/inc/libcmis-c/document.h
new file mode 100644
index 0000000..5436956
--- /dev/null
+++ b/inc/libcmis-c/document.h
@@ -0,0 +1,96 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_DOCUMENT_H_
+#define _LIBCMIS_DOCUMENT_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_vector_document_free( libcmis_vector_document_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_document_size( libcmis_vector_document_Ptr vector );
+LIBCMIS_C_API libcmis_DocumentPtr libcmis_vector_document_get( libcmis_vector_document_Ptr vector, size_t i );
+
+LIBCMIS_C_API bool libcmis_is_document( libcmis_ObjectPtr object );
+LIBCMIS_C_API libcmis_DocumentPtr libcmis_document_cast( libcmis_ObjectPtr object );
+
+LIBCMIS_C_API void libcmis_document_free( libcmis_DocumentPtr document );
+
+LIBCMIS_C_API libcmis_vector_folder_Ptr libcmis_document_getParents( libcmis_DocumentPtr document, libcmis_ErrorPtr error );
+
+LIBCMIS_C_API void libcmis_document_getContentStream(
+ libcmis_DocumentPtr document,
+ libcmis_writeFn writeFn,
+ void* userData,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API void libcmis_document_setContentStream(
+ libcmis_DocumentPtr document,
+ libcmis_readFn readFn,
+ void* userData,
+ const char* contentType,
+ const char* filename,
+ bool overwrite,
+ libcmis_ErrorPtr );
+
+/** The resulting value needs to be free'd
+ */
+LIBCMIS_C_API char* libcmis_document_getContentType( libcmis_DocumentPtr document );
+
+/** The resulting value needs to be free'd
+ */
+LIBCMIS_C_API char* libcmis_document_getContentFilename( libcmis_DocumentPtr document );
+
+LIBCMIS_C_API long libcmis_document_getContentLength( libcmis_DocumentPtr document );
+
+LIBCMIS_C_API libcmis_DocumentPtr libcmis_document_checkOut( libcmis_DocumentPtr document, libcmis_ErrorPtr error );
+LIBCMIS_C_API void libcmis_document_cancelCheckout( libcmis_DocumentPtr document, libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_DocumentPtr libcmis_document_checkIn(
+ libcmis_DocumentPtr document,
+ bool isMajor,
+ const char* comment,
+ libcmis_vector_property_Ptr properties,
+ libcmis_readFn readFn,
+ void* userData,
+ const char* contentType,
+ const char* filename,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_vector_document_Ptr libcmis_document_getAllVersions(
+ libcmis_DocumentPtr document,
+ libcmis_ErrorPtr error );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/error.h b/inc/libcmis-c/error.h
new file mode 100644
index 0000000..8a63bfa
--- /dev/null
+++ b/inc/libcmis-c/error.h
@@ -0,0 +1,48 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_ERROR_H_
+#define _LIBCMIS_ERROR_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API libcmis_ErrorPtr libcmis_error_create( );
+LIBCMIS_C_API void libcmis_error_free( libcmis_ErrorPtr e );
+
+LIBCMIS_C_API const char* libcmis_error_getMessage( libcmis_ErrorPtr e );
+LIBCMIS_C_API const char* libcmis_error_getType( libcmis_ErrorPtr e );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/folder.h b/inc/libcmis-c/folder.h
new file mode 100644
index 0000000..e741e71
--- /dev/null
+++ b/inc/libcmis-c/folder.h
@@ -0,0 +1,81 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_FOLDER_H_
+#define _LIBCMIS_FOLDER_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_vector_folder_free( libcmis_vector_folder_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_folder_size( libcmis_vector_folder_Ptr vector );
+LIBCMIS_C_API libcmis_FolderPtr libcmis_vector_folder_get( libcmis_vector_folder_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API bool libcmis_is_folder( libcmis_ObjectPtr object );
+LIBCMIS_C_API libcmis_FolderPtr libcmis_folder_cast( libcmis_ObjectPtr object );
+
+LIBCMIS_C_API void libcmis_folder_free( libcmis_FolderPtr folder );
+
+LIBCMIS_C_API libcmis_FolderPtr libcmis_folder_getParent( libcmis_FolderPtr folder, libcmis_ErrorPtr error );
+LIBCMIS_C_API libcmis_vector_object_Ptr libcmis_folder_getChildren( libcmis_FolderPtr folder, libcmis_ErrorPtr error );
+
+/** Get the path of the folder. The returned string needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_folder_getPath( libcmis_FolderPtr folder );
+
+LIBCMIS_C_API bool libcmis_folder_isRootFolder( libcmis_FolderPtr folder );
+
+LIBCMIS_C_API libcmis_FolderPtr libcmis_folder_createFolder(
+ libcmis_FolderPtr folder,
+ libcmis_vector_property_Ptr properties,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_DocumentPtr libcmis_folder_createDocument(
+ libcmis_FolderPtr folder,
+ libcmis_vector_property_Ptr properties,
+ libcmis_readFn readFn,
+ void* userData,
+ const char* contentType,
+ const char* filename,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_vector_string_Ptr libcmis_folder_removeTree( libcmis_FolderPtr folder,
+ bool allVersion,
+ libcmis_folder_UnfileObjects unfile,
+ bool continueOnError,
+ libcmis_ErrorPtr error );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/libcmis-c-api.h b/inc/libcmis-c/libcmis-c-api.h
new file mode 100644
index 0000000..3fe7986
--- /dev/null
+++ b/inc/libcmis-c/libcmis-c-api.h
@@ -0,0 +1,45 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_C_API_H_
+#define _LIBCMIS_C_API_H_
+
+#ifdef DLL_EXPORT
+#ifdef LIBCMIS_C_BUILD
+#define LIBCMIS_C_API __declspec(dllexport)
+#else
+#define LIBCMIS_C_API __declspec(dllimport)
+#endif
+#else /* !DLL_EXPORT */
+#ifdef LIBCMIS_C_VISIBILITY
+#define LIBCMIS_C_API __attribute__((visibility("default")))
+#else
+#define LIBCMIS_C_API
+#endif
+#endif
+
+#endif
diff --git a/inc/libcmis-c/libcmis-c.h b/inc/libcmis-c/libcmis-c.h
new file mode 100644
index 0000000..d9f6e4e
--- /dev/null
+++ b/inc/libcmis-c/libcmis-c.h
@@ -0,0 +1,50 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_C_H_
+#define _LIBCMIS_C_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#include "libcmis-c/allowable-actions.h"
+#include "libcmis-c/document.h"
+#include "libcmis-c/error.h"
+#include "libcmis-c/folder.h"
+#include "libcmis-c/object.h"
+#include "libcmis-c/object-type.h"
+#include "libcmis-c/property.h"
+#include "libcmis-c/property-type.h"
+#include "libcmis-c/oauth2-data.h"
+#include "libcmis-c/rendition.h"
+#include "libcmis-c/repository.h"
+#include "libcmis-c/types.h"
+#include "libcmis-c/session.h"
+#include "libcmis-c/session-factory.h"
+#include "libcmis-c/vectors.h"
+
+#endif
diff --git a/inc/libcmis-c/oauth2-data.h b/inc/libcmis-c/oauth2-data.h
new file mode 100644
index 0000000..ec4a9d3
--- /dev/null
+++ b/inc/libcmis-c/oauth2-data.h
@@ -0,0 +1,58 @@
+
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_OAUTH2_DATA_H_
+#define _LIBCMIS_OAUTH2_DATA_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API libcmis_OAuth2DataPtr libcmis_oauth2data_create(
+ char* authUrl, char* tokenUrl, char* scopes, char* redirectUri,
+ char* clientId, char* clientSecret );
+
+LIBCMIS_C_API void libcmis_oauth2data_free( libcmis_OAuth2DataPtr oauth2 );
+
+LIBCMIS_C_API bool libcmis_oauth2data_isComplete( libcmis_OAuth2DataPtr oauth2 );
+
+LIBCMIS_C_API const char* libcmis_oauth2data_getAuthUrl( libcmis_OAuth2DataPtr oauth2 );
+LIBCMIS_C_API const char* libcmis_oauth2data_getTokenUrl( libcmis_OAuth2DataPtr oauth2 );
+LIBCMIS_C_API const char* libcmis_oauth2data_getClientId( libcmis_OAuth2DataPtr oauth2 );
+LIBCMIS_C_API const char* libcmis_oauth2data_getClientSecret( libcmis_OAuth2DataPtr oauth2 );
+LIBCMIS_C_API const char* libcmis_oauth2data_getScope( libcmis_OAuth2DataPtr oauth2 );
+LIBCMIS_C_API const char* libcmis_oauth2data_getRedirectUri( libcmis_OAuth2DataPtr oauth2 );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/object-type.h b/inc/libcmis-c/object-type.h
new file mode 100644
index 0000000..0e0317c
--- /dev/null
+++ b/inc/libcmis-c/object-type.h
@@ -0,0 +1,114 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_OBJECT_TYPE_H_
+#define _LIBCMIS_OBJECT_TYPE_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+LIBCMIS_C_API void libcmis_vector_object_type_free( libcmis_vector_object_type_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_object_type_size( libcmis_vector_object_type_Ptr vector );
+LIBCMIS_C_API libcmis_ObjectTypePtr libcmis_vector_object_type_get( libcmis_vector_object_type_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API void libcmis_object_type_free( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_getId( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_getLocalName( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_getLocalNamespace( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_getQueryName( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_getDisplayName( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_getDescription( libcmis_ObjectTypePtr type );
+
+LIBCMIS_C_API libcmis_ObjectTypePtr libcmis_object_type_getParentType(
+ libcmis_ObjectTypePtr type,
+ libcmis_ErrorPtr error );
+LIBCMIS_C_API libcmis_ObjectTypePtr libcmis_object_type_getBaseType(
+ libcmis_ObjectTypePtr type,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_vector_object_type_Ptr libcmis_object_type_getChildren(
+ libcmis_ObjectTypePtr type,
+ libcmis_ErrorPtr error );
+
+/** The resulting value needs to be freed
+ \since libcmis 0.4
+ */
+LIBCMIS_C_API char* libcmis_object_type_getParentTypeId( libcmis_ObjectTypePtr type );
+
+/** The resulting value needs to be freed
+ \since libcmis 0.4
+ */
+LIBCMIS_C_API char* libcmis_object_type_getBaseTypeId( libcmis_ObjectTypePtr type );
+
+LIBCMIS_C_API bool libcmis_object_type_isCreatable( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isFileable( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isQueryable( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isFulltextIndexed( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isIncludedInSupertypeQuery( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isControllablePolicy( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isControllableACL( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API bool libcmis_object_type_isVersionable( libcmis_ObjectTypePtr type );
+
+LIBCMIS_C_API libcmis_object_type_ContentStreamAllowed libcmis_object_type_getContentStreamAllowed( libcmis_ObjectTypePtr type );
+
+LIBCMIS_C_API libcmis_vector_property_type_Ptr libcmis_object_type_getPropertiesTypes( libcmis_ObjectTypePtr type );
+LIBCMIS_C_API libcmis_PropertyTypePtr libcmis_object_type_getPropertyType( libcmis_ObjectTypePtr type, const char* id );
+
+
+/** The resulting value needs to be freed
+ */
+LIBCMIS_C_API char* libcmis_object_type_toString( libcmis_ObjectTypePtr type );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/object.h b/inc/libcmis-c/object.h
new file mode 100644
index 0000000..8739cff
--- /dev/null
+++ b/inc/libcmis-c/object.h
@@ -0,0 +1,134 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_OBJECT_H_
+#define _LIBCMIS_OBJECT_H_
+
+#include <time.h>
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_vector_object_free( libcmis_vector_object_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_object_size( libcmis_vector_object_Ptr vector );
+LIBCMIS_C_API libcmis_ObjectPtr libcmis_vector_object_get( libcmis_vector_object_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API void libcmis_object_free( libcmis_ObjectPtr object );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getId( libcmis_ObjectPtr object );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getName( libcmis_ObjectPtr object );
+
+LIBCMIS_C_API libcmis_vector_string_Ptr libcmis_object_getPaths( libcmis_ObjectPtr object );
+
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getBaseType( libcmis_ObjectPtr object );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getType( libcmis_ObjectPtr object );
+
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getCreatedBy( libcmis_ObjectPtr object );
+LIBCMIS_C_API time_t libcmis_object_getCreationDate( libcmis_ObjectPtr object );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getLastModifiedBy( libcmis_ObjectPtr object );
+LIBCMIS_C_API time_t libcmis_object_getLastModificationDate( libcmis_ObjectPtr object );
+
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getChangeToken( libcmis_ObjectPtr object );
+LIBCMIS_C_API bool libcmis_object_isImmutable( libcmis_ObjectPtr object );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API libcmis_vector_string_Ptr libcmis_object_getSecondaryTypes( libcmis_ObjectPtr object );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_getThumbnailUrl( libcmis_ObjectPtr object );
+
+LIBCMIS_C_API libcmis_vector_rendition_Ptr libcmis_object_getRenditions( libcmis_ObjectPtr object, libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_ObjectPtr
+LIBCMIS_C_API libcmis_object_addSecondaryType( libcmis_ObjectPtr object,
+ const char* id,
+ libcmis_vector_property_Ptr properties,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_ObjectPtr
+LIBCMIS_C_API libcmis_object_removeSecondaryType( libcmis_ObjectPtr object,
+ const char* id,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_vector_property_Ptr libcmis_object_getProperties( libcmis_ObjectPtr object );
+LIBCMIS_C_API libcmis_PropertyPtr libcmis_object_getProperty( libcmis_ObjectPtr object, const char* name );
+LIBCMIS_C_API void libcmis_object_setProperty( libcmis_ObjectPtr object, libcmis_PropertyPtr property );
+LIBCMIS_C_API libcmis_ObjectPtr libcmis_object_updateProperties(
+ libcmis_ObjectPtr object,
+ libcmis_vector_property_Ptr properties,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_ObjectTypePtr libcmis_object_getTypeDescription( libcmis_ObjectPtr object );
+LIBCMIS_C_API libcmis_AllowableActionsPtr libcmis_object_getAllowableActions( libcmis_ObjectPtr object );
+
+LIBCMIS_C_API void libcmis_object_refresh( libcmis_ObjectPtr object, libcmis_ErrorPtr error );
+LIBCMIS_C_API time_t libcmis_object_getRefreshTimestamp( libcmis_ObjectPtr object );
+
+LIBCMIS_C_API void libcmis_object_remove( libcmis_ObjectPtr object, bool allVersions, libcmis_ErrorPtr error );
+
+LIBCMIS_C_API void libcmis_object_move( libcmis_ObjectPtr object,
+ libcmis_FolderPtr source,
+ libcmis_FolderPtr dest,
+ libcmis_ErrorPtr error );
+
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_object_toString( libcmis_ObjectPtr object );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/property-type.h b/inc/libcmis-c/property-type.h
new file mode 100644
index 0000000..f0faa90
--- /dev/null
+++ b/inc/libcmis-c/property-type.h
@@ -0,0 +1,86 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_PROPERTY_TYPE_H_
+#define _LIBCMIS_PROPERTY_TYPE_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+LIBCMIS_C_API void libcmis_vector_property_type_free( libcmis_vector_property_type_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_property_type_size( libcmis_vector_property_type_Ptr vector );
+LIBCMIS_C_API libcmis_PropertyTypePtr libcmis_vector_property_type_get( libcmis_vector_property_type_Ptr vector, size_t i );
+
+LIBCMIS_C_API void libcmis_property_type_free( libcmis_PropertyTypePtr type );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_property_type_getId( libcmis_PropertyTypePtr type );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_property_type_getLocalName( libcmis_PropertyTypePtr type );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_property_type_getLocalNamespace( libcmis_PropertyTypePtr type );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_property_type_getDisplayName( libcmis_PropertyTypePtr type );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_property_type_getQueryName( libcmis_PropertyTypePtr type );
+
+LIBCMIS_C_API libcmis_property_type_Type libcmis_property_type_getType( libcmis_PropertyTypePtr type );
+
+/** The resulting value needs to be free'd.
+ */
+LIBCMIS_C_API char* libcmis_property_type_getXmlType( libcmis_PropertyTypePtr type );
+
+LIBCMIS_C_API bool libcmis_property_type_isMultiValued( libcmis_PropertyTypePtr type );
+LIBCMIS_C_API bool libcmis_property_type_isUpdatable( libcmis_PropertyTypePtr type );
+LIBCMIS_C_API bool libcmis_property_type_isInherited( libcmis_PropertyTypePtr type );
+LIBCMIS_C_API bool libcmis_property_type_isRequired( libcmis_PropertyTypePtr type );
+LIBCMIS_C_API bool libcmis_property_type_isQueryable( libcmis_PropertyTypePtr type );
+LIBCMIS_C_API bool libcmis_property_type_isOrderable( libcmis_PropertyTypePtr type );
+LIBCMIS_C_API bool libcmis_property_type_isOpenChoice( libcmis_PropertyTypePtr type );
+
+LIBCMIS_C_API void libcmis_property_type_update( libcmis_PropertyTypePtr propDef,
+ libcmis_vector_object_type_Ptr types );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/property.h b/inc/libcmis-c/property.h
new file mode 100644
index 0000000..7d06418
--- /dev/null
+++ b/inc/libcmis-c/property.h
@@ -0,0 +1,66 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_PROPERTY_HXX_
+#define _LIBCMIS_PROPERTY_HXX_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API libcmis_vector_property_Ptr libcmis_vector_property_create( );
+LIBCMIS_C_API void libcmis_vector_property_free( libcmis_vector_property_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_property_size( libcmis_vector_property_Ptr vector );
+LIBCMIS_C_API libcmis_PropertyPtr libcmis_vector_property_get( libcmis_vector_property_Ptr vector, size_t i );
+
+/** The item object can be deleted after this call safely.
+ */
+LIBCMIS_C_API void libcmis_vector_property_append( libcmis_vector_property_Ptr vector, libcmis_PropertyPtr item );
+
+
+LIBCMIS_C_API libcmis_PropertyPtr libcmis_property_create( libcmis_PropertyTypePtr type, const char** strValues, size_t size );
+LIBCMIS_C_API void libcmis_property_free( libcmis_PropertyPtr property );
+
+LIBCMIS_C_API libcmis_PropertyTypePtr libcmis_property_getPropertyType( libcmis_PropertyPtr property );
+
+LIBCMIS_C_API libcmis_vector_time_Ptr libcmis_property_getDateTimes( libcmis_PropertyPtr property );
+LIBCMIS_C_API libcmis_vector_bool_Ptr libcmis_property_getBools( libcmis_PropertyPtr property );
+LIBCMIS_C_API libcmis_vector_string_Ptr libcmis_property_getStrings( libcmis_PropertyPtr property );
+LIBCMIS_C_API libcmis_vector_long_Ptr libcmis_property_getLongs( libcmis_PropertyPtr property );
+LIBCMIS_C_API libcmis_vector_double_Ptr libcmis_property_getDoubles( libcmis_PropertyPtr property );
+
+LIBCMIS_C_API void libcmis_property_setValues( libcmis_PropertyPtr property, const char** strValues, size_t size );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/inc/libcmis-c/rendition.h b/inc/libcmis-c/rendition.h
new file mode 100644
index 0000000..927fd28
--- /dev/null
+++ b/inc/libcmis-c/rendition.h
@@ -0,0 +1,59 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2013 Cao Cuong Ngo <cao.cuong.ngo@gmail.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+
+#ifndef _LIBCMIS_RENDITION_H_
+#define _LIBCMIS_RENDITION_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_rendition_free( libcmis_RenditionPtr rendition );
+
+LIBCMIS_C_API bool libcmis_rendition_isThumbnail( libcmis_RenditionPtr rendition );
+
+LIBCMIS_C_API const char* libcmis_rendition_getStreamId( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API const char* libcmis_rendition_getMimeType( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API const char* libcmis_rendition_getKind( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API const char* libcmis_rendition_getUrl( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API const char* libcmis_rendition_getTitle( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API long libcmis_rendition_getLength( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API long libcmis_rendition_getWidth( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API long libcmis_rendition_getHeight( libcmis_RenditionPtr rendition );
+LIBCMIS_C_API const char* libcmis_rendition_getRenditionDocumentId( libcmis_RenditionPtr rendition );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/inc/libcmis-c/repository.h b/inc/libcmis-c/repository.h
new file mode 100644
index 0000000..651a881
--- /dev/null
+++ b/inc/libcmis-c/repository.h
@@ -0,0 +1,107 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _REPOSITORY_H_
+#define _REPOSITORY_H_
+
+#include <libxml/tree.h>
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_vector_repository_free( libcmis_vector_Repository_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_repository_size( libcmis_vector_Repository_Ptr vector );
+LIBCMIS_C_API libcmis_RepositoryPtr libcmis_vector_repository_get( libcmis_vector_Repository_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API libcmis_RepositoryPtr libcmis_repository_create( xmlNodePtr node );
+
+LIBCMIS_C_API void libcmis_repository_free( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getId( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getName( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getDescription( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getVendorName( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getProductName( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getProductVersion( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getRootId( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getCmisVersionSupported( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getThinClientUri( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getPrincipalAnonymous( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getPrincipalAnyone( libcmis_RepositoryPtr repository );
+
+/** The resulting value needs to be freed.
+ */
+LIBCMIS_C_API char* libcmis_repository_getCapability(
+ libcmis_RepositoryPtr repository,
+ libcmis_repository_capability_Type capability );
+
+LIBCMIS_C_API bool libcmis_repository_getCapabilityAsBool(
+ libcmis_RepositoryPtr repository,
+ libcmis_repository_capability_Type capability );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/session-factory.h b/inc/libcmis-c/session-factory.h
new file mode 100644
index 0000000..f10ddd2
--- /dev/null
+++ b/inc/libcmis-c/session-factory.h
@@ -0,0 +1,79 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _SESSION_FACTORY_H_
+#define _SESSION_FACTORY_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_setAuthenticationCallback( libcmis_authenticationCallback callback );
+LIBCMIS_C_API void libcmis_setCertValidationCallback( libcmis_certValidationCallback callback );
+LIBCMIS_C_API void libcmis_setOAuth2AuthCodeProvider( libcmis_oauth2AuthCodeProvider callback );
+LIBCMIS_C_API libcmis_oauth2AuthCodeProvider libcmis_getOAuth2AuthCodeProvider( );
+
+LIBCMIS_C_API void libcmis_setProxySettings(
+ char* proxy,
+ char* noProxy,
+ char* proxyUser,
+ char* proxyPass );
+
+LIBCMIS_C_API const char* libcmis_getProxy( );
+LIBCMIS_C_API const char* libcmis_getNoProxy( );
+LIBCMIS_C_API const char* libcmis_getProxyUser( );
+LIBCMIS_C_API const char* libcmis_getProxyPass( );
+
+LIBCMIS_C_API libcmis_SessionPtr libcmis_createSession(
+ char* bindingUrl,
+ char* repositoryId,
+ char* username,
+ char* password,
+ bool noSslCheck,
+ libcmis_OAuth2DataPtr oauth2,
+ bool verbose,
+ libcmis_ErrorPtr error );
+
+/**
+ \deprecated
+ use libcmis_createSession and libcmis_session_getRepositories instead
+ */
+LIBCMIS_C_API libcmis_vector_Repository_Ptr libcmis_getRepositories(
+ char* bindingUrl,
+ char* username,
+ char* password,
+ bool verbose,
+ libcmis_ErrorPtr error );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/session.h b/inc/libcmis-c/session.h
new file mode 100644
index 0000000..77c0d90
--- /dev/null
+++ b/inc/libcmis-c/session.h
@@ -0,0 +1,83 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_SESSION_H_
+#define _LIBCMIS_SESSION_H_
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_session_free( libcmis_SessionPtr session );
+
+LIBCMIS_C_API libcmis_RepositoryPtr libcmis_session_getRepository(
+ libcmis_SessionPtr session,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_vector_Repository_Ptr libcmis_session_getRepositories(
+ libcmis_SessionPtr session );
+
+LIBCMIS_C_API bool libcmis_session_setRepository(
+ libcmis_SessionPtr session,
+ const char* repositoryId );
+
+LIBCMIS_C_API libcmis_FolderPtr libcmis_session_getRootFolder(
+ libcmis_SessionPtr session,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_ObjectPtr libcmis_session_getObject(
+ libcmis_SessionPtr session,
+ const char* id,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_ObjectPtr libcmis_session_getObjectByPath(
+ libcmis_SessionPtr session,
+ const char* path,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_FolderPtr libcmis_session_getFolder(
+ libcmis_SessionPtr session,
+ const char* id,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_ObjectTypePtr libcmis_session_getType(
+ libcmis_SessionPtr session,
+ const char* id,
+ libcmis_ErrorPtr error );
+
+LIBCMIS_C_API libcmis_vector_object_type_Ptr libcmis_session_getBaseTypes(
+ libcmis_SessionPtr session,
+ libcmis_ErrorPtr error );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/types.h b/inc/libcmis-c/types.h
new file mode 100644
index 0000000..c3e784c
--- /dev/null
+++ b/inc/libcmis-c/types.h
@@ -0,0 +1,228 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_TYPES_H_
+#define _LIBCMIS_TYPES_H_
+
+#ifndef __cplusplus
+#include <stdbool.h>
+#endif
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Vectors of simple types */
+
+
+typedef struct libcmis_vector_bool* libcmis_vector_bool_Ptr;
+
+typedef struct libcmis_vector_string* libcmis_vector_string_Ptr;
+
+typedef struct libcmis_vector_long* libcmis_vector_long_Ptr;
+
+typedef struct libcmis_vector_double* libcmis_vector_double_Ptr;
+
+typedef struct libcmis_vector_time* libcmis_vector_time_Ptr;
+
+typedef struct libcmis_vector_repository* libcmis_vector_Repository_Ptr;
+
+
+/* AllowableActions */
+
+
+typedef struct libcmis_allowable_actions* libcmis_AllowableActionsPtr;
+
+typedef enum
+{
+ libcmis_DeleteObject,
+ libcmis_UpdateProperties,
+ libcmis_GetFolderTree,
+ libcmis_GetProperties,
+ libcmis_GetObjectRelationships,
+ libcmis_GetObjectParents,
+ libcmis_GetFolderParent,
+ libcmis_GetDescendants,
+ libcmis_MoveObject,
+ libcmis_DeleteContentStream,
+ libcmis_CheckOut,
+ libcmis_CancelCheckOut,
+ libcmis_CheckIn,
+ libcmis_SetContentStream,
+ libcmis_GetAllVersions,
+ libcmis_AddObjectToFolder,
+ libcmis_RemoveObjectFromFolder,
+ libcmis_GetContentStream,
+ libcmis_ApplyPolicy,
+ libcmis_GetAppliedPolicies,
+ libcmis_RemovePolicy,
+ libcmis_GetChildren,
+ libcmis_CreateDocument,
+ libcmis_CreateFolder,
+ libcmis_CreateRelationship,
+ libcmis_DeleteTree,
+ libcmis_GetRenditions,
+ libcmis_GetACL,
+ libcmis_ApplyACL
+} libcmis_allowable_actions_Type;
+
+
+/* Document */
+
+
+typedef struct libcmis_document* libcmis_DocumentPtr;
+typedef size_t ( *libcmis_writeFn )( const void*, size_t, size_t, void* );
+typedef size_t ( *libcmis_readFn )( void*, size_t, size_t, void* );
+
+typedef struct libcmis_vector_document* libcmis_vector_document_Ptr;
+
+/* Error */
+
+
+typedef struct libcmis_error* libcmis_ErrorPtr;
+
+
+/* Folder */
+
+
+typedef struct libcmis_folder* libcmis_FolderPtr;
+
+
+typedef struct libcmis_vector_folder* libcmis_vector_folder_Ptr;
+
+typedef enum
+{
+ libcmis_Unfile,
+ libcmis_DeleteSingleFiled,
+ libcmis_Delete
+} libcmis_folder_UnfileObjects;
+
+
+/* ObjectType */
+
+
+typedef struct libcmis_object_type* libcmis_ObjectTypePtr;
+
+typedef struct libcmis_vector_object_type* libcmis_vector_object_type_Ptr;
+
+typedef enum
+{
+ libcmis_NotAllowed,
+ libcmis_Allowed,
+ libcmis_Required
+} libcmis_object_type_ContentStreamAllowed;
+
+
+/* Object */
+
+
+typedef struct libcmis_object* libcmis_ObjectPtr;
+
+typedef struct libcmis_vector_object* libcmis_vector_object_Ptr;
+
+
+/* Property */
+
+
+typedef struct libcmis_property* libcmis_PropertyPtr;
+
+typedef struct libcmis_vector_property* libcmis_vector_property_Ptr;
+
+
+/* PropertyType */
+
+
+typedef struct libcmis_property_type* libcmis_PropertyTypePtr;
+
+typedef struct libcmis_vector_property_type* libcmis_vector_property_type_Ptr;
+
+typedef enum
+{
+ libcmis_String,
+ libcmis_Integer,
+ libcmis_Decimal,
+ libcmis_Bool,
+ libcmis_DateTime
+} libcmis_property_type_Type;
+
+
+/* Repository */
+
+typedef enum
+{
+ libcmis_capability_ACL,
+ libcmis_capability_AllVersionsSearchable,
+ libcmis_capability_Changes,
+ libcmis_capability_ContentStreamUpdatability,
+ libcmis_capability_GetDescendants,
+ libcmis_capability_GetFolderTree,
+ libcmis_capability_OrderBy,
+ libcmis_capability_Multifiling,
+ libcmis_capability_PWCSearchable,
+ libcmis_capability_PWCUpdatable,
+ libcmis_capability_Query,
+ libcmis_capability_Renditions,
+ libcmis_capability_Unfiling,
+ libcmis_capability_VersionSpecificFiling,
+ libcmis_capability_Join
+} libcmis_repository_capability_Type;
+
+typedef struct libcmis_repository* libcmis_RepositoryPtr;
+
+
+/* Session */
+
+
+typedef struct libcmis_session* libcmis_SessionPtr;
+
+typedef bool ( *libcmis_authenticationCallback )( char* username, char* password );
+typedef bool ( *libcmis_certValidationCallback )( libcmis_vector_string_Ptr certificatesChain );
+typedef char * ( *libcmis_oauth2AuthCodeProvider ) ( const char* authUrl, const char* username, const char* password );
+
+
+/* OAuth2Data */
+
+
+typedef struct libcmis_oauth2data* libcmis_OAuth2DataPtr;
+
+typedef char* ( *libcmis_OAuth2AuthCodeProvider )( const char* authUrl,
+ const char* username, const char* password );
+
+
+/* Rendition */
+
+
+typedef struct libcmis_rendition* libcmis_RenditionPtr;
+typedef struct libcmis_vector_rendition* libcmis_vector_rendition_Ptr;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/inc/libcmis-c/vectors.h b/inc/libcmis-c/vectors.h
new file mode 100644
index 0000000..2c791c7
--- /dev/null
+++ b/inc/libcmis-c/vectors.h
@@ -0,0 +1,68 @@
+/* libcmis
+ * Version: MPL 1.1 / GPLv2+ / LGPLv2+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 SUSE <cbosdonnat@suse.com>
+ *
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
+ * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
+ * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
+ * instead of those above.
+ */
+#ifndef _LIBCMIS_VECTORS_HXX_
+#define _LIBCMIS_VECTORS_HXX_
+
+#include <time.h>
+
+#include "libcmis-c/libcmis-c-api.h"
+#include "libcmis-c/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+LIBCMIS_C_API void libcmis_vector_bool_free( libcmis_vector_bool_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_bool_size( libcmis_vector_bool_Ptr vector );
+LIBCMIS_C_API bool libcmis_vector_bool_get( libcmis_vector_bool_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API void libcmis_vector_string_free( libcmis_vector_string_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_string_size( libcmis_vector_string_Ptr vector );
+LIBCMIS_C_API const char* libcmis_vector_string_get( libcmis_vector_string_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API void libcmis_vector_long_free( libcmis_vector_long_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_long_size( libcmis_vector_long_Ptr vector );
+LIBCMIS_C_API long libcmis_vector_long_get( libcmis_vector_long_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API void libcmis_vector_double_free( libcmis_vector_double_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_double_size( libcmis_vector_double_Ptr vector );
+LIBCMIS_C_API double libcmis_vector_double_get( libcmis_vector_double_Ptr vector, size_t i );
+
+
+LIBCMIS_C_API void libcmis_vector_time_free( libcmis_vector_time_Ptr vector );
+LIBCMIS_C_API size_t libcmis_vector_time_size( libcmis_vector_time_Ptr vector );
+LIBCMIS_C_API time_t libcmis_vector_time_get( libcmis_vector_time_Ptr vector, size_t i );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif