Introduction – Download – Tutorial – Documentation – Changelog – Contact
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 :-)