Re: Object-oriented preprocessor
- Posted by jmduro in August
- 1945 views
There is always a class-like method here: http://jean-marc.duro.pagesperso-orange.fr/non-oop_demo.zip
include std/datetime.e include std/console.e include classes.e ------------------------------------------------------------------------------ function get_years(atom secs) atom days = floor(secs/86400) return floor(days/365.25) end function ------------------------------------------------------------------------------ function describe(integer entityID, sequence params) atom secs = diff(getProperty(entityID, "birth_date"), now()) printf(1, "\nHello! I speak %s.\n", {getProperty(entityID, "mother_tongue")}) if length(params) then printf(1, "I am %d years old. I was born in %s (%s).\n", {get_years(secs), getProperty(entityID, "birth_place"), params[1]}) else printf(1, "I am %d years old. I was born in %s.\n", {get_years(secs), getProperty(entityID, "birth_place")}) end if return 0 end function ------------------------------------------------------------------------------ procedure main(sequence cmd) object void integer TPerson = class("TPerson") addProperty(TPerson, "birth_date", now()) addProperty(TPerson, "birth_place", "") addProperty(TPerson, "mother_tongue", "") addMethod(TPerson, "describe", routine_id("describe")) integer englishman = classes:new(TPerson) setProperty(englishman, "birth_date", datetime:new(2010, 5, 14)) setProperty(englishman, "birth_place", "Liverpool") setProperty(englishman, "mother_tongue", "english") integer frenchman = classes:new(TPerson) setProperty(frenchman, "birth_date", datetime:new(1960, 8, 10)) setProperty(frenchman, "birth_place", "Thionville") setProperty(frenchman, "mother_tongue", "french") integer german = classes:new(TPerson) setProperty(german, "birth_date", datetime:new(1993, 2, 23)) setProperty(german, "birth_place", "Munich") setProperty(german, "mother_tongue", "german") void = callMethod(englishman, "describe", {"Merseyside"}) void = callMethod(frenchman, "describe", {"Lorraine"}) void = callMethod(german, "describe", {"Bavaria"}) end procedure -- main ------------------------------------------------------------------------------ -- Main main(command_line()) maybe_any_key()
Do you mean something else ?
Jean-Marc