Releases: Loara/lt3rawobjects
New release
Generate new object commands
In this pre-release have been added the \object_*_generate
functions that allows you to introduce variants of already existing commands that can accept object members and constants as their argument. The documentation has been upgraded but further work is needed.
Minimal objects are dropped from 2.3-beta so they're not available in this release.
Minimal objects preview
Hidden fields in standard objects are now arranged inside "hidden" embedded object /_I_/
(its name could change in future releases so your code mustn't rely on it). If you don't want to instantiate these fields you can create minimal objects as explained in official documentation.
These features are in an unstable state and will be more documented once the API stabilize.
Embedded objects and macros
New features has been added to this "minor" update:
macro
elements: a macro is just any untyped control sequence inside an object, you can take its address (aka the control sequence name) with the\object_macro_adr
function and expand/execute it with\object_macro_call.
. Since macros are generic control sequences is up to the user to properly create them (with\def
,\cs_new:Npn
,\newcommand
or any other suitable mechanism);- Embedded objects: You can put objects inside other objects in various ways, in this release you can do that with embedded objects too. The main advantage is that you can put an embedded object declaration inside the proxy with
\proxy_put_embedded
so that every object created by that proxy will have its own instance of embedded object automatically created. You can retrieve address of embedded objects with\object_embedded_adr
function.
Bugfix
Setting members and constants
With this minor update two new functions are added to lt3rawobjects
: \object_member_set
and \object_newconst
. Both accept an additional value
argument that will be placed inside the specified member variable/constant.
Methods and other improvments
With the 2.0
version some backward incompatible changes are added to this new version, in particular the internal organization of objects is adjusted. So objects created with a preceding version of this packages won't work very well with functions and other objects created with version 2.0
of lt3rawobjects
. If after the upgrade you find undocumented issues please open a new issue or tell me more in a new discussion.
In this new version you can define also methods inside your objects. Methods are simply functions bounded to container objects like member variables. Currently methods can be only near constants or remote constants, but in future releases mutable methods may be introduced.
For this reason names of functions working with constant members are changed in order to better distinguish constant members and constant methods, For example inside library functions names keywords nconst
and rconst
are replaced respectively with ncmember
and rcmember
. Other modifications can be found inside the documentation page.
Other functionalities:
- Functions
\object_test_proxy
to test if an object is generated from the specified proxy; - Constant reorganization;
- Documentation improvement.
Update package date
Update the package date. This release is equivalent to 1.1
Constants and Anonymous allocation
- Near and remote constants. A
near constant
is a constant defined directly inside the objects whereas aremote constant
is defined instead in its proxy generator, so it will be available for every generated object. - Anonymous allocation. If you don't want to specify an unique name for each of your generated objects you can perform an anonymous allocation: generate a new object name from the value of an integer variable which value is increased after, very useful if you need to instantiate many objects from the same proxy.
- Some bugfixes.
Renaming package
Rename package from rwobj
to lt3rawobjects
.