To polecenie glib-genmarshal, które można uruchomić w darmowym dostawcy hostingu OnWorks, korzystając z jednej z wielu naszych darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
glib-genmarshal - narzędzie do generowania marszałków kodu C dla zamknięć GLib
STRESZCZENIE
żwawy generał-marszałek [PLIK OPCJI...]
OPIS
żwawy generał-marszałek jest małym narzędziem generującym marszałków kodu C do wywołań zwrotnych
funkcje mechanizmu GClosure w podbibliotece GObject biblioteki GLib. Marszałek
funkcje mają standardowy podpis, są przekazywane w wywołującym zamknięciu, tablicy
struktury wartości zawierające parametry funkcji wywołania zwrotnego i strukturę wartości dla
wartość zwracana przez callback. Następnie marshaller jest odpowiedzialny za wywołanie odpowiedniego C
kod funkcji zamknięcia ze wszystkimi parametrami na stosie i zebranie jej
zwracana wartość.
żwawy generał-marszałek pobiera listę marszałków do wygenerowania jako dane wejściowe. Lista marszałków to
odczytane ze standardowego wejścia lub z plików przekazanych jako dodatkowe argumenty
wiersz poleceń.
Marshall podstęp format
Listy marszałkowskie są przetwarzane wiersz po wierszu, wiersz może zawierać komentarz w formie
of
lub specyfikacja marszałkowska formularza
TYP R:PTYP
TYP R:PTYP,PTYP
TYP R:PTYP,PTYP,PTYP
(do 16 PTYPs może być obecny).
TYP R część określa typ zwracany przez wywołanie zwrotne i PTYPs w prawo do okrężnicy
określ listę parametrów wywołania zwrotnego, z wyjątkiem pierwszego i ostatniego argumentu, które
są zawsze wskaźnikami.
Parametr typy
Obecnie obsługiwane są następujące typy:
UNIEWAŻNIĆ
oznacza brak typu zwracanego lub brak dodatkowych parametrów. Jeśli UNIEWAŻNIĆ jest używany jako parametr
lista, nie mogą być obecne żadne dodatkowe parametry.
BOOLEAN
dla typów boolowskich (gboolean)
ZWĘGLAĆ
dla typów znaków ze znakiem (gchar)
UCHAR
dla typów char bez znaku (guchar)
INT
dla typów liczb całkowitych ze znakiem (gint)
UINT
dla typów liczb całkowitych bez znaku (guint)
DŁUGIE
dla typów liczb całkowitych ze znakiem (glong)
ULONG
dla typów liczb całkowitych długich bez znaku (gulong)
INT64
dla 64-bitowych typów całkowitych ze znakiem (gint64)
UINT64
dla typów liczb całkowitych 64-bitowych bez znaku (guint64)
WYLICZENIE
dla typów wyliczeniowych (gint)
FLAGI
dla typów wyliczeniowych flag (guint)
FLOAT
dla typów float pojedynczej precyzji (gfloat)
PODWÓJNIE
dla typów float o podwójnej precyzji (gdouble)
STRING
dla typów ciągów (gchar*)
W PUDEŁKU
dla typów pudełkowych (anonimowych, ale zliczanych referencyjnie) (GBoxed*)
PARAM
dla GParamSpec lub typów pochodnych (GParamSpec*)
WSKAŹNIK
dla anonimowych typów wskaźników (gpointer)
OBIEKT
dla obiektów GObject lub typów pochodnych (GObject*)
WARIANT
dla typów GVariant (GVariant*)
BRAK
przestarzały alias dla UNIEWAŻNIĆ
BOOL
przestarzały alias dla BOOLEAN
OPCJE
--nagłówek
Wygeneruj zawartość pliku nagłówkowego marszałków.
--ciało
Wygeneruj zawartość pliku kodu C dla marszałków.
--prefiks=PREFIKSÓW
Określ prefiks marhaller. Domyślny prefiks to `g_cclosure_marshal'.
--pomiń-źródło
Pomiń uwagi dotyczące lokalizacji źródła w generowanych komentarzach.
--stdinc
Użyj standardowych marszałków biblioteki GObject i dołącz do nich plik gmarshal.h
wygenerowane pliki nagłówkowe.
--nostdinc
Nie używaj standardowych marszałków biblioteki GObject i pomiń gmarshal.h
Dyrektywa include w generowanych plikach nagłówkowych.
--wewnętrzny
Oznacz wygenerowane funkcje jako wewnętrzne, używając G_GNUC_INTERNAL.
--marszałkowie-valist
Generuj marszałków valist do użycia z g_signal_set_va_marshaller().
-v, --wersja
Wydrukuj informacje o wersji.
--g-fatal-ostrzeżenia
Ostrzeżenia należy ustawić jako krytyczne, tzn. należy natychmiast wyjść po ich wystąpieniu.
-h, --help
Wydrukuj krótką pomoc i wyjdź.
-v, --wersja
Wydrukuj wersję i wyjdź.
PRZYKŁAD
Aby wygenerować marszałków dla następujących funkcji wywołania zwrotnego:
void foo (dane gpointer1,
dane gpointer2);
pusty pasek (dane gpointer1,
gint param1,
dane gpointer2);
gfloat baz (dane gpointer1,
gboolean parametr1,
usuń param2,
dane gpointer2);
Plik marhaller.list musi wyglądać następująco:
UNIEWAŻNIJ:UNIEWAŻNIJ
PUSTA:INT
FLOAT: BOOLEAN, UCHAR
i nazywasz glib-genmarshal w ten sposób:
glib-genmarshal --header marshaller.list > marshaller.h
glib-genmarshal --body marshaller.list > marshaller.c
Wygenerowane marshallery mają argumenty zakodowane w nazwie swojej funkcji. W tym celu
konkretna lista, są to
g_cclosure_user_marshal_VOID__VOID(),
g_cclosure_user_marshal_VOID__INT(),
g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR().
Można ich używać bezpośrednio do GClosures lub przekazywać jako GSignalCMarshaller
c_marshaller; argument przy tworzeniu sygnałów:
Zamknięcie okna *cc_foo, *cc_bar, *cc_baz;
cc_foo = g_cclosure_new (NULL, foo, NULL);
g_closure_set_marshal (cc_foo, g_cclosure_user_marshal_VOID__VOID);
cc_bar = g_cclosure_new (NULL, bar, NULL);
g_closure_set_marshal (cc_bar, g_cclosure_user_marshal_VOID__INT);
cc_baz = g_cclosure_new (NULL, baz, NULL);
g_closure_set_marshal (cc_baz, g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR);
Użyj glib-genmarshal online korzystając z usług onworks.net
