[[PageOutline(1-2)]] = Macro Support for Squeak = This project is a framework which provides compile-time macros for Squeak. It is primarily focused on macros that need to generate additional methods or check constraints. It is integrated with !OmniBrowser and Squeak's Debugger. = How to Install = {{{ #!div class="wiki_infotable" style="float:right;" ||'''Environment'''|| || || [[Image(media/icons/custom:squeak_16.png, title="Recommended Squeak Version", nolink, right)]] || 4.1 || || [[Image(media/icons/silk:application_home.png, title="Recommended Squeak VM Version", nolink, right)]] || Any || || [[Image(media/icons/silk:cog.png, title="Recommended Cog VM Version", nolink, right)]] || Any || ||'''Sources'''|| || || [[Image(media/icons/silk:script_gear.png, title="Metacello Configuration", nolink, right)]] || [http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/MetacelloRepository/YourConfiguration YourConfiguration] || || [[Image(media/icons/silk:database.png, title="Repository", nolink, right)]] || ''`url to repository`'' || || [[Image(media/icons/silk:package.png, title="Needed Packages from the Repository", nolink, right)]] || ''`package names`'' || || [[Image(media/icons/silk:bullet_go.png, title="Dependents", nolink, right)]] || ''`dependents`'' || ||'''Misc'''|| || || [[Image(media/icons/silk:world.png, title="Website", nolink, right)]] || [http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/YourProject.html YourProject@SqueakSource] || }}} ''Describe necessary explanations how the Metacello script works if there are any non-default steps involved.'' '' You can also use this space to describe the available packages and categories, e.g.: {{{MyProject-FirstCategory}}} ... Does stuff.[[br]] {{{MyProject-SecondCategory}}} ... Just a testbed.'' {{{ #!div style="clear:both;" }}} = How to Use = To create a macro you have to extend the {{{CTMMacro}}} class. The following methods are called by the system: matchMethodPragma: ''aPragma'':: This should return true if the macro wants to process a method annotated with ''aPragma'' or false otherwise. Additionally the method can be used to store additional information that are found in the pragma, e.g. pragma parameters. matchClassPragma: ''aPragma'':: Same as ''matchMethodPragma:'' but for classes and their pragmas. = How to Extend = ''Internal documentation. Show models, explain the architecture. Do anything that may help a new developer to extend this project.'' = Acknowledgments = [[Image(media/icons/silk:user.png, nolink)]] To date the following contributors: * Michael Grünewald * Stefan Richter