2013-10-14 1 views
0

Я должен использовать wsdl, который использует полиморфизм, в c-коде для вызова GSOAP. В соответствии с документацией GSOAP (8.2 Настройка привязки данных с файлом typemap.dat) требуется модификация в typemap.dat, которая представляет собой переопределение базового типа в качестве типа обертки. Поскольку я просто хочу изменить использование, поэтому я использовал elipsis (...) в разделе декларации, как это предложено в документации, но wsdl2h, похоже, не понимает elipsis и помещает их так, как он есть в выходной файл заголовка, который вызывает ошибки синтаксиса во время сборки кода.wsdl2h не мог понять elipsis (...), предоставленный в части декларации

Дополнения сделано в typemap.dat для полиморфного связывания:

[ 
struct __ns__PolymorphicStruct 
{ 
    int __type; 
    void *__item; 
    struct ns__PolymorphicStruct *__self; 
}; 
] 
ns__PolymorphicStruct = ... | struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct 

Может кто-нибудь, пожалуйста, помогите или указать, если я делаю что-то здесь не так?

ответ

0

Эллипсис предназначен для представления wsdl2-генерируемого определения ns__PolymorphicStruct, поэтому в вашем случае вы получите два объявления.

Использование:

[ 
struct __ns__PolymorphicStruct 
{ 
    int __type; 
    void *__item; 
    struct ns__PolymorphicStruct *__self; 
}; 
] 
ns__PolymorphicStruct = | struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct 

или использовать следующий (размещение наиважнейшей декларации ns__PolymorphicStruct изменится, хотя):

ns__PolymorphicStruct = \ 
struct __ns__PolymorphicStruct\ 
{\ 
    int __type;\ 
    void *__item;\ 
    struct ns__PolymorphicStruct *__self;\ 
};\ 
| struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct 

где \ используется, чтобы позволить объявление продолжить на следующая строка.