Komentowana treść: LibMaker 0.11
[#1] Re: LibMaker 0.11
"nudne narzędzie" Dziękuję za wykonana pracę.
[#2] Re: LibMaker 0.11
Wbrew pozorom... bardzo przydatne! Bo zawsze jak się robi librarkę to trzeba to wszystko zrobić to "z łapy", albo skopiować szkielet z jakiejś innej librarki, którą już się kiedyś zrobiło i zmieniać.
[#3] Re: LibMaker 0.11
Przydatne "nudne" narzędzie.
To może jeszcze jakieś inne "nudne" narzędzia ? :D
[#4] Re: LibMaker 0.11

@strim_, post #2

@strim_: Też mnie to zawsze denerwowało... Stąd program

@wszyscy: Tygrys mi jeszcze podsunął myśl, żeby zrobić generator (skrypt) do bibliotek linkowanych statycznie, ot generator plików z funkcjami i makefile. A przy okazji, uprzedzając pytanie, dlaczego program jest tylko na MorphOS-a, skoro generuje i dla AmigaOS 3 (a wkrótce i 4). LibMaker korzysta z Lua jako biblioteki (lua.library). Gdyby ktoś chciał przeportować, powinien zlinkować z Lua statycznie i myślę, że zadziała.
[#5] Re: LibMaker 0.11

@Krashan, post #4

Generator klas mui na pewno się też przyda...
[#6] Re: LibMaker 0.11

@MaaG^dA, post #5

Tak, w programie jest nawet taki checkmark i przycisk "MUI Class", tyle że jeszcze nieaktywny. Ale w kodzie i skryptach poczynionych jest szereg kroków w tym kierunku. Na razie jednak muszę rozwiązać problem wieszania się wygenerowanego i skompilowanego kodu pod AmigaOS 4. Sęk w tym, że w naszym kraju nie ma z kim tego przedyskutować, no ale ostatecznie uderzę za granicę.
[#7] Re: LibMaker 0.11

@Krashan, post #6

A planujesz wersję na arosa?
[#8] Re: LibMaker 0.11
super ze cos takiego w koncu jest, nie sadze zeby akurat mnie sie wkrotce przydalo, ale dzieki krashan!

Ostatnia aktualizacja: 21.10.2014 23:00:30 przez wawrzon
[#9] Re: LibMaker 0.11

@tygrysekHD, post #7

A planujesz wersję na arosa?

Osobiście nie. Dlaczego? LibMaker do generowania kodu wywołuje skrypty w Lua. W MorphOS-ie interpreter Lua jest biblioteką (lua.library). O ile mi wiadomo, podobnego rozwiązania nie ma w innych systemach amigowych. Port na AROS-a wymagałby zatem przeróbki programu w taki sposób, żeby to działało ze statycznie zlinkowanym interpreterem. To nie jest bardzo trudne, ale też nie trywialne. Lua.library ma praktycznie tożsame API z "C API" oryginalnego języka Lua. Biorąc pod uwagę, że
a) nie dysponuję nadmiarem wolnego czasu,
b) nie mam żadnego kompa z AROS-em,
c) kod źródłówy udostępniłem na licencji BSD,
wychodzę z założenia, że jeżeli użytkownicy AROS-a uznają LibMakera za użyteczny, wykonają port sami. Podobną odpowiedź dać mogę w temacie portu na AmigaOS 3 i AmigaOS 4.
[#10] Re: LibMaker 0.11
Nigdy systemowej biblioteki dla amigowych systemów nie robiłem więc nie wiem jakie niezbędne elementy musi jej kod zawierać i czy są one nudne albo trudne w implementacji. Ale jako osoba, która ciągle planuje zacząć się uczyć czystego amigowego kodowania, takie narzędzie przyjmuję z wielką radością. Niech żyje Krashan i jego toole! :)
[#11] Re: LibMaker 0.11

@MDW, post #10

Spróbuj zrobić LibMakerem pustą bibliotekę z jakąś jedną funkcją, powiedzmy "void Foo(void)" i wygeneruj kod. Zobaczysz ile klepania odwali za Ciebie LibMaker. Klepania zupełnie bezmyślnego (skoro mógł je wykonać program...). A tak przy okazji - planuję artykuł do papierowego PPA o robieniu bibliotek LibMakerem i ich wykorzystaniu do różnych ciekawych celów, np. jako wtyczki do programu, czy poziomy do gry. Dzięki użyciu LibMakera w artykule prawie nie będzie listingów z kodem .

Ostatnia aktualizacja: 22.10.2014 19:57:27 przez Krashan
[#12] Re: LibMaker 0.11

@Krashan, post #11

Czyli gdybym chciał zrobić bibliotekę do obsługi np. joya w grze to jak najbardziej ? Sorki za pytanie i czekam na artka.
[#13] Re: LibMaker 0.11

@Ender, post #12

Do obsługi joya w grze masz gotową, lowlevel.library w MorphOS-ie z tego co kojarzę. Miałem na myśli coś innego. Np. piszesz przygodówkę i są tam jakieś lokacje. Wtedy możesz każdą lokację umieścić w bibliotece. Co to daje? System sam zadba o gospodarowanie pamięcią. Jeżeli ktoś ma mało RAM-u to system będzie nieużywane w danym momencie lokacje usuwał z pamięci, a po powrocie do nich ładował je z dysku. Jeżeli ktoś ma dużo pamięci, to te lokacje w postaci bibliotek pozostaną w pamięci (dopóki będzie zapas wolnej) i będa przy powrocie otwierane błyskawicznie. Jeżeli zaś np. któraś z nich będzie szczególnie duża, to system wyrzuci z pamięci wszystkie nieużywane i załaduje ją. To wszystko bez żadnego wysiłku ze strony programisty. Podobnie np. z wtyczkami do programu graficznego. Nigdy nie używamy wszystkich w tym samym momencie, robienie ich jako bibliotek z jednej strony umożliwi pracę przy małej ilości pamięci, z drugiej strony uczyni ją bardziej komfortową przy ilości dużej. Wszędzie tam, gdzie program można podzielić na [niejednocześnie używane] moduły, można i warto to zrobić za pomocą bibliotek. Tym bardziej, że ponieważ mechanizm bibliotek istnieje w AmigaOS i pochodnych od wersji 1.0, oraz "wszystko" go używa, to został znakomicie przetestowany.
[#14] Re: LibMaker 0.11

@Krashan, post #13

Przypomina to hunki typu overlay, przynajmniej tak mi się to kojarzy.
[#15] Re: LibMaker 0.11

@Krashan, post #13

Ciekawe podejscie tylko na ile moze sprawdzic w grach to trudno ocenic, bo to chyba zalezy od rodzaju gry. Tak czy owak jakis inteligentny generator makefile moglby sie przydac
[#16] Re: LibMaker 0.11

@Krashan, post #13

Czy można by było użyć LibMakera do przechowywania na górze ekranu przedmiotów w grze przygodowej? Chciałbym przekonwertować na Amigę flashową grę Covert Front (film). Obrazki z lokacjami połączyłbym na programie Scala czy Hollywood. Przemieszczanie po lokacjach odbywałoby się po kliknięciu na przyciski ze strzałkami, które byłyby na ekranie. Problem jest taki, że nie wiem jak napisać kod aby po kliknięciu na dany przedmiot np. klucz pojawiałby się od razu na górze ekranu oraz aby można było przeciągnąć ten klucz w dany obszar obrazka aby otworzyły się drzwi. Czy w tym przypadku można użyć LibMakera oraz czy taki efekt można osiągnąć na Scali?
[#17] Re: LibMaker 0.11

@Leon, post #16

LibMaker nie jest jakimś cudem rozwiązującym problem "nie wiem jak napisać kod", niestety. On tylko zwalnia programistę od potrzeby pisania tak zwanych stałych części kodu, które we wszystkich bibliotekach są powtarzalne i nie wymagają większego wysłku umysłowego od programisty. Jeżeli ktoś programuje w jakimś zaawansowanym IDE na systemy mainstreamowe, może nawet nie być świadomy istnienia takich części stałych, bo IDE generuje je za niego. LibMaker jest małym kroczkiem w tym właśnie kierunku, ale nie będzie nigdy programem do "wyklikiwania" gier.
[#18] Re: LibMaker 0.11

@Krashan, post #17

To jeszcze ja łapkę do góry :) Jak mam bibliotekę wygenerowaną przez GNU libtool, to można wygenerować z tego *.library czy "Wyższa Szkoła Jazdy" ?

Ostatnia aktualizacja: 23.10.2014 12:09:22 przez ede
[#19] Re: LibMaker 0.11

@ede, post #18

Ale libtool nie generuje niczego, tylko wspomaga proces budowania i ułatwia portowanie poprzez ukrywanie pewnych szczegółów implementacyjnych systemu operacyjnego za swoim API.
[#20] Re: LibMaker 0.11

@strim_, post #19

Ok. Kompilator generuje, libtool wspomaga. To jak juz mam lib.a z jakims tam API to da sie zrobic z tego biblioteke systemowa ?


Ps. Zdaje sobie sprawe, ze to pytania troche z kosmosu, ale tak sie zastanawiam czy i jak oderwac sie od ixemul. Zamiast ladowac za kazdym razem caly program (pod ixemul) czy nie daloby sie z liba z funkcjami zrobic normalnej biblioteki systemowej i juz po bozemu korzystac.

Ostatnia aktualizacja: 23.10.2014 14:32:49 przez ede
[#21] Re: LibMaker 0.11

@ede, post #20

Biblioteka powinna być reużywalna w innych programach, ewentualnie być "pluginem". Najsensowniej przerabiac biblioteki usuwając z niej wszystkie zmienne globalne (wrzucając to do struktury z kontekstem) i usuwając operacja dyskowe zastępując je amigowymi odpowiednikami. Idąc dalej, można zawsze się zastanowić jaką amigową technologie mozna wykorzystać do API (np. Tagi, SetVary, Iffy)

Aha, mnogość bibliotek #?.library wzgledem OS4 jest powodem dla ktorego preferuje MorphOSa.

Ostatnia aktualizacja: 23.10.2014 16:15:50 przez michal_zukowski
[#22] Re: LibMaker 0.11

@michal_zukowski, post #21

Jak już jesteśmy przy AmigaOS 4, to śpieszę zawiadomić, że problem wieszania się jest rozwiązany i LibMaker generuje szkielety bibliotek #?.library również dla tego systemu. Wersja 1.0 niebawem.
[#23] Re: LibMaker 0.11

@ede, post #20

Ogólnie zrobienie #?.library z biblioteki statycznej *.a nie jest specjalnie trudne. Na przykład biblioteka digibooster3.library, którą już wkrótce wydam, jest wprost zrobiona z libdigibooster3.a skompilowanej ze źródeł na GitHubie. Zrobiona tak, że funkcje biblioteki współdzielonej jeden do jednego są zmapowane na funkcje biblioteki statycznej. Oczywiście jest to takie proste dlatego, że libdigibooster3 była projektowana i implementowana z myślą o takim między innymi zastosowaniu. W praktyce, jeżeli biblioteka statyczna była pisana tylko pod systemy uniksowe, jest trudniej, bo możemy się natknąć na:

1. Zmienne globalne - trzeba je przenieść do bazy bibllioteki.
2. Używanie funkcji biblioteki standardowej C, zwłaszcza tych wymagających konstruktorów i destruktorów.
3. Wielowątkowość, czy to przy pomocy fork(), czy phtreads czy innych rozwiązań.
4. Funkcje stosu TCP/IP.
5. Dziwaczne API.
6. Używanie innych bibliotek uważanych w systemach uniksowych za standard.

W zależności od tego wszystkiego możemy mieć do czynienia z przypadkami od łatwych (np. Lua czy FreeType) do beznadziejnych.
[#24] Re: LibMaker 0.11

@Krashan, post #23

W pewnym stopniu rozwialiście moje wątpliwości, za co dziękuję. :)
Przypadek o którym myślałem (Imagemagick) jak mi się wydaje do tych łatwiejszych nie należy. Także tutaj pozostanę przy linkowaniu statycznym. Praktycznie każdy z wymienionych punktów może być problematyczny dla mnie, z różnych względów (np. obszerność projektu Imagemagick, ale nie tylko) no może poza 1,3 i 4. Trójkę można wykluczyć na poziomie configuracji źródeł.
Co do punktu 6, zauważyłem że bez wszystkich pakietów które były potrzebne do kompilacji IM (z linkowaniem statycznym) sam libMagickCore.a jest bezużyteczny także i tu może być problem.

Tak sobie myślę, że na początek powinienem jakiś swój mały programik umieścić w bibliotece i poużywać funkcji, a ewentualnie potem spróbowć z libdigibooster3.a to może bardziej mi się rozjaśni
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem