#ifndef H_CORAL_DIFF_DIFFERENCE
#define H_CORAL_DIFF_DIFFERENCE
// This file is part of the Coral project.
// Please read the copyright notice in the LICENSE file.

#include <coral/lib/helper_uuid.h>
#include <coral/core/Element.h>
#include <coral/core/ElementDefinition.h>
#include <coral/lib/autovector.h>


NAMESPACE_BEGIN(coral);
NAMESPACE_BEGIN(DIFF);

#ifndef SWIG
enum modeldifference_params {
  MODELDIFFERENCE_IGNORE_DIAGRAM_INFORMATION = 1,
  MODELDIFFERENCE_ONLY_DIAGRAM_INFORMATION = 2,
};
#endif

#ifndef SWIG

typedef auto2unrefmap<const char*, const Element*, less_strcmp<const char*> >
model_elements_t;
void getUUID2ElementMap(const Collection* roots, model_elements_t& mret);

#endif


/**
 * Compares two collections and returns a DIFF10 model
 *
 */
coral::autounref<coral::Element> EXPORT_coral
ModelDifference(const Collection* roots1,
		const Collection* roots2,
		int params = 0) throw (std::exception);

coral::autounref<coral::Element>
EXPORT_coral
ModelDifference_One(const Element* root1,
		    const Element* root2,
		    int params = 0) throw (std::exception);


NAMESPACE_END();
NAMESPACE_END();


#endif
