//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
// Poniższy blok ifdef to standardowa metoda tworzenia makr, która znacznie ułatwia  
// eksport bibliotek DLL. Wszystkie pliki w tej bibliotece DLL są kompilowane z użyciem
// symbolu UNMANAGED_EXPORTS zdefiniowanego w wierszu poleceń. Ten symbol nie powinien być
// definiowany w żadnym projekcie wykorzustującym ten DLL. W ten sposób dowolny inny projekt,
// którego pliki źródłowe obejmują ten plik, będzie traktował funkcje UNMANAGED_API jako
// zaimportowane z biblioteki, podczas gdy ta biblioteka potraktuje symbole zdefiniowane
// w tym makro jako wyeksportowane.
#ifdef UNMANAGED_EXPORTS
#define UNMANAGED_API __declspec(dllexport)
#else
#define UNMANAGED_API __declspec(dllimport)
#endif

extern "C" {
UNMANAGED_API void StringCallback(LPWSTR *stringArray, int stringCount, void (__stdcall *function)(int, LPWSTR));
UNMANAGED_API void IntegerCallback(int * ia, int intCount, void (__stdcall* function)(int, int));
UNMANAGED_API void FloatCallback(float * fa, int floatCount, void (__stdcall* function)(int, float));
UNMANAGED_API void DoubleCallback(double * da, int doubleCount, void (__stdcall* function)(int, double));
};
