Совместное использование сгенерированного кода для общих импортированных файлов XSD

Я использую gSOAP для привязки данных XML.

Недавно я реорганизовал свои файлы XSD, извлекая общую часть из двух файлов в отдельный третий файл, а затем импортируя ее в первые два файла. Это был глубокий и сложный элемент, который был переработан.

В реальном коде я хотел бы иметь одну функцию, которая принимает объект сгенерированного типа gSOAP, описывающий этот элемент, и создает некоторые внутренние объекты.

Но для этого мне нужно, чтобы сгенерированный класс был стабильным и одинаковым для обоих окончательных файлов XSD (чтобы функция могла принимать один тип). Но я не вижу никакого способа добиться этого.

Есть ли решение?


Я решил сделать функцию шаблоном, основываясь на том факте, что даже если сгенерированные типы различаются (в частности, из-за того, что они находятся в разных пространствах имен C++), они имеют одни и те же члены, поэтому шаблон должен работать хорошо. Но это требует от меня раскрытия реализации, которую я не хочу делать (она сложна в соответствии со сложностью элемента).


Другой подход, который я пробовал, заключался в том, чтобы заставить gSOAP сгенерировать код для обоих основных файлов XSD в одном и том же пространстве имен C++, чтобы код, сгенерированный для импортированного XSD, считался одинаковым. Но это приводит к проблемам со ссылками, поскольку определения повторяются.


person Adam Badura    schedule 17.05.2013    source источник
comment
Ранее я задавал вопрос также в gSOAP Yahoo Group (tech.groups.yahoo.com /group/gsoap/message/19266), но из-за очевидной малой активности я решил повторить это здесь.   -  person Adam Badura    schedule 17.05.2013
comment
Несколько похожий вопрос: stackoverflow.com/questions /12433719/ (пока нет ответов!). Возможно, во внутренних компонентах gSOAP все точно так же. Но так как внешне варианты использования различаются решил все же спросить.   -  person Adam Badura    schedule 17.05.2013