Well, here are some ideas I've had for the RTL so far.
STDIO.LOL
HAI LIBRARY SO IM LIKE GIMMEH GIVING BACK RESULT ^^ This function returns a result. ^^ Results can be used as follows: ^^ 1) Discard the result. ^^ GIMMEH ^^ 2) Store the result on left hand side. ^^ I HAS A VAR IZ GIMMEH ^^ 3) Store the result on right hand side. ^^ GIMMEH VAR SKELETON SO IM LIKE TXT GIVING BACK RESULT ^^ ME A could possibly be considered whitespace: ^^ TXT ME A VAR RESULT IZ GIMMEH KTHX SO IM LIKE LOL WITH JK ^^ Appends new line only if JK has a ! on the end. ^^ Final ! is not printed. ^^ LOL "My text."! SKELETON SO IM LIKE VISIBLE WITH USERINFO ^^ Always appends new line. LOL USERINFO! KTHX SO IM LIKE BTW WITH DEBUGINFO ^^ Always appends new line. SKELETON L8R LIBRARY
SYSTEM.LOL
HAI LIBRARY ^^ System.lol is included in every program. SO IM LIKE HALP WITH EXCEPTIONINFO ^^ HALP raises an exception. There is no other way ^^ to raise an exception. SKELETON L8R LIBRARY
FILEZORZ.LOL
HAI LIBRARY ALL UR BASE R BELONG 2 FILE ^^ Class definition. ^^ The following fields and methods belong to the FILE class: SO IM LIKE OPEN WITH FILENAME GIVING BACK RESULT SKELETON SO IM LIKE CREATE WITH FILENAME GIVING BACK RESULT SKELETON ^^ Constructor SKELETONs to be inserted by compiler. ^^ SO IM LIKE KILL YOURSELF ^^ SKELETON ^^ All objects have destructors. No need to specify one here. ^^ (Thats why it's commented out.) ^^ They all look the same, and the compiler will add this one in. KTHX L8R LIBRARY
PARALLEL.LOL
HAI LIBRARY ^^ Library name will be the file name. E.g. PARALLEL.LOL ^^ This PARALLEL library is actually implemented by the compiler. ^^ Only the method definitions "SKELETONs" are here to help IDE's etc. SO WHOZ LIKE SLEEPIN WITH MAXSECONDS GIVING BACK RESULT ^^ Notice the WHOZ instead of IM. WHOZ means that you must insert a subject ^^ before calling this function. e.g. IZ I SLEEPIN 10 O RLY? ^^ Where I is the subject. ^^ "I" or "IM" mean the current thread. ^^ Alternatively, IZ MYNETWORKSOCKETREADER SLEEPIN 10 O RLY? ^^ Also, IM SLEEPIN 10 ^^ Also, I IZ SLEEPIN 10, the IZ here would be ignored. ^^ SLEEPIN is a low level function to *wait* for an event. ^^ Waits up to a maximum of MAXSECONDS seconds. When MAXSECONDS is 0.5, that ^^ would mean half a second. ^^ Returns *before* MAXSECONDS has elapsed with NO WAI if an event was found. ^^ So basically it returns immediately as soon as an event is found. ^^ Returns YA RLY after MAXSECONDS seconds if *no* events were found. ^^ Consider the FOREVER constant for MAXSECONDS. SKELETON SO WHOZ LIKE ONEEVENT GIVING BACK RESULT ^^ ONEEVENT is a low level function to *process* an event if one is available. ^^ ONEEVENT returns one of the following: ^^ 0 If the thread *should* terminate as soon as possible. ^^ 1 If there were no events available to process. ^^ 2 If it processed an event. SKELETON L8R LIBRARY
EVENTUTILS.LOL
HAI LIBRARY ^^ Library name will be the file name. E.g. EVENTUTILS.LOL CAN HAS PARALLEL? ^^ Low-level threading-related functions e.g. ONEEVENT and SLEEPIN. SO WHOZ LIKE EVENTS GIVING BACK RESULT ^^ WHOZ parameter is accessed using SUBJECTZ. ^^ Function EVENTS processes all pending events, returns NO WAI if ^^ the subject *should* terminate as soon as possible. Otherwise ^^ returns YA RLY if it should carry on. IM IN YR LOOP WTF IZ SUBJECTZ ONEEVENT? OMG 0 RESULT IZ NO WAI ^^ Setting result causes function exit. OMG 1 RESULT IZ YA RLY ^^ Setting result causes function exit. OMG 2 ^^ Processed an event, just carry on. 0WND WTF! HALP "Unexpected code flow." KTHX IM OUTTA YR LOOP HALP "Unexpected code flow." ^^ Should turn that "Unexpected code flow." into a function.. KTHX SO WHOZ LIKE BLOCKEVENT GIVING BACK RESULT ^^ Function BLOCKEVENT processes one event. If an event is not available. ^^ then it will wait for one to be available. ^^ Returns NO WAI if ^^ the subject *should* terminate as soon as possible. Otherwise ^^ returns YA RLY if it should carry on. IZ SUBJECTZ SLEEPIN FOREVER O RLY? YA RLY HALP "Unexpected code flow." ^^ How can it have successfully finished sleeping forever? NO WAI ^^ Sleep was interrupted by an event. WTF IZ SUBJECTZ ONEEVENT? OMG 0 RESULT IZ NO WAI OMG 2 RESULT IZ YA RLY WTF! ^^ And yes, OMG 1 is meant to not be there. HALP "Unexpected code flow." KTHX KTHX KTHX SO WHOZ LIKE RUNNIN ^^ Function RUNNIN is a utility for event based applications. ^^ It returns when the application is complete. IM IN YR LOOP IZ SUBJECTZ BLOCKEVENT O RLY? YA RLY ^^ Thread can carry on. NO WAI ^^ Thread must end soon. BECOME AN HERO ^^ *LOOP* break. KTHX IM OUTTA YR LOOP KTHX L8R LIBRARY
FORMS.LOL
HAI LIBRARY ALL UR BASE R BELONG 2 COMPONENT KTHX ALL UR BASE R BELONG 2 BUTTON TEH MUTANT COMPONENT ^^ Class name is BUTTON, inherits from COMPONENT. I HAS A CLICKIN IZ WHOZ ^^ Field CLICKIN contains a pointer to a method. ^^ WHOZ means a METHOD that has a WHOZ e.g. ^^ SO WHOZ LIKE MYMETHOD ^^ SUBJECTZ THEFIELD IZ "THEVALUE" ^^ KTHX ^^ However the following would be incompatible: ^^ SO WHOZ LIKE MYMETHOD WITH VAR ^^ KTHX ^^ Because the parameter signatures differ. ^^ To make this work, the declaration would have to be: ^^ I HAS A CLICKIN IZ WHOZ WITH VAR ^^ Imagine writing a compiler to handle that lol. KTHX ALL UR BASE R BELONG 2 FORM SO IM LIKE MAKE WITH MAH COMPONENTS BUKKIT GIVING BACK RESULT ^^ Components is array of buttons/edits etc. to place on the form. ^^ If any of the components IZ NOTHING, then that component will be ^^ created with a generic mutatable component class, and then mutated ^^ when its events are set. SKELETON ^^ Constructor. KTHX L8R LIBRARY
EVENTTEST.LOL
HAI CAN HAS PARALLEL? CAN HAS EVENTUTILS? CAN HAS FORMS? SO WHOZ LIKE CLICKEVENT SUBJECTZ CAPTION IZ "Here" ^^ Change the button's caption. ^^ The button is passed through WHOZ into SUBJECTZ. ^^ SUBJECTZ is the button. SLEEPIN 1 SUBJECTZ CAPTION IZ "Gone" KTHX ^^ Declare some events PLZ MAKE FORM WITH BUTTON? ^^ Create a form with a button and show it ^^ BUTTON is the variable name, NOT the class name. ^^ Class is detected automatically by the event assignment below. ^^ A variable with only "CLICKIN" assigned will obviously be a button. ^^ While a variable with only "TEXTIN" will obviously be an edit. ^^ (one line text box) AWSUM THX ^^ Successfully created the form. BUTTON IZ CLICKIN MAH CLICKEVENT ^^ Assign the event for use. I IZ RUNNIN ^^ Allow the user to click the button, or close the form. ^^ Please note that form events are redirected to the ^^ current thread's event queue, which is why its ^^ "I" IZ RUNNIN and not "FORM" IZ RUNNIN KTHX ^^ Clean up the form and its contents. KTHXBYE
-skiy
Lots of good stuff here, but not all of it is v1.0 compliant. First of, to access a function within an object within an object you would say
object1 IN UR object2 function BTW Example IZ object 1 IN UR object2 SLEEPING 10 ?
This means that you don't actually have to specify that a function needs to be within an object.
Second, I like SKELETON (Interface, right?) and MUTANT (extends?). Great ideas.
There is an example of how events could be handled (caturday), this could be implemented into your libraries. — Marius, 2007/05/31 10:24