The below are some ideas about the HDF editor that we want to work on
next. Would appreciate it if you could look through this and make some
comments and/or suggestions. Thanks.
-------cut here--------
HDFedit:

What it does...

The purpose of HDFedit is primarily to allow more sophisticated users
to manipulate the ``elements'' in a HDF file. These manipulations
include selecting groups and showing information on them, dumping them
to the output, writing them to new files, deleting them, inserting
them, replace, say, the palette of a r8 group, and editing the text
labels and descriptions of any element.

HDFedit will NOT allow the user to *arbitrarily* modify binary data in
the file or any element, though it may allow modification of tag and
ref numbers within strict constraints. The user should not have the
power to twiddle with individual bytes. It is OK, however, to replace
an element with another. (Assuming that the user knows that it's the
same type of data)

HDFedit can be used both interactively or in a ``batch'' mode. The
command language of HDFedit can be used to program most of the
utilities currently provided by separate programs, such as the
hdftor8, hdfls, hdfrseq etc.

The following is a tentative list of the commands HDFedit provides:

The predicates would be of the form TAG=3 IMAGE_SIZE<1000 LABEL="abc"
(or a regular expression) and some similar relevent attributes of an
object. The list of relevent predicates is still very tentative but I
plan to just implement a few and then try to add if more comes along.

NEXT [<predicates>]
        Move to the next group/element that satisfies the predicates.
        If no predicates are specified, use the most recent list of
        predicates.

PREV [<predicates>]
        Like NEXT but backwards.

INFO [all] [<options>]
        Show info of the current object. If all is specified, then do
        it for every object in the file. Can replace hdfls.

DISPLAY [<options>]
        Display contents to output. DUMP should know what type of data
        the particular object is but the options will allow it to
        maybe display a raster image on different output devices.
	Raw, ascii, hex etc..

COPY <filename> [<options>]
        Move an object or some element of it to another HDF file.

WRITE <filename> [<options>]
        Write current object or a data element in object into another
        file. ALWAYS HDF file.

INSERT <filename> [<options>]
        Read an object from another file and insert into current file.

DELETE [<options>]
        Delete current object or a part of it.

REPLACE [<options>]
        Replace current object or an element in it.

EDIT [<options>]
        Edit a piece of text or label.

IF <predicates> [<command>] [ELSE <command>]
        Generic IF command. Primarily used in SELECT ... END to impose
        stricter constrains on certain commands.

SELECT <predicates>
        <command>
        <command>
        .
        .
END
        Scans the file and if an object satisfies the predicates,
        execute the commands on it.

ALIAS <options>
UNALIAS <options>
        For those of you with a certain affinity to certain words or
        would like to type less.

All comments, gripes, suggestions, criticism are welcome. (I think :-])
-----

Access groups by default. but with option to access individual data
object.

OPEN filename
CLOSE filename?

Wish-list..
-----------
History
Variable substitutions
Verbose
Echo
Debug
Regular expressions for strings.
