Skocz do zawartości

Slap


Compi

Rekomendowane odpowiedzi

A jak poszło z .NET'ową libką?

Działa czy coś nie tak?

Nie tak jest to, że export musi stdcall. Jeśli masz czas, to przekompiluj to, bo jest problem z wywołaniem dlla w Slapie.

Oczywiście dziękuję.

 

Od teraz do zmiennej można przypisywać funkcje:

 

GML
var $x

def (magia);

$magia:="To czary";

return

 

$x:=call magia();

%echo $x

 

Slap wyświetli: To czary

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 69
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Ostatnia prośba :]

 

GML
EXPORT int CALLING_CONVENTION AddStringArgument(char* value);//System.String

EXPORT int CALLING_CONVENTION AddCharArgument(char value);//System.SByte

EXPORT int CALLING_CONVENTION AddUCharArgument(unsigned char value);//System.Byte

EXPORT int CALLING_CONVENTION AddDoubleArgument(double value);//System.Double

EXPORT int CALLING_CONVENTION AddFloatArgument(float value);//System.Float

EXPORT int CALLING_CONVENTION AddIntArgument(int value);//System.Int32

EXPORT int CALLING_CONVENTION AddUIntArgument(unsigned int value);//System.UInt32

EXPORT int CALLING_CONVENTION AddShortArgument(short value);//System.Int16

EXPORT int CALLING_CONVENTION AddUShortArgument(unsigned short value);//System.UInt16

EXPORT int CALLING_CONVENTION AddLongArgument(long value);//System.Int64

EXPORT int CALLING_CONVENTION AddULongArgument(unsigned long value);//System.UInt64

EXPORT int CALLING_CONVENTION AddLPVOIDArgument(LPVOID value);//System.IntPtr</span></span>

 

Bardzo by mi ułatwiło życie, gdyby argumenty tych funkcji były char*

Ja nie mam kompilatora na kompie, a w slapie jest jeden typ zmiennych, właśnie string.

Można też używać int, ale trzeba przerobić zmienną przez __INT@@

 

@EDIT

 

Jeśli można, to żeby InvokeMethod w każdym przypadku zwracało char*

Jeszcze raz dziękuję :]

Odnośnik do komentarza
Udostępnij na innych stronach

Mogę zrobić, ale czy nie lepsza by była konwersja po stronie Slapa?

 

@EDIT Funkcje LoadDll, CreateObject, RemoveObject, Add***Argument też mają zwracać char* czy zostawić int?

 

char*

 

Dziwnie eksportuje twój kompilator, zamiast LoadDll muszę importować _LoadDll@4

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra, to zostawię obecne funkcje i zrobię aliasy z dopiskiem AsCharPtr które konwertują każdy typ.

Nie wiem co może być przyczyną, że musisz coś tam dopisywać. Mi normalnie się importuje przez P/Invoke z C#.

 

@EDIT Proszę https://gmclan.org/up8194_3_DotNetSlapCross...1_0_fixed2.html. Wszystkie funkcje z dopiskiem AsCharPtr przyjmują i zwracają char* oprócz funkcji związanych ze wskaźnikami (LPVOID).

Pamiętaj, że to wszystko odbywa się kosztem wydajności.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki Utermiko, Slap został wzbogacony o obsługe bibliotek z .Net Frameworka.

 

Przykładzik:

GML
%import dotnet%

 

def (entry);

call LoadDll("C:\\net.dll",);

call ClearArguments();

call AddDoubleArgument(6,);

call AddStringArgument(moja wiadomosc,);

call CreateObject($LoadDll,"ManagedDllTest.TestClass",);

call ClearArguments();

call InvokeStringMethod($CreateObject,MessageBoxNoParametr,);

 

 

@EDIT:

 

Slap jest już w stanie osiągnąć prędkość 2000 kroków na sekundę.

Sukces!

Odnośnik do komentarza
Udostępnij na innych stronach

  • 8 miesięcy temu...

Panowie, sorry za odkop. Od kilku dni pracuję nad nową wersją języka. Już wszystko nie będzie stringiem. Staram się zachować zbieżność zmiennych z tymi natywnymi znanymi z C bądź Pascala. Wszystko jest w fazie wczesnego rozwoju, ale już wspiera całe Windows API dzięki asemblerowym wstawkom w kodzie maszyny wirtualnej.

 

Dzięki doświadczeniom z pisania Slapa, kod jest bezpieczniejszy oraz uniknąłem wielu błędów, których naprawa później byłaby praktycznie niemożliwa.

Kod nowego, świeżego języka istnieje już dwa dni i póki ma do zaoferowania

Wszelkie rodzaje zmiennych i wskaźników (prócz floatów, pracuje nad niskopoziomową implementacją FPU)

Wszelkie rodzaje wywołań funkcji

Wymiana stringów między bibliotekami bez potrzeby używania dodatkowych bibliotek (typu ShareMem, dynlibs)

Oraz (nie pamiętam jak się nazywało takie typowanie) każda zmienna może zmienić swój typ podczas wykonywania programu (wspaniała usługa alokacji i wskaźników bez obciążania prawdziwego bufora zmiennych)

 

Na razie nie ma co pokazywać, bo w sumie translator obsługuje kilka słów, a bytecode nie jest niczym do chwalenia.

Do zrobienia zostało:

Wszelkiego typu iteracje (no problemo)

Tablice srablice (te no problemo)

Klasy i obiekty (no tu jest problem bo nie uczą tego nigdzie i trzeba ładnie to zrobić)

Kompilacja do wolnostojącego exe (no problemo)

Obsługę błędów kompilacji (problemo)

Ładne IDE (problemo)

i coś jeszcze tam...

Macie może jakiś pomysł na nazwę?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 miesięcy temu...

GML
#import main.tpz

 

proc main(1);

 

array tab[10000];int $cc;

$cc="%i ";

main.arg0 = 0;

while main.arg0 == 9999

 

tab[main.arg0] = main.arg0;

printf($cc,tab[main.arg0]);

main.arg0=eval(main.arg0+1);

 

endwhile

 

 

 

printf($cc,tab[56]);

 

end

 

Obsluguje całe C standard library i portuje jeszcze Delphi stdlib

 

Nie wiem jak obiektowosc dodac :$

Odnośnik do komentarza
Udostępnij na innych stronach

GML
#import main.tpz

 

class string;

_self.init(0);

 

 

proc _self.puts(0);

puts(_self);

 

end

 

proc _self.init(0)

int _self;

_self=" ";

 

endclass;

 

proc main(0);

 

object $i:string;

object $i2:string;

$i="Jestem obiektem!;)";

$i2="Jestem obiektem! nr.2;)";

 

$i.puts(0);

$i2.puts(0);

 

pause(0);

Udalo mi sie wkoncu dodac klasy, gdzie obiekty są jednoczesnie wartosciami.

btw. Nadal nie mam nazwy :/ Jakies pomysły?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...