IntroductionDownloadTutorial DocumentationChangelogContact

xPP C++ Metaprocessor



Changelog



v0.3.8

- Dropped the Ode legacy: changed <Ode:*> into <XPP:*>, changed *.ohst into *.xpst, changed *.oht into *.xpt,
  changed *.oth into *.xph, changed *.odst into *.xpdt. (Ode, when you come back to life, you'll just use xpp
  externally...)
- Added an error message when a factory isn't found
- Added -stdin and -file, to give some custom template to process
- Added -filelist:filename.txt to output the list files generated by xpp
- Added -templatedir:path to add a custom template directory to the search list
- Released the source code, yay!

v0.3.7

- Added ActiveX plugin templates (OleControl/OleControlModule)
- Extended XPCom template to support mozilla plugin exposure
- Extended XPCom template to support javascript exposure
- Added Mozilla plugin template (npMozilla)
- Fixed <include file="somefile.oth"/>
- Added std.oth (for common tasks) and translation.oth (generic in/out parameter translations procedures)
- Added support for factory="$variable" in <classdecl/>
- Added commandline parameter /d:var1=value,var2=value,... to define variables
- Added support for xhd_factory="$variable" in xhd files, no longer saves the variable content back in xhd
- Added <break/> and <continue/> (optional param objects="$context" to break/continue thru several foreach levels)
- Fixed embedded <call/>'s
- Fixed how xpp would stop preprocessing a file after processing it successfully once if that file was originally read-only
  (ie, sourcecontrolled) due to the .old version becoming read-only after the first pass.
  now ignores read-only flag on .old files
- Improved parse error messages, now in standard output using VC-style formatting, no longer continues to parse
- Improved progress bar a bit, made it larger, too
- Fixed various indentation bugs when going accross procedures
- Added <t t="$text"/> to output the result of a parameter-formatted string
- Added '.' as concatenating separator when used after a variable, use it twice if you need to output a
  single dot, ie: $a..$b gives "'content of a'.'content of b'", but $a.$b gives "'content of a''content of b'"
- Added impl param on map entries to specify the implementation version of a type mapping, use <map ... impl="1"/>
  to retrieve
- Added <foreach objects="mapentries" map="mapid"/> and <mapentry/> with data "from" and "to" and "impl"
- Added <Year/>, <Month/>, <MonthName/>, <MonthDay/>, <WeekDay/>, <Hour/>, <Minute/> and <Second/>
- Added default="something" on <pget/> to return a default string if one is not set. added setdefault="1" to force setting
  that default value in the xhd if no value exists yet (ie, so as to not need to test the result and use <pset/> if it's
  the default string).
- Changed backslashes into slashes in #included files for max compatibility
- Added ismacro="0/1" to <typecast/>, added <cast from="a" to="b" test="ismacro"/> which returns 0 or 1 depending
  on wether the cast string from a to b has been marked as being a macro or not. typically macro casts pass the name
  of the variable to cast as the first parameter to the macro so that the macro can declare a variable##id on the stack.
  non macro casts (function casts) pass the in andout variables as before.
- added <error/> and <warning/> with params text, code, file, line. If file and line are not specified, the template's file
  and line are used
- added <method data="sourceline"/> and <data data="sourceline"/> to retrieve the source code line number of a
  method or a member data


v0.3.6

- cosmetic updates

v0.3.5

- Added support for /o:outputdir, which adds an output directory between the project path and the generated files path.
- Added <guid id=”someid”/> and <cguid id=”someid”/> to create and save a guid other than the class or class layer guids
- Added flat=”1” for cguid functions, to not use { or }
- Added HIDE passive macro for methods, hides the methods from the method enumerator unless all=”1” is used
- Added “voidparam” type flag for methods to test if they are parameterless
- Added <inc id=”varid”/> and <dec id=”varid”/> to increment and decrement a numerical value in a var
- Fixed a bunch of bugs

v0.3.4

- Added xhd parameter templatename_depth (ie, XPCOM_depth="1") to tell it to grab functions from ancestors down to a
  specific depth (0 = only this class). Use inherit=”ClassName” with an instrumented class for this to work.

v0.3.3

- Fixed problems finding xpp file when using ..\
- Fixed multiple relative pathname chains
- Fixed saving of template params in xml without encoding <>

v0.3.2

- Changed from using xml param to indicate inheritance scope to simple inherit=”private Ancestor1;protected Ancestor2”.

v0.3.1

- Everything is new as far as you're concerned :-)