Free Hero Mesh

History of heromesh.h of 1ca3a0329816e7dd
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.

History of file heromesh.h at check-in 1ca3a0329816e7dd

2024-05-11
06:16
Start of implementation of the (Trigger) block (currently only syntax is implemented) to control timing/ordering of some events. file: [da2e133513] check-in: [ee231f02dd] user: user, branch: trunk, size: 10888 [annotate] [blame] [check-ins using] [diff]
2023-10-31
23:36
Make control and middle button to draw lines from clicked location for helping with alignment. file: [85047283e3] check-in: [382666e88a] user: user, branch: trunk, size: 10864 [annotate] [blame] [check-ins using] [diff]
2023-07-15
02:07
Functions to convert between TRON-8 and TRON-32 (may be used in future for the text editor; currently unused, and may be removed if it is found to be unnecessary) file: [99be4437e4] check-in: [198a84f8d8] user: user, branch: trunk, size: 10833 [annotate] [blame] [check-ins using] [diff]
2023-05-12
06:43
Add WARPED message. file: [cca2629b39] check-in: [1ba87a8fa2] user: user, branch: trunk, size: 10739 [annotate] [blame] [check-ins using] [diff]
2023-04-28
18:02
Begin to implement multibyte character codes (it is not enough to be used, so far) file: [cbb8688147] check-in: [9087ab7896] user: user, branch: trunk, size: 10739 [annotate] [blame] [check-ins using] [diff]
2022-10-19
22:28
Implement returning classes/objects from COLLIDEBY message to transform objects. (Not fully tested yet) file: [a48c2379a0] check-in: [60b09ee8e4] user: user, branch: trunk, size: 10663 [annotate] [blame] [check-ins using] [diff]
2022-10-05
23:26
Implement LastR, NextR, ThisR; this is not tested and not fully complete; it will be used in future to implement replacing objects with new ones in COLLIDE and COLLIDEBY messages. file: [3c737c4009] check-in: [1114ae75d5] user: user, branch: trunk, size: 10663 [annotate] [blame] [check-ins using] [diff]
2022-08-11
20:11
Implement level hashes calculation. file: [f41b1c99d8] check-in: [a9af94f292] user: user, branch: trunk, size: 10651 [annotate] [blame] [check-ins using] [diff]
2022-08-10
05:45
Implement CONFIG_NO_STATUS file: [fb2fb6b1fb] check-in: [89cc6486f6] user: user, branch: trunk, size: 10621 [annotate] [blame] [check-ins using] [diff]
2022-07-18
06:38
Implement (partially) comconfig; also add back into game.c the ability to record solution timestamps (that was removed by mistake in the past), and improve documentation about compiling (in README file). file: [8560862773] check-in: [3bac201324] user: user, branch: trunk, size: 10440 [annotate] [blame] [check-ins using] [diff]
2022-07-06
19:36
Implement coordinate input. file: [c5267bcf80] check-in: [87a8bc6a74] user: user, branch: trunk, size: 10396 [annotate] [blame] [check-ins using] [diff]
05:20
Several changes needed to allow coordinate input to be implemented in future (including the CLICK message and InputXY keyword). Also fixes a bug that was caused by changing MoveItem from Uint8 to Uint16. file: [38b9ed2d66] check-in: [156b0a7c35] user: user, branch: trunk, size: 10287 [annotate] [blame] [check-ins using] [diff]
2022-07-04
05:43
Implement crushing (similar to pieces being crushed in ZZT if they cannot be pushed). file: [9d19e813de] check-in: [08e7014805] user: user, branch: trunk, size: 10153 [annotate] [blame] [check-ins using] [diff]
2022-07-02
16:14
Implement -O switch to output private solutions on stdout. file: [73a29c9f38] check-in: [169561bd42] user: user, branch: trunk, size: 10129 [annotate] [blame] [check-ins using] [diff]
2022-07-01
21:09
Change MoveItem to Uint16 and fix the encoders/decoders for future use (only numbers 8 to 255 are currently in use). file: [bd543a863e] check-in: [1aadd6299e] user: user, branch: trunk, size: 10092 [annotate] [blame] [check-ins using] [diff]
2022-06-30
05:46
Implement the .saveSolutions.private option (and the SQL functions to work with it), and remove the unused .allowMouseWarp option. file: [87e56863d6] check-in: [e71ea9875c] user: user, branch: trunk, size: 10091 [annotate] [blame] [check-ins using] [diff]
2022-06-26
04:05
Use the new move list functions in move list import/export functions, and change the type of replay_size from Uint16 to size_t. file: [e542ddb045] check-in: [cafa4fd29b] user: user, branch: trunk, size: 10042 [annotate] [blame] [check-ins using] [diff]
2022-06-22
22:40
Start to implement move list encoding, to be used in future if coordinate input is implemented (and possibly other features that might benefit from this capability). file: [afc1524574] check-in: [77553ee70b] user: user, branch: trunk, size: 10027 [annotate] [blame] [check-ins using] [diff]
2022-03-31
02:12
Implement the ,WinLevel instruction too set the score (currently not used by anything). file: [1eb8371df6] check-in: [1ed0e6ebf4] user: user, branch: trunk, size: 9828 [annotate] [blame] [check-ins using] [diff]
2022-03-04
02:03
Implement the NEXTWARP message. file: [5a98591922] check-in: [c1c8bc41b1] user: user, branch: trunk, size: 9798 [annotate] [blame] [check-ins using] [diff]
2022-02-11
21:25
Implement the connection movement. file: [3ad0961a68] check-in: [7f3f255b14] user: user, branch: trunk, size: 9798 [annotate] [blame] [check-ins using] [diff]
2022-01-15
05:59
Implement the user sounds (uncompressed) and MML sounds; does not work in the game yet, and built-in sounds are not yet implemented. file: [db1c986fad] check-in: [5c902e7a3f] user: user, branch: trunk, size: 9743 [annotate] [blame] [check-ins using] [diff]
2022-01-12
02:28
Use 23-bit code page numbers. file: [0675ee5ddc] check-in: [0ced76ece7] user: user, branch: trunk, size: 9570 [annotate] [blame] [check-ins using] [diff]
2021-12-27
20:33
More corrections, and more work on implementation, of custom level table definitions. file: [641a517ed3] check-in: [702847e470] user: user, branch: trunk, size: 9546 [annotate] [blame] [check-ins using] [diff]
2021-12-25
00:11
Start to implement (LevelTable) definition (untested so far, and currently only the definition and not the implementation). file: [39284f6f26] check-in: [3b02288a18] user: user, branch: trunk, size: 9509 [annotate] [blame] [check-ins using] [diff]
2021-12-14
06:54
Start to implement the LEVELS table. file: [94459dbf11] check-in: [c4208ea179] user: user, branch: trunk, size: 8948 [annotate] [blame] [check-ins using] [diff]
2021-12-10
00:00
Implement the (Control) block to define a global control object. file: [390cfc3e4a] check-in: [665dcd24be] user: user, branch: trunk, size: 8903 [annotate] [blame] [check-ins using] [diff]
2021-11-18
00:56
Implement batch import mode. file: [c5f496bb05] check-in: [c75006b3f9] user: user, branch: trunk, size: 8874 [annotate] [blame] [check-ins using] [diff]
2021-10-28
02:37
Implement ^x and also some , and = variants of a few instructions. file: [ed576c77f1] check-in: [0d3bc1253d] user: user, branch: trunk, size: 8849 [annotate] [blame] [check-ins using] [diff]
2021-10-14
01:14
Complete implementation of (Order) block (mostly untested so far) file: [9e46039699] check-in: [602616bb91] user: user, branch: trunk, size: 8843 [annotate] [blame] [check-ins using] [diff]
2021-10-08
02:27
Begin implementation of (Order) block (currently incomplete and doesn't work). file: [66fec90ead] check-in: [a50cf8eac3] user: user, branch: trunk, size: 8817 [annotate] [blame] [check-ins using] [diff]
2021-10-02
01:55
Implement composite puzzle sets file: [e898c0efa3] check-in: [4919d2c22e] user: user, branch: trunk, size: 8767 [annotate] [blame] [check-ins using] [diff]
2021-09-30
03:21
Implement selection rectangles, and PLAYFIELD virtual table. file: [9db2b324b2] check-in: [2119a02b07] user: user, branch: trunk, size: 8713 [annotate] [blame] [check-ins using] [diff]
2021-09-11
07:00
Implement much more of bizarro world (currently untested, and not implemented in level editor yet). file: [0ccc1cadde] check-in: [2a3e5126fe] user: user, branch: trunk, size: 8594 [annotate] [blame] [check-ins using] [diff]
2021-09-09
06:18
Free Hero Mesh is starting to be bizarro. file: [f55835fac8] check-in: [9ded322f4f] user: user, branch: trunk, size: 8571 [annotate] [blame] [check-ins using] [diff]
2021-04-27
23:08
Implement subclassing. (Only partially tested so far) file: [24cc8e373b] check-in: [757d440f6b] user: user, branch: trunk, size: 8536 [annotate] [blame] [check-ins using] [diff]
2021-04-26
01:05
Implement case blocks. file: [ca9d66727e] check-in: [f4215e7216] user: user, branch: trunk, size: 8632 [annotate] [blame] [check-ins using] [diff]
2021-04-22
03:00
Add possibility of additional code pages. file: [e799f3d4f3] check-in: [9959860889] user: user, branch: trunk, size: 8613 [annotate] [blame] [check-ins using] [diff]
2021-04-05
05:50
Start to implement deferred movement (incomplete and untested so far). file: [7ea394ee1c] check-in: [13bc344828] user: user, branch: trunk, size: 8583 [annotate] [blame] [check-ins using] [diff]
2021-03-30
06:32
Add the maxTrigger resource, to try to prevent some kinds of infinite loops file: [c3de22e2d5] check-in: [655771dcba] user: user, branch: trunk, size: 8558 [annotate] [blame] [check-ins using] [diff]
2021-03-27
08:21
Implement the text editor, for editing the level title and level strings (currently, only editing the title is implemented). file: [81f8d108e9] check-in: [1665c0ca5d] user: user, branch: trunk, size: 8531 [annotate] [blame] [check-ins using] [diff]
2021-03-20
04:36
Make some corrections to the implementation of dead animations file: [75d4788d3e] check-in: [d033ec4bd1] user: user, branch: trunk, size: 8446 [annotate] [blame] [check-ins using] [diff]
02:26
Implement death animations file: [97efdb5c5e] check-in: [152aca780c] user: user, branch: trunk, size: 8419 [annotate] [blame] [check-ins using] [diff]
2021-02-24
07:12
Start to implement arrays (there is no way to use them yet, and the converter does not yet handle arrays). file: [6692b185fe] check-in: [f7d9c45b1e] user: user, branch: trunk, size: 8267 [annotate] [blame] [check-ins using] [diff]
2021-02-22
04:53
Add a mark type and some instructions dealing with it. file: [2279de3f22] check-in: [902bd1a80d] user: user, branch: trunk, size: 8197 [annotate] [blame] [check-ins using] [diff]
2021-02-21
00:43
Add saving levels. (Now it is probably ready for public testing.) file: [a29da74068] check-in: [d89808c09a] user: user, branch: trunk, size: 8179 [annotate] [blame] [check-ins using] [diff]
2021-02-17
06:00
Add the internal "level_changed" variable; this is set in the level editor if changes are made which would potentially invalidate the solution, requiring the level version number to be incremented. (Some changes do not set this, such as changing the level title, or its order number. In this case, the level version number remains unchanged when the level is saved.) file: [7378f2ea70] check-in: [42049107bf] user: user, branch: trunk, size: 8127 [annotate] [blame] [check-ins using] [diff]
2021-02-10
06:52
Implement and document key dispatch blocks. file: [fad2c669ac] check-in: [7e93e77e75] user: user, branch: trunk, size: 8047 [annotate] [blame] [check-ins using] [diff]
2021-01-11
06:22
Start to implement the picture editor file: [af1df60f10] check-in: [6e1b1bf6d3] user: user, branch: trunk, size: 8018 [annotate] [blame] [check-ins using] [diff]
2021-01-10
03:23
Implement autotest mode and add the config.doc file file: [e8f5d32ef9] check-in: [42f95966ca] user: user, branch: trunk, size: 7918 [annotate] [blame] [check-ins using] [diff]
2021-01-09
00:56
Implement the solution replay file: [f7c90cf74d] check-in: [3edc879c32] user: user, branch: trunk, size: 7892 [annotate] [blame] [check-ins using] [diff]
2021-01-08
00:32
Change read_lump function; also add read_userstate and write_userstate. file: [c906f5298c] check-in: [7dab93e8a9] user: user, branch: trunk, size: 7862 [annotate] [blame] [check-ins using] [diff]
2021-01-05
07:12
Implement displaying the replay list file: [97fa5dbd0e] check-in: [d308a8c8ca] user: user, branch: trunk, size: 7667 [annotate] [blame] [check-ins using] [diff]
2021-01-04
07:15
Implement the inventory display file: [4bcb7663f0] check-in: [0ba0570c8c] user: user, branch: trunk, size: 7619 [annotate] [blame] [check-ins using] [diff]
06:29
Improvement of comments in heromesh.h file: [512c09304e] check-in: [7b83e02ee7] user: user, branch: trunk, size: 7604 [annotate] [blame] [check-ins using] [diff]
00:39
Start to implement replay. (The replay implementation is not yet complete; it doesn't display the replay list anywhere, nor does it save it, nor replay solutions.) file: [02acfa099d] check-in: [1c62f22813] user: user, branch: trunk, size: 7733 [annotate] [blame] [check-ins using] [diff]
2020-12-21
23:44
Change some variables from 8-bits to 16-bits for better compatibility with Hero Mesh file: [ec8cb61a20] check-in: [418cb4cce0] user: user, branch: trunk, size: 7643 [annotate] [blame] [check-ins using] [diff]
01:20
Implement LocateMe file: [c347f8ffc1] check-in: [c32d302e15] user: user, branch: trunk, size: 7643 [annotate] [blame] [check-ins using] [diff]
2020-12-20
18:49
Implement level strings and quiz buttons file: [70c31aabbe] check-in: [5d19455a9e] user: user, branch: trunk, size: 7614 [annotate] [blame] [check-ins using] [diff]
08:28
Implement inventory; also correct a mistake in create() file: [dafcdb1ee6] check-in: [e22341996b] user: user, branch: trunk, size: 7558 [annotate] [blame] [check-ins using] [diff]
2020-12-19
22:24
Implement command to create a new empty puzzle set file: [62b3419027] check-in: [6d402e1175] user: user, branch: trunk, size: 7436 [annotate] [blame] [check-ins using] [diff]
2020-12-17
22:10
Implement the rest of the phases of the turn; still not working perfectly though file: [34bcd17910] check-in: [f4f4383c4e] user: user, branch: trunk, size: 7401 [annotate] [blame] [check-ins using] [diff]
00:28
Implement popup text (partially) file: [cae8174e03] check-in: [00363b01aa] user: user, branch: trunk, size: 7376 [annotate] [blame] [check-ins using] [diff]
2020-12-16
00:08
Start the implementation of animations. file: [6f44ec7cde] check-in: [0f84344e70] user: user, branch: trunk, size: 7254 [annotate] [blame] [check-ins using] [diff]
2020-12-12
05:56
Implement for/next loops, and add NoIgnore() in some more places where needed file: [63c8f5b734] check-in: [ba612cfc1c] user: user, branch: trunk, size: 6826 [annotate] [blame] [check-ins using] [diff]
2020-12-10
22:26
Implement object examine mode better now. file: [5f07c527d6] check-in: [a84d299534] user: user, branch: trunk, size: 6809 [annotate] [blame] [check-ins using] [diff]
2020-12-08
03:53
Add a few structures and stuff related to animation; not complete file: [431eca0830] check-in: [8d8bcb34ca] user: user, branch: trunk, size: 6801 [annotate] [blame] [check-ins using] [diff]
2020-12-05
08:02
Remove the IOF_DEAD and IOF_ANIM flags; use a different implementation file: [c9a54ecacf] check-in: [2f7b9e4144] user: user, branch: trunk, size: 6713 [annotate] [blame] [check-ins using] [diff]
03:51
Implement some more instructions, and correct a mistake in the instruction compiler file: [95c7ddddb0] check-in: [aa53c20de4] user: user, branch: trunk, size: 6775 [annotate] [blame] [check-ins using] [diff]
2020-12-04
06:07
Implement many more opcodes and correct a few file: [73d4c98f79] check-in: [9aed95654b] user: user, branch: trunk, size: 6740 [annotate] [blame] [check-ins using] [diff]
2020-12-02
05:41
Implement begin_level() and screen_message() file: [585a056cca] check-in: [435ee485bb] user: user, branch: trunk, size: 6676 [annotate] [blame] [check-ins using] [diff]
2020-11-29
23:50
Implement message tracing, fix a few mistakes, start to implement level initialization file: [2d7b9d4e3c] check-in: [d1b2616e10] user: user, branch: trunk, size: 6640 [annotate] [blame] [check-ins using] [diff]
2020-11-27
00:27
Start to implement tracing. file: [92dd4bcba0] check-in: [6683ba9878] user: user, branch: trunk, size: 6631 [annotate] [blame] [check-ins using] [diff]
2020-11-26
01:41
Implement objtrash() and generation number increasing; move initialization to a separate subroutine file: [febc731348] check-in: [daf44d7fbb] user: user, branch: trunk, size: 6604 [annotate] [blame] [check-ins using] [diff]
2020-11-17
00:51
Add possibility to select levels. file: [7f03c73a50] check-in: [5b7677692b] user: user, branch: trunk, size: 6514 [annotate] [blame] [check-ins using] [diff]
2020-10-20
23:21
Add game.c file (not implemented much) file: [5840e387ed] check-in: [9d982f0655] user: user, branch: trunk, size: 6475 [annotate] [blame] [check-ins using] [diff]
2019-07-15
03:27
Add gameover,key_ignored,changed variables for future use file: [25a549cebd] check-in: [b39ff189b9] user: user, branch: trunk, size: 6438 [annotate] [blame] [check-ins using] [diff]
2019-05-18
03:37
Start writing code for executing class codes (untested) file: [5dda80566c] check-in: [52a2dcb87d] user: user, branch: trunk, size: 6403 [annotate] [blame] [check-ins using] [diff]
2018-10-26
08:12
Implement scrollbars file: [a8db97cff3] check-in: [633696a6f5] user: user, branch: trunk, size: 6327 [annotate] [blame] [check-ins using] [diff]
2018-10-22
05:41
More stuff in editor and key binding file: [5ea05aa2a2] check-in: [02cc36cf71] user: user, branch: trunk, size: 6260 [annotate] [blame] [check-ins using] [diff]
2018-10-07
04:25
Make some improvements to compile script, and start edit.c (just a stub so far) file: [6365c4e997] check-in: [3f12058d2d] user: user, branch: trunk, size: 6075 [annotate] [blame] [check-ins using] [diff]
2018-09-10
01:16
Implement INSERT/UPDATE/DELETE for OBJECTS virtual table (untested) file: [bef1fa2bb9] check-in: [ec1c70d3d1] user: user, branch: trunk, size: 6035 [annotate] [blame] [check-ins using] [diff]
2018-08-24
15:12
Add OF_BIZARRO flag, change OF_TRACEIN/OF_TRACEOUT to CF_TRACEIN/CF_TRACEOUT, fix a bug in update logic for CLASSES vtab file: [f8558aace9] check-in: [966114bc2f] user: user, branch: trunk, size: 6036 [annotate] [blame] [check-ins using] [diff]
2018-08-19
21:53
Implement loading level titles (and level version and level code) file: [2c25e1e23b] check-in: [69c81d7254] user: user, branch: trunk, size: 6013 [annotate] [blame] [check-ins using] [diff]
2018-08-18
01:44
Implement level loading; also several bug fixes needed for it to work properly. file: [bec75427a1] check-in: [126d717829] user: user, branch: trunk, size: 5868 [annotate] [blame] [check-ins using] [diff]
2018-07-14
00:19
Implement the "CLASSES" virtual table and the "CLASS_DATA" SQL function. file: [c2593fd5ae] check-in: [829b9ff683] user: user, branch: trunk, size: 5668 [annotate] [blame] [check-ins using] [diff]
2018-07-10
05:56
Add a "maxObjects" resource. Also add some missing "extern" from declarations in heromesh.h and add a hidden "heap test" option file: [2b83b24f84] check-in: [402432f1b2] user: user, branch: trunk, size: 5533 [annotate] [blame] [check-ins using] [diff]
2018-07-08
00:13
Add some more stuff with graphics and some other stuff that was previously forgotten file: [d034a0352f] check-in: [c5926b50b9] user: user, branch: trunk, size: 5499 [annotate] [blame] [check-ins using] [diff]
2018-07-02
21:24
Implement creating new objects and linking objects into the playfield (program execution is only started a bit and is not even nearly close to being written enough yet) file: [38fd763986] check-in: [d872cd754a] user: user, branch: trunk, size: 5422 [annotate] [blame] [check-ins using] [diff]
2018-06-24
02:12
Implement stack overflow protection file: [11a368eb64] check-in: [9f57c48591] user: user, branch: trunk, size: 5089 [annotate] [blame] [check-ins using] [diff]
2018-06-22
07:17
Add exec.c (moving some things from main.c); add definitions for exec.c in heromesh.h; also add a macro tracing option. file: [637f2cff6e] check-in: [9ffad27cd3] user: user, branch: trunk, size: 4398 [annotate] [blame] [check-ins using] [diff]
2018-06-15
21:06
Add the MESSAGES virtual table file: [ba1bd3273a] check-in: [ee25076d50] user: user, branch: trunk, size: 3781 [annotate] [blame] [check-ins using] [diff]
2018-06-10
16:34
Add some SQL functions file: [fe8a013d87] check-in: [81f52e6f42] user: user, branch: trunk, size: 3721 [annotate] [blame] [check-ins using] [diff]
2018-06-09
00:42
Add the write_lump() function (uses upsert, which SQLite recently added) file: [e6403c7a41] check-in: [a55e51e100] user: user, branch: trunk, size: 3637 [annotate] [blame] [check-ins using] [diff]
2018-06-03
22:43
The syntax of for/next loops has been changed; also added some codes for dealing with user cache data file: [89943d20fd] check-in: [8b26cd42e7] user: user, branch: trunk, size: 3570 [annotate] [blame] [check-ins using] [diff]
2018-05-27
22:33
More class loading code file: [a6cc7a9107] check-in: [9d448767e4] user: user, branch: trunk, size: 3402 [annotate] [blame] [check-ins using] [diff]
2018-05-19
19:23
More parsing of .class file file: [6804915000] check-in: [e049e8ed33] user: user, branch: trunk, size: 3365 [annotate] [blame] [check-ins using] [diff]
2018-05-05
23:58
Implement preprocessor, and add some more opcode names, and a few bug fixed file: [27851ceca3] check-in: [79caf678be] user: user, branch: trunk, size: 3039 [annotate] [blame] [check-ins using] [diff]
2018-04-27
20:25
More codes and testing in class codes parser file: [0030d49afe] check-in: [02b262b608] user: user, branch: trunk, size: 2981 [annotate] [blame] [check-ins using] [diff]
2018-04-22
00:44
Further progress on writing the lexer file: [927413f183] check-in: [c36edda367] user: user, branch: trunk, size: 2950 [annotate] [blame] [check-ins using] [diff]
2018-04-16
00:14
Add some starting for loading class files (not much yet) file: [f8e6ccfb6c] check-in: [e701e7c58f] user: user, branch: trunk, size: 2934 [annotate] [blame] [check-ins using] [diff]
2018-04-13
21:19
Add the "sqlFile" resource, and correct the gamma correction file: [756faba25e] check-in: [a4882ad0b9] user: user, branch: trunk, size: 2908 [annotate] [blame] [check-ins using] [diff]
2018-04-09
16:36
Add "FATAL" to fatal error messages file: [e948800055] check-in: [e345d1a7d7] user: user, branch: trunk, size: 2879 [annotate] [blame] [check-ins using] [diff]
04:15
Faster key bindings, and testing for key bindings file: [25255b4793] check-in: [c8eb0a9e48] user: user, branch: trunk, size: 2869 [annotate] [blame] [check-ins using] [diff]
2018-04-08
23:31
Types, bug fixes, and test mode file: [0f695d01fc] check-in: [3df78ec087] user: user, branch: trunk, size: 2495 [annotate] [blame] [check-ins using] [diff]
2018-04-06
21:00
Add init_screen() and starting the type defintions for classes, and fix the picture loader to work with zoomed pictures file: [89443417d7] check-in: [88e748ef6d] user: user, branch: trunk, size: 1531 [annotate] [blame] [check-ins using] [diff]
2018-04-02
18:22
Added: Split picture reading codes into a separate file file: [81301118dc] check-in: [016ea5365e] user: user, branch: trunk, size: 399 [annotate] [blame] [check-ins using]