Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/speed optimizations #88

Open
wants to merge 238 commits into
base: master
Choose a base branch
from
Open

Commits on Nov 2, 2021

  1. Configuration menu
    Copy the full SHA
    50ee3ee View commit details
    Browse the repository at this point in the history
  2. Updatong cmake dependencies

    whaeck committed Nov 2, 2021
    Configuration menu
    Copy the full SHA
    e4d56ea View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fc0c91e View commit details
    Browse the repository at this point in the history
  4. Removing compiler definition

    whaeck committed Nov 2, 2021
    Configuration menu
    Copy the full SHA
    90c38c8 View commit details
    Browse the repository at this point in the history

Commits on Nov 4, 2021

  1. Configuration menu
    Copy the full SHA
    e964e92 View commit details
    Browse the repository at this point in the history
  2. Updated readme with CI badge

    whaeck committed Nov 4, 2021
    Configuration menu
    Copy the full SHA
    07c3e58 View commit details
    Browse the repository at this point in the history
  3. Updating to develop

    whaeck committed Nov 4, 2021
    Configuration menu
    Copy the full SHA
    396e07e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    c6dfd33 View commit details
    Browse the repository at this point in the history
  5. Adding the Parity enumerator

    whaeck committed Nov 4, 2021
    Configuration menu
    Copy the full SHA
    60b7dbf View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    84236c4 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    9610406 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    cea10ba View commit details
    Browse the repository at this point in the history

Commits on Nov 10, 2021

  1. Configuration menu
    Copy the full SHA
    a643a6a View commit details
    Browse the repository at this point in the history

Commits on Nov 11, 2021

  1. Configuration menu
    Copy the full SHA
    461d370 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    bf9c348 View commit details
    Browse the repository at this point in the history
  3. Updated GridStyle enumerator

    whaeck committed Nov 11, 2021
    Configuration menu
    Copy the full SHA
    b4afb4d View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    39bf4a4 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    0180110 View commit details
    Browse the repository at this point in the history

Commits on Nov 12, 2021

  1. Configuration menu
    Copy the full SHA
    794af03 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    db09ea7 View commit details
    Browse the repository at this point in the history

Commits on Nov 15, 2021

  1. Work-in-progress.

    Some files aren't finished yet, and will be uploaded in a few days.
    So, this particular update won't build!!
    
    Added broad infrastructure for HDF5 handling...
    ...Wrapper class
    ...Assignment operators
    ...convert() functions
    ...Constructors
    ...read() functions
    ...write() functions
    Etc.
    
    Completed many (not all) HDF5 capabilities.
    Very basic HDF5 write needs to be smarter (not string-only).
    HDF5 reading still needs work.
    Touchups are needed here and there throughout the new HDF5 code.
    In particular, we need smart, non-string handling.
    
    Small tweaks were made to XML and JSON material, for consistency.
    Some comment changes and other odds and ends.
    staleyLANL committed Nov 15, 2021
    Configuration menu
    Copy the full SHA
    717a4fe View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2a148d6 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    7d17c46 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    366e70e View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    dc6a889 View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2021

  1. Saving some changes

    whaeck committed Nov 16, 2021
    Configuration menu
    Copy the full SHA
    ca89e13 View commit details
    Browse the repository at this point in the history
  2. Saving work

    whaeck committed Nov 16, 2021
    Configuration menu
    Copy the full SHA
    1d02351 View commit details
    Browse the repository at this point in the history

Commits on Nov 17, 2021

  1. Extended the autogenerator to support a ProjectDir entry.

    To be used for non-GNDS products, e.g. NDI3.
    When ProjectDir is given, namespaces and various other constructs are done differently.
    Made miscellaneous small improvements in various other files.
    For example: direct read() and write() in Component, aligning with Node's.
    So: autogenerated classes have those read()s and write(); there's no need for a user to explicitly go through Node.
    staleyLANL committed Nov 17, 2021
    Configuration menu
    Copy the full SHA
    316b6d7 View commit details
    Browse the repository at this point in the history
  2. Saving work

    whaeck committed Nov 17, 2021
    Configuration menu
    Copy the full SHA
    0177908 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2c05050 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2021

  1. Lots of not-yet-finished work on an HDF5 read/write capability.

    Won't compile right now, but wanted to get this in.
    staleyLANL committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    5d8653b View commit details
    Browse the repository at this point in the history
  2. comment

    staleyLANL committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    31a4b65 View commit details
    Browse the repository at this point in the history
  3. fix

    staleyLANL committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    44c71db View commit details
    Browse the repository at this point in the history
  4. Moving something around.

    staleyLANL committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    20fb5a2 View commit details
    Browse the repository at this point in the history
  5. Addition to .gitignore.

    staleyLANL committed Nov 18, 2021
    Configuration menu
    Copy the full SHA
    769916a View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    e683ce7 View commit details
    Browse the repository at this point in the history

Commits on Nov 22, 2021

  1. Another setter capability in generated classes, and other improvements.

    For [optional] vector child-node fields, there's a setter that takes an element to push_back. If the optional has no value, it's given one first. Experience showed that something like this would be helpful.
    
    Updated code generator accordingly.
    
    Also, combined the default and "from fields" constructors in generated classes. This makes the generated classes shorter, and also, based on our experience with a prototype data format, proves to make object construction simpler. A generated class might have, for instance, a few metadata, followed by one or more vector or optional-vector child nodes. It's convenient for someone to initialize the object with metadata, and then to add vector elements individually later. This change helps make this process simpler and shorter.
    
    I also implemented another feature that experience with a prototype autogenerated set of classes suggested would be helpful. Before, getters with index or label looked for *metadata* named "index" or "label". Now, if no metadatum called "index" exists in the type of the vector's element (or any of its alternatives, if it's a variant), then index is interpreted to be a regular vector index, as in the "[]" operator. Note that someone who uses the code generator must be aware that the interpretation of (index) getters therefore depends fundamentally on whether or not the relevant vector element type has, or doesn't have, an "index" metadatum. This change means we essentially get an additional feature for free, as (index) previously would just fail unless an "index" metadatum were found.
    
    Removed a "GNDS"-centric comment in Component prettyprinted output. The comment probably wasn't particularly informative anyway. Updated test codes to reflect this change.
    staleyLANL committed Nov 22, 2021
    Configuration menu
    Copy the full SHA
    cf218ec View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7179380 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    cdff3fc View commit details
    Browse the repository at this point in the history

Commits on Nov 29, 2021

  1. Configuration menu
    Copy the full SHA
    d58d5be View commit details
    Browse the repository at this point in the history

Commits on Nov 30, 2021

  1. Some work on the code generator, mostly to simplify some things.

    Regenerated the prototype codes. The changes to these also reflect other work I'd done recently on the code generator, as they hadn't been regenerated for a while.
    staleyLANL committed Nov 30, 2021
    Configuration menu
    Copy the full SHA
    06e3297 View commit details
    Browse the repository at this point in the history

Commits on Dec 6, 2021

  1. Code generator changes to support data-only nodes.

    That is to say, classes that have no metadata or child nodes, but still have data, e.g. with <foo>1.2 3.4 5.6</foo>.
    
    OCD'd a cmake-related file.
    
    Some more work regarding HDF5 format. Still not entirely complete.
    
    I think ".hdf"/".HDF" aren't used as HDF5 file extensions. They need a '5'.
    
    Made some diagnostic-message terminology more consistent.
    staleyLANL committed Dec 6, 2021
    Configuration menu
    Copy the full SHA
    f74e578 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f944930 View commit details
    Browse the repository at this point in the history

Commits on Dec 7, 2021

  1. More work on HDF5.

    staleyLANL committed Dec 7, 2021
    Configuration menu
    Copy the full SHA
    d111a40 View commit details
    Browse the repository at this point in the history

Commits on Dec 10, 2021

  1. Basic HDF5 capability is complete.

    Isn't very smart for output; just keeps everything as strings.
    
    That will be remedied at a later time.
    
    Was tested for functionality on entire set of GNDS v1.9 files. All converted.
    ...original total XML size: 2.9G
    ...new total HDF5 size: 21G
    So, a little over a factor of 7 larger. :-/
    
    Miscellaneous other code changes were put in place during this work.
    
    Made a few diagnostic messages, and other minor constructs here and there, more consistent with one another.
    
    Added a convert() that proved to be needed for a certain disambiguation. This was noticed while working on some HDF5 input capabilities.
    staleyLANL committed Dec 10, 2021
    Configuration menu
    Copy the full SHA
    41026c5 View commit details
    Browse the repository at this point in the history

Commits on Dec 11, 2021

  1. Name change: BodyText to BlockData.

    The former was taken from GNDS, but the latter is much more descriptive.
    staleyLANL committed Dec 11, 2021
    Configuration menu
    Copy the full SHA
    3e70eed View commit details
    Browse the repository at this point in the history

Commits on Dec 12, 2021

  1. Remove allow-as-top-level-GNDS-node flag in Child class.

    This is the first of a few simplifications I've been planning to do with the
    code base.
    
    Having `Child<>` objects contain a flag, indicating "is a node of this name
    allowable as a top-level GNDS node," originally seemed like a good idea.
    
    With our later decision to autogenerate GNDS Standard Interfaces from GNDS
    specs, having such a capability in the Core Interface really isn't necessary.
    
    The Core Interface can be safely generic, uncluttered with the capability of
    checking such a thing. Users will prefer our GNDS Standard Interfaces, which,
    having been generated from GNDS specifications, will be designed so that GNDS
    hierarchies will have the correct structure.
    
    Our Code Generator is also being used to design another (non-GNDS) library,
    and more such uses may follow. Checking if a root node has a valid *GNDS* name
    clearly wouldn't be wanted for other libraries. For this reason, we'd already
    switched off the check by default. At this point, however, we don't think that
    having even the ability to check such a thing, in the Core Interface, is worth
    the extra clutter that it creates in the code base.
    staleyLANL committed Dec 12, 2021
    Configuration menu
    Copy the full SHA
    92e0019 View commit details
    Browse the repository at this point in the history

Commits on Dec 13, 2021

  1. Removed an old, deprecated "keyword builder" capability.

    The removed material was for a very old capability that was intended to help users make Meta<> and Child<> objects.
    
    I hadn't given it much in the way of capabilities yet, but then it was all superseded by the ability to easily manipulate `Meta<>` and `Child<>` objects, e.g. with constructs such as `int{}/Meta<>(...)` to change the type associated with the `Meta<>` object.
    
    The old keyword builder stuff never got much use, didn't have much to offer, and simply isn't needed any longer -- better capabilities exist, and in fact have existed for a long time. I just hadn't gotten around to removing the old code.
    
    Removing it means a bit less code, one less executable to build in the test suite, and nothing really lost.
    staleyLANL committed Dec 13, 2021
    Configuration menu
    Copy the full SHA
    3b77064 View commit details
    Browse the repository at this point in the history

Commits on Dec 14, 2021

  1. Reformulation of HDF5-related temporary file handling.

    Gets rid of the annoying compiler warning about `tmpnam()`.
    The new formulation required a number of changes in the logic here and there.
    staleyLANL committed Dec 14, 2021
    Configuration menu
    Copy the full SHA
    b1fb7fc View commit details
    Browse the repository at this point in the history

Commits on Dec 16, 2021

  1. Cleaned-up and improved logic related to HDF5 handling.

    Made certain HDF5-related operations more efficient.
    staleyLANL committed Dec 16, 2021
    Configuration menu
    Copy the full SHA
    f4c8620 View commit details
    Browse the repository at this point in the history
  2. Name change.

    staleyLANL committed Dec 16, 2021
    Configuration menu
    Copy the full SHA
    04df13e View commit details
    Browse the repository at this point in the history

Commits on Dec 18, 2021

  1. Terminology change re: body text.

    A while back, I renamed class BodyText to class BlockData. It turns out that the "body [text]" terminology still appeared here and there. This PR basically completes the terminology change. I renamed relevant constructs, and removed "body" terminology at least in regards to block data.
    staleyLANL committed Dec 18, 2021
    Configuration menu
    Copy the full SHA
    1debaa6 View commit details
    Browse the repository at this point in the history

Commits on Dec 22, 2021

  1. This commit requires some explanation.

    A class generated by our code generator currently looks something like this:
    
    ```
       class Foo : public Component {
          // Some constructs to help with the Component base
          // ...
    
          struct {
             // Objects for metadata and child nodes
          } content;
    
          // ...
    
          // Getters for the objects in struct content
          // ...
    
          // Setters for the objects in struct content
          // ...
    
          // Constructors, etc.
       };
    ```
    
    For upcoming work, I'm considering a fundamental change to the above layout with respect to data, getters, and setters. The change would, I believe, make it easier to substantially enhance the capabilities offered by generated classes.
    
    The change - if it ultimately happens - involves, among other things, getting rid of `struct content`.
    
    In anticipation of this possible change, then, I went through the code base and tried to reduce the use of expressions like `obj.content.foo`, which assumes the existence of a data member `foo` in something called `content`. Even with the current structure of the generated classes, `obj.content.foo` can be replaced by `obj.foo()`, i.e. the getter than gets, well, `obj.content.foo`. With the possible future work, the getter (or something that replaces it) will do the moral equivalent to what it does now, but `struct content` won't be there. So, better to write `obj.foo()` where we previously wrote `obj.content.foo`.
    
    So, the purpose of the changes in this commit can be summarized as follows: (1) They don't change the meaning of the current code. (2) They help set the stage for the possible future more-substantial changes to the generated code, by reducing the reliance one `content.something` terminology all over the place.
    
    The changes, while mostly simple and easy to understand, triggered some SFINAE issues that were tricky to track down. New comments in BlockData's `detail.hpp` function explain it, if anyone cares.
    
    Also in this PR...
    
    General changes:
    
       - Some minor updates to SFINAE, on top of those discussed above.
    
       - Simplified a few things in the code generator.
    
       - Code generator updates reflect goal of using "content." less often.
    
       - Ditto for a relevant custom.hpp file.
    
    Also, consistent with the goals described above, I replaced the various uses of "content." in several test codes, by writing getters (where they weren't there already) and calling those instead.
    staleyLANL committed Dec 22, 2021
    Configuration menu
    Copy the full SHA
    3d239dd View commit details
    Browse the repository at this point in the history

Commits on Dec 23, 2021

  1. Identify "special" nodes by making their names, well, special.

    This is a change I've wanted to do for a while. I think it's the right thing to do.
    
    See the largest change in ``primer.rst`` for a brief description of why I did this.
    
    The Core Interface's internal structure has always made use of a handful of special names, to identify certain nodes that aren't in GNDS proper, but which need to be used in order to store certain special content. Naturally, special content needs special handling.
    
    Example: what arrives through PugiXML as XML CDATA content *was* stored in GNDStk's internal structure under a child node called ``cdata``. In fact, it was in a ``text`` metadatum inside of a ``cdata`` node. Now, the node is called ``#cdata`` and the metadatum is called ``#text``. That is, each name is now prefixed with ``#``.
    
    Adding the ``#`` prefix is just a small change, but it's meant for a couple of important purposes.
    
    First, its presence allows someone who looks at GNDStk's code base to easily identify special nodes -- which, generally, need special handling, at least in regards to activities such as I/O.
    
    Second, it's always possible that a future GNDS standard (or, importantly, another format that someone might design with our code generator) might want to have a field called ``foo``, where foo is one of our handful of special names that trigger special handling. By renaming ours to ``#foo`` instead, no conflicts will arise. (And someone won't use the ``#`` themselves for the name of a field. It wouldn't work when the associated class or object is created in C++, which of course doesn't allow such a character in variable names.)
    
    I'd have liked to use ``$`` in place of ``#``, but realized right away that doing so would be problematic. Functions like ``Node.one()`` use regular-expression searches, and the ``$`` character has a special meaning in C++ regular expressions. Clearly, then, using ``$`` would lead to various problems. So, we chose what we believe is a reasonable alternative, and one that we think is as good as any other.
    
    Note that the changes in this PR, while relatively simple, were a bit more involved than just changing ``foo`` to ``#foo`` for every ``special`` name ``foo``. Where JSON is involved, for example, you'll see that the use of ``#`` sometimes necessitated changes in node order, given that the JSON library orders nodes lexicographically. Also, some strings for special node names, for example ``xml``, also have meaning for other things: ``xml`` was a special node name, but ``xml`` is also a string someone can use, in certain places, to say that they want XML format. So, some instances of the string ``xml`` are now ``#xml``, but others remain as ``xml``.
    staleyLANL committed Dec 23, 2021
    Configuration menu
    Copy the full SHA
    2c606ea View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    cfacec9 View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2022

  1. Remove unused built-in Meta and Child objects.

    For quite some time, GNDStk's Core Interface had a large number of `Meta` and `Child` objects in its `basic::` and `misc::` namespaces. This was set up prior to us making our current plan: to have GNDStk Standard Interfaces for GNDS 2.0, etc.
    
    Going forward, we anticipate that each Standard Interface will have all necessary `Meta` and `Child` objects built for it automatically, by our code generator, when our code generator generates the Standard Interface's classes.
    
    That means we need to keep only the current `Meta` and `Child` objects that happen to be used in existing test codes. Or, in a few instances, elsewhere in the Core Interface.
    
    Future work (not included right now) will consist of phasing out any remaining uses of these objects in Core Interface code. (Where that happens, we'll just make `Meta` or `Child` objects directly where they're needed.) Then, finally, we'll move any remaining `Meta` and `Child` objects - ones that are used in the test suite - into non-Core-Interface files that would be included only in test-suite code.
    staleyLANL committed Jan 8, 2022
    Configuration menu
    Copy the full SHA
    502588b View commit details
    Browse the repository at this point in the history

Commits on Jan 19, 2022

  1. Block data "truncate" feature.

    I implemented a useful feature that was requested by a user.
    
    When using Component's prettyprinter, previously block data were *all* printed. For example, if a block of data had 1000 elements, then all 1000 elements were printed by the prettyprinter.
    
    Now, we provide a user-settable variable, `GNDStk::truncate`. A negative value for this variable means: print all block-data elements, just like we did before. The default is `-1`, so printing all elements is the default.
    
    If `GNDStk::truncate` is `0` or positive, it means: print at most that number of elements.
    
    Whenever fewer elements are printed than exist, a comment to that effect is emitted. The comments mentions how many values actually exist, as that information may be important to someone to know.
    
    I also updated BlockData's `write.test.cpp` so that it tests the new feature, and I made some miscellaneous cosmetic changes to that file as well.
    
    Finally (and this is related to Component's prettyprinting, so this PR seemed like a good place to do it), I removed the `GNDStk::across` alias to `GNDStk::columns`. I'd had it, previously, because there was a `columns` in another namespace, and I wanted to provide something that worked even in the face of multiple `using` directives. The other `columns` disappeared, however, in an earlier PR in which we got rid of most `Meta` and `Child` objects.
    staleyLANL committed Jan 19, 2022
    Configuration menu
    Copy the full SHA
    78ffbbf View commit details
    Browse the repository at this point in the history

Commits on Jan 20, 2022

  1. Simple commit: limit lines to 80 characters in many places.

    We're generally trying to limit source-code lines to 80 characters or less in length. This isn't an absolute requirement, but, in keeping with the idea, I reformatted longer lines here and there in the hpp and cpp files throughout the code base, where doing so made sense.
    
    Sometimes, such codes have string literals (as with `R"..."`) with lines of more than 80 characters. Those I left as-is; the lines in question are supposed to be precisely the way they are.
    
    Also, for now, I didn't reformat long lines in other types of files. That includes, for example, various `CMakeLists.txt` files throughout GNDStk.
    
    Building very slightly on an earlier PR, I also made a small change to the `GNDStk::columns` variable, so that it would be more consistent, in terms of usage, with the related `GNDStk::truncate` variable. This has nothing to do with 80+ character lines, but was a simple change, so I decided to include it here.
    
    As usual, I modified a few comments and made small cosmetic changes in a few places.
    staleyLANL committed Jan 20, 2022
    Configuration menu
    Copy the full SHA
    88de64b View commit details
    Browse the repository at this point in the history

Commits on Jan 24, 2022

  1. Rework built-in Meta and Child objects as for-testing-only.

    Earlier during the development of GNDStk, we examined existing GNDS files and accounted for all of the node and metadata names that were used throughout those files. We then made two sets (one generic, one "type-aware") of `Meta` and `Child` objects for those nodes and metadata. The generic ones were in a namespace called `basic`, the type-aware ones in a namespace called `misc`.
    
    Given our later decision to separate GNDStk's Core Interface from individual Standard Interfaces that we'll have for each GNDS version, we no longer see the need to clutter the Core Interface with the `basic` and `misc` namespaces and all of their many `Meta` and `Child` objects. However, our test suite used some of the material in those namespaces, so we couldn't just remove it.
    
    In an earlier PR, we removed *unused* `Meta` and `Child` objects. A modest number of them, however, remained.
    
    In this PR, we've completely reworked the relevant material so that it still exists in its present form namespace-wise, but is no longer in the Core Interface. Instead, we have a new file, `src/GNDStk/test/keys.hpp`, that's included in test codes that need any of those old `Meta` and `Child` objects. But that file is *not* part of the Core Interface.
    
    This substantially declutters the Core Interface.
    
    The new `src/GNDStk/test/keys.hpp` file could arguably be split up. Right now, for example, it has several namespaces within it, which isn't consistent with our typical style, elsewhere in GNDStk, regarding source-file content. We may, therefore, split up `keys.hpp` sometime. For now, however, the file is included only in test-suite files, so we're not going to worry about it. The main point right now was to move, to a "test" location, material that we don't see as belonging in the Core Interface any longer.
    
    As a consequence of the changes we've made, we no longer have `namespace core`. Previously, `namespace core` had simply brought in (via using) the `njoy::GNDStk` namespace itself, and `njoy::GNDStk::basic` as well. The latter (`basic`) no longer exists in the main GNDS namespace, as described earlier. So, there's no point in having an `njoy::GNDStk::core` that just brings in `njoy::GNDStk`.
    
    The changes allowed for `GNDStk.hpp` itself to be somewhat decluttered.
    
    We also Removed the *empty* top-level GNDStk test. If we're going to have something there at all, we can put it in at another time. For now, having an empty test code just slowed the test-suite compilation. By removing it, we'll get a small but nonzero speedup in compilation.
    
    Content that was previously in `basic.hpp`, `basic/src/`, `misc.hpp`, `misc/src`, `common.hpp`, and `common/src` was moved to the brand-new file `test/keys.hpp`, the new file mentioned above.
    
    Autogenerated codes were updated to reflect all of the above.
    staleyLANL committed Jan 24, 2022
    Configuration menu
    Copy the full SHA
    87e22db View commit details
    Browse the repository at this point in the history

Commits on Feb 1, 2022

  1. Reworked some of BlockData's behavior

    Based on a user's experience with GNDStk, I reworked some of the details of how the `BlockData` class handles, in particular, the values of `length`, `start`, and `valueType`.
    
    Those values - `length`, `start`, and `valueType` - can appear in GNDS as metadata for elements that contain block data. Example: the `<values>` element.
    
    Our `BlockData` class is built so that it's able to handle all of those in a reasonable way. `BlockData` is a base of `Component`, which is always a base of some "high-level" class (as are produced by our code generator). A question arises about the need to "sync" `length`, `start`, and `valueType` in `BlockData` with whichever ones someone might choose to support (remember, the values aren't necessary) in a high-level class.
    
    Without going into details, we believe (sort of an editorial remark here) that having `length`, `start`, and `valueType` in GNDS introduces some goofiness, in terms of redundancies and such. If something is goofy, then its handling in any code is likely to be goofy as well. The changes we've made change from one plausible way of handling things, to another plausible way. The new scheme can't be characterized as perfect, and, given the nature of the values in question, no scheme is likely to be perfect. We believe, however, that our new scheme is less imperfect than what we had before, and it may (to be determined) fix the problem the user had.
    
    As a result of the changes, we were able to remove some SFINAE, and to clean up some code here and there.
    
    Relevant test codes were of course updated to reflect our changes.
    staleyLANL committed Feb 1, 2022
    Configuration menu
    Copy the full SHA
    32d86b4 View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2022

  1. Introduced a "type guesser", eventually for use by the HDF5 writer.

    Cleaned up some slight inconsistencies here and there.
    I'll write a detailed description in a pull request.
    staleyLANL committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    7fa7f15 View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2022

  1. Modified how the code generator makes Meta and Child keys

    Also added `Component`-to-`Tree` (not just -to-`Node`) conversion.
    staleyLANL committed Feb 10, 2022
    Configuration menu
    Copy the full SHA
    7c278e5 View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2022

  1. JSON functionality respects original ordering.

    GNDStk, as well as its code generator, uses an external library for its basic JSON I/O. A relatively recent improvement to that library was its `ordered_json` class, which preserves a file's existing ordering of key/value pairs, rather than reordering them lexicographically by key.
    
    In principle, the ordering of GNDS metadata and nodes isn't supposed to matter. In practice, we've always preferred the idea of maintaining the order in which values are given. If a user reads a file, makes a small modification, and then writes the file back out, then an across-the-board reordering of metadata and child nodes might seem disconcerting.
    
    Moreover, our code generator uses input JSON specification files to produce classes - including, importantly, constructors for those classes. Imagine that someone gives specs indicating, say, that a class `Element` contains two metadata: `symbol` ("H", "He", "Li", etc.) and `atomicNumber` (1, 2, 3, etc.), in that order.
    
    Prior to this PR, the underlying JSON library's lexicographic reordering of key/value pairs meant that the code generator would give `Element` a constructor that accepted `(atomicNumber,symbol)`, not `(symbol,atomicNumber)` as a person might expect if they gave `symbol` first, and `atomicNumber` second, in the spec passed to the code generator.
    
    Now, in both the GNDStk library and the code generator, order is maintained. (Note that for the code generator, generated constructors still take metadata before child nodes. Within metadata and within child nodes, no reordering will take place now. However, there still isn't a way to intermix metadata and child nodes. We may or may not allow that at some point.)
    
    Important note: because a later version of the underlying JSON library must be used, a user may need to entirely rebuild GNDStk in order for this update to work. With the typical CMake-style workflow, this probably means removing a `build/` directory entirely, then `cd build`, `cmake ..` etc., from there.
    
    Test codes were of course updated to reflect the changes.
    staleyLANL committed Feb 14, 2022
    Configuration menu
    Copy the full SHA
    28ec4e4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    df78378 View commit details
    Browse the repository at this point in the history

Commits on Feb 16, 2022

  1. Various improvements in the HDF5 writing capability.

    Attempt to determine the underlying type of something that's represented as a `string`; for example, a `metadatum="1.23"` is probably a `double`.
    
    Allow for certain patterns that are stored internally for "special" nodes, such as those for plain character data, to be "flattened", that is, stored in a simpler, less hierarchical manner in an HDF5 file.
    
    Important: at the moment, HDF5 *writing* is improved, but HDF5 *reading* has not at this time kept pace. At the moment, we can't necessarily read back an HDF5 file that was read, and recover information properly. I'll hold off on putting in a pull request until that part is done as well.
    
    Even the new improvements to HDF5 writing aren't quite to where I want them to be. There's more work to come.
    
    This commit also includes a small amount of work that really has nothing to do with our HDF5 capabilities. I just happened to visit the affected code while working on the new material. For example, I put in another `convert()`, and also made sure it was tested.
    staleyLANL committed Feb 16, 2022
    Configuration menu
    Copy the full SHA
    eb6e568 View commit details
    Browse the repository at this point in the history
  2. A few further improvements to the HDF5 writing capability.

    Split the (very long) convert detail.hpp function into several parts.
    staleyLANL committed Feb 16, 2022
    Configuration menu
    Copy the full SHA
    5fbc414 View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2022

  1. Simplified some SFINAE.

    Did some non-const-to-const forwarding differently, such that code bulk was reduced.
    
    Split getter() functions in Component's detail.hpp into their own file, as detail.hpp was getting a bit too long and cluttered.
    
    Prepared the way for adding some new capabilities that will use the new Lookup class. More work to come....
    staleyLANL committed Feb 23, 2022
    Configuration menu
    Copy the full SHA
    e069a0f View commit details
    Browse the repository at this point in the history
  2. Made getter-related index and label consistent with one another, with…

    … respect to references.
    
    Function has<Lookup<false>> creates has<Lookup<true>>; will be used for queries.
    
    Tweaks to type names, parameter names, and some formatting.
    
    Added some traits classes; will use them soon.
    staleyLANL committed Feb 23, 2022
    Configuration menu
    Copy the full SHA
    ad03b39 View commit details
    Browse the repository at this point in the history

Commits on Feb 25, 2022

  1. Tons of work on the upcoming major "Lookup" capability.

    Necessary modifications to class Lookup.
    
    Updated the code generator.
    
    Tedious and sometimes difficult Component::getter() modifications to make it all work smoothly. Return types had to be more general, and some new SFINAE was in order.
    
    Ditto, even more so, for the detail::getter() functions. Lots of new SFINAE, function templates, and other constructs. The goal is ultimately to support some nifty new capabilities in Component-derived classes, in particular those that are generated with the code generator. Some separate (from GNDStk proper) work I have seems to indicate that the new constructs work as intended, but lots of tests, *in* GNDStk, should be written. Also, I'll need to run the code generator to regenerate our GNDS Standard Interface prototype. This isn't included quite yet, in this commit, because I'll want more time to review and validate what it generates.
    staleyLANL committed Feb 25, 2022
    Configuration menu
    Copy the full SHA
    086d41f View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2022

  1. Configuration menu
    Copy the full SHA
    4f0ae58 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    83b6a27 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1219770 View commit details
    Browse the repository at this point in the history

Commits on Mar 1, 2022

  1. Configuration menu
    Copy the full SHA
    4b8710a View commit details
    Browse the repository at this point in the history
  2. Updated the code generator's generation of python-binding code, so th…

    …at it deals with the presence of member function templates (not just member function non-templates) in the generated C++ classes.
    staleyLANL committed Mar 1, 2022
    Configuration menu
    Copy the full SHA
    dec016f View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2022

  1. Further improvements to HDF5 I/O.

    Both Node-to-HDF5 and5 HDF-to-Node (write, and read) now have the ability to deal with original string-form content (as from an original XML file, in GNDStk's Node), and "type-ified" versions thereof. For example, `"1.2 3.4"` is a string, but for HDF5 we can write it as two doubles. Also, importantly, content related to "special" nodes, in particular what we'd see in XML as CDATA, comments, and PCDATA, are now handled in a full, and I believe proper, manner. For both input and output of HDF5.
    
    At some point I'll have to document all the HDF5 capabilities. For now, for anyone who wants to play around with HDF5, I recommend trying different combinations of the HDF5::reduced and HDF5::typed boolean flags; and then using perhaps the `h5dump` tool, or any other good HDF5 tool, for seeing what GNDStk's HDF5 capabilities can produce.
    
    Also: I filled out the main HDF5 test code with tons of new tests. This was definitely needed at this point.
    
    Also...
    
    Changed some HDF5-related function names that are in the detail:: namespace. The earlier names had tried to use capitalization (e.g. HDF5 instead of hdf5) in a manner that was consistent with the non-detail:: API names. For detail stuff, however, certain capitalization and long names felt heavy and painful to the eyes.
    
    Added a couple of tests for constructs that, it turned out, had not been interpreted correctly by the "type guesser" algorithm that the generic Node-to-HDF5 conversion uses.
    
    Did a few things that were unrelated to the main work (HDF5) here, but I was
    thinking about them...
    
    Tweaked a couple of autogen files, per some remarks about earlier pull requests.
    
    Figured out how to provide certain *constexpr* `has()` functions for classes
    derived from `Component`. We anticipate that these may eventually prove to be
    quite useful. Importantly, these are fully in `class Component` itself. Nothing
    had to be added to the generated classes. Things like this is why `Component`
    is awesome.
    staleyLANL committed Mar 9, 2022
    Configuration menu
    Copy the full SHA
    6402771 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    bf22b7e View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2022

  1. Some name changes I thought were warranted.

    FileType::null to FileType::guess
    FileType::text to FileType::debug
    staleyLANL committed Mar 10, 2022
    Configuration menu
    Copy the full SHA
    f738de5 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    497948e View commit details
    Browse the repository at this point in the history

Commits on Mar 14, 2022

  1. Changed details regarding Node and Tree names.

    This is a prerequisite for some upcoming work.
    staleyLANL committed Mar 14, 2022
    Configuration menu
    Copy the full SHA
    d60a805 View commit details
    Browse the repository at this point in the history
  2. Slight simplification in class HDF5.

    Could replace fileName with filePtr->getName().
    Basically, the former was redundant.
    staleyLANL committed Mar 14, 2022
    Configuration menu
    Copy the full SHA
    51287db View commit details
    Browse the repository at this point in the history

Commits on Mar 15, 2022

  1. Consolidated some Tree stuff into Node.

    Possible in part because of some other recent work.
    staleyLANL committed Mar 15, 2022
    Configuration menu
    Copy the full SHA
    4725966 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4543598 View commit details
    Browse the repository at this point in the history

Commits on Mar 17, 2022

  1. Filled in some additional I/O related content.

    For example, >> and << (relative to streams and to strings) for Component.
    Slightly changed some names and parameters here and there, to make things more consistent.
    staleyLANL committed Mar 17, 2022
    Configuration menu
    Copy the full SHA
    4ff05d6 View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2022

  1. Circumvented pugixml's spurious newline printing.

    That's really the right thing to do (until/unless they fix it).
    XML, JSON, etc. are now more consistent - no spurious newline in XML.
    Updated test codes accordingly.
    
    Fixed some fixmes.
    
    General detail work, with the aim of tightening up the code.
    
    Tweaked some comments.
    
    More Node/Tree consolidation.
    We use Node in most places, Tree only when necessary.
    
    Removed some "inline"s when the function was a template anyway. Inline doesn't really mean "inline it" these days (compilers are good at making that decision), and it isn't necessary for header-only if the function is a template.
    staleyLANL committed Mar 19, 2022
    Configuration menu
    Copy the full SHA
    6c9b128 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2022

  1. Fixed some fixmes. Part of ongoing cleanup / code tightening.

    Rearranged some code.
    Tweaked some terminology.
    staleyLANL committed Mar 21, 2022
    Configuration menu
    Copy the full SHA
    5bd5378 View commit details
    Browse the repository at this point in the history
  2. Name change.

    In the generated classes, and the code that works with them, struct content is now struct Content. That is, we just capitalized Content.
    
    This simple change is consistent with NJOY classes generally having capitalized names.
    
    More importantly, perhaps, I'm trying to make the code generator allow for as much flexibility as reasonably possible, given that users might be designing their own data format. (Not just using the code generator to build GNDS version-specific data structures.)
    
    If someone actually writes a code-generator input spec that has a node called "content", it'll work now. :-) Not that we really expect that someone would call anything "content", but it *would* be a completely reasonable node name. By using upper-case terms for what we generate automatically - aside from terminology in someone's spec - people can use lower-case words in their specs and be confident that no conflict will arise.
    
    That's the main thinking behind this simple name change.
    staleyLANL committed Mar 21, 2022
    Configuration menu
    Copy the full SHA
    57ee74f View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2022

  1. Some fixes; and consolidated some code.

    Made miscellaneous small improvements in comments, names, etc.
    
    BlockData now has implicit conversion to vector, when warranted.
    It can be used where .get() was previously required.
    
    Fixed the performance issue when default-constructing certain generated classes under certain circumstances.
    
    Fixed some outdated (so, wrong) comments and strings in a couple of the test codes.
    staleyLANL committed Mar 24, 2022
    Configuration menu
    Copy the full SHA
    b693f66 View commit details
    Browse the repository at this point in the history

Commits on Mar 29, 2022

  1. Did some default initialization differently.

    That fixed a problem with certain initializations being very time-consuming.
    Properly split out and clarified "write" versus "print".
    Removed some old debug messages.
    Changed some terminology.
    Trimmed some unused stuff from the KeyTuple (formerly KeywordTup) class.
    staleyLANL committed Mar 29, 2022
    Configuration menu
    Copy the full SHA
    a3fd1a5 View commit details
    Browse the repository at this point in the history
  2. Fix some terminology.

    Fix (I hope) error in g++ compilation.
    staleyLANL committed Mar 29, 2022
    Configuration menu
    Copy the full SHA
    90942cc View commit details
    Browse the repository at this point in the history

Commits on Mar 31, 2022

  1. Lots of miscellaneous changes.

    I'll write much more in an upcoming pull request.
    staleyLANL committed Mar 31, 2022
    Configuration menu
    Copy the full SHA
    5e5141a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1cf8d87 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    56ea4c0 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8cc0cb3 View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2022

  1. Some simplifications.

    staleyLANL committed Apr 1, 2022
    Configuration menu
    Copy the full SHA
    e29e55a View commit details
    Browse the repository at this point in the history

Commits on Apr 29, 2022

  1. Enhanced JSON capabilities. Work-in-progress.

    An earlier branch introduced the ability to write HDF5 files in different ways, according to two boolean flags: *reduced* and *typed*.
    
    This branch enhances our JSON capabilities in the same manner, reflecting, with JSON, an analog of the options we have for HDF5.
    
    The above was done in respect to GNDStk's general philosophy of making its support of different file types as consistent with one another as reasonably possible.
    
    Similarly to HDF5, the JSON class now has two static booleans: "reduced" and "typed".
    
    The "reduced" flag tells the JSON writer whether or not to reduce -- basically, to fold into a shorter and simpler representation -- certain special constructs that GNDStk's Node uses internally in order to handle what are called cdata, pcdata, and comment nodes in XML. Basically, if reduced == true, then we make this simplification, which shortens the JSON output. If reduced == false, then the JSON will closely reflect what Node uses internally.
    
    The "typed" flag tells the JSON writer whether or not it should use our type-guessing code to guess whether "strings" in certain contexts (in particular, metadata values and pcdata) actually contain what look like numbers. Examples: "12" looks like an int, "321 476" looks like a vector of ints, "3.14" looks like a double, and "3.14 2.72 1.41" looks like a vector of doubles. If typed == false, we use the original strings, with no type guessing. If typed == true, we apply the type guesser, and, where appropriate, get JSON numbers in place of strings in the JSON output.
    
    This is a work in progress, with a couple of things that still need doing...
    
    Still to do: modify the JSON *reading* code so that it recognizes the various different ways that the JSON *writing* code writes things, and can reliably reverse the writing process and recover a GNDStk Node.
    
    Also still to do: at present, the nlohmann JSON library, which we use under the hood, doesn't provide a way to write JSON numbers (unquoted, as opposed to quoted JSON strings) beginning from an existing string representation that we might provide for the number. Consider this discussion that I started:
    
         nlohmann/json#3460
    
    This is relevant to us because GNDStk provides very fine control over exactly how numbers, in particular floating-point numbers, are formatted, in terms of the number of significant digits, fixed vs. scientific form, etc. At the time of this writing, if we use typed == true, so that certain strings that look like numbers are written as numbers, the numbers will, unfortunately, be formatted by the JSON library itself. We'd like to have the capability of writing an original string (one that we've already determined looks like a number!) - but writing it as a JSON number (so, without quotes) rather than a JSON string.
    
    In this commit, we also Modified an old Tree/ test that depended on the previous default (but still available, via appropriate flags, even though no longer the default) JSON writing behavior. And, we changed a variable name in json2class.cpp.
    
    We refactored detail-node2hdf5.hpp (for HDF5) considerably, and then reflected this in the modified detail-node2json.hpp (for JSON) that we're primarily working on.
    
    And, we've enhanced the JSON test code so that it tries out the new flags. This is a work in progress as well. In order to finish it, we need to finish the ability to read JSON files that were written not just in our original manner, but with any variations of the above-described flags.
    staleyLANL committed Apr 29, 2022
    Configuration menu
    Copy the full SHA
    ab78ffd View commit details
    Browse the repository at this point in the history

Commits on May 12, 2022

  1. Uploading some unfinished JSON-related work-in-progress.

    Also some small tweaks and comment changes here and there.
    staleyLANL committed May 12, 2022
    Configuration menu
    Copy the full SHA
    50c42c6 View commit details
    Browse the repository at this point in the history

Commits on May 17, 2022

  1. Added some vetter JSON files, to be used in the test suite.

    Small improvements.
    staleyLANL committed May 17, 2022
    Configuration menu
    Copy the full SHA
    c36ceff View commit details
    Browse the repository at this point in the history
  2. Merge branch 'feature/better-json' of https://github.com/njoy/GNDStk

    …into feature/better-json
    staleyLANL committed May 17, 2022
    Configuration menu
    Copy the full SHA
    b6f942d View commit details
    Browse the repository at this point in the history

Commits on May 23, 2022

  1. More work on some JSON-related code.

    Some tweaks to HDF5-related code.
    Extended and improved some comments, to clarify things.
    staleyLANL committed May 23, 2022
    Configuration menu
    Copy the full SHA
    faf2e67 View commit details
    Browse the repository at this point in the history

Commits on May 25, 2022

  1. Configuration menu
    Copy the full SHA
    86d5527 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2022

  1. Saving some work.

    staleyLANL committed May 30, 2022
    Configuration menu
    Copy the full SHA
    0f346b7 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2022

  1. More updates to the work on JSON improvements.

    Additional tests for those, too.
    staleyLANL committed May 31, 2022
    Configuration menu
    Copy the full SHA
    3ee65d7 View commit details
    Browse the repository at this point in the history
  2. More JSON code updates.

    staleyLANL committed May 31, 2022
    Configuration menu
    Copy the full SHA
    91da1bf View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2022

  1. Configuration menu
    Copy the full SHA
    7669c83 View commit details
    Browse the repository at this point in the history
  2. Put most instances of certain reappearing strings into constants.

    There are still some instances of the strings in question, typically appearing amongst other text inside of string literals. At some point I'll look into fixing up those cases too, but that's not a priority right now.
    staleyLANL committed Jun 1, 2022
    Configuration menu
    Copy the full SHA
    5caca0f View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2022

  1. Small but worthwhile improvements in the HDF5 files GNDStk creates.

    Updated the HDF5 test suite to ensure that we test the modifications.
    staleyLANL committed Jun 3, 2022
    Configuration menu
    Copy the full SHA
    7f84bbd View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2022

  1. Detail detail.

    staleyLANL committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    5e932dc View commit details
    Browse the repository at this point in the history

Commits on Jun 8, 2022

  1. Configuration menu
    Copy the full SHA
    93acc2d View commit details
    Browse the repository at this point in the history

Commits on Jun 13, 2022

  1. Direct modifications of certain generated files.

    We'll update the code generator later, and ensure that it does the right thing.
    More feature-packed classes Field and FieldPart.
    staleyLANL committed Jun 13, 2022
    Configuration menu
    Copy the full SHA
    c11ea62 View commit details
    Browse the repository at this point in the history
  2. Two Node constructors made to be non-converting.

    I'm not sure why I made them be converting constructors to begin with. Whatever the reason, it seems (according to the test suite!) that they don't need to be converting constructors. And, I don't think that they should be. Indeed, some new code modifications uncovered this issue, as converting constructors for Node triggered certain ambiguities.
    staleyLANL committed Jun 13, 2022
    Configuration menu
    Copy the full SHA
    707d0de View commit details
    Browse the repository at this point in the history
  3. More generated-code updates.

    Code generator itself still needs updating.
    staleyLANL committed Jun 13, 2022
    Configuration menu
    Copy the full SHA
    621995a View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    ed83af4 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    673c516 View commit details
    Browse the repository at this point in the history

Commits on Jun 14, 2022

  1. Configuration menu
    Copy the full SHA
    9111a5e View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2022

  1. Configuration menu
    Copy the full SHA
    fa7234a View commit details
    Browse the repository at this point in the history
  2. Small change, allowing for a reasonable diagnostic message if a certa…

    …in name isn't known.
    
    This was important for the new generated-class Field system to work well, without carrying along a std::string (expensive!) in each class field. On the other hand, such a thing wouldn't necessarily be a memory hog in a well-designed library that mostly contained vectors and such - not a huge number of individual scalar fields.
    staleyLANL committed Jun 15, 2022
    Configuration menu
    Copy the full SHA
    9452053 View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2022

  1. Shortened some things.

    Improved some SFINAE.
    Added more comments, and did a bit of rearrangement.
    staleyLANL committed Jun 16, 2022
    Configuration menu
    Copy the full SHA
    6cd2ba7 View commit details
    Browse the repository at this point in the history
  2. Updating generated code.

    staleyLANL committed Jun 16, 2022
    Configuration menu
    Copy the full SHA
    9c783f0 View commit details
    Browse the repository at this point in the history
  3. Major update to code generator.

    It now generates classes that use the new system.
    staleyLANL committed Jun 16, 2022
    Configuration menu
    Copy the full SHA
    f96a289 View commit details
    Browse the repository at this point in the history
  4. Merge branch 'feature/component-field' of https://github.com/njoy/GNDStk

     into feature/component-field
    staleyLANL committed Jun 16, 2022
    Configuration menu
    Copy the full SHA
    a09ecfa View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    057485b View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2022

  1. Shortened some things.

    staleyLANL committed Jun 17, 2022
    Configuration menu
    Copy the full SHA
    9c9bcfb View commit details
    Browse the repository at this point in the history

Commits on Jun 19, 2022

  1. Configuration menu
    Copy the full SHA
    d93a560 View commit details
    Browse the repository at this point in the history
  2. Merge branch 'feature/component-field' of github.com:njoy/GNDStk into…

    … feature/component-field
    staleyLANL committed Jun 19, 2022
    Configuration menu
    Copy the full SHA
    3243a9f View commit details
    Browse the repository at this point in the history

Commits on Jun 27, 2022

  1. Tweak to circumvent non-GNDStk error.

    A variable CHAR_WIDTH appears in the HighFive HDF5 library, but CHAR_WIDTH is #defined in <limits>. The obvious consequental problem is fixed by our change.
    staleyLANL committed Jun 27, 2022
    Configuration menu
    Copy the full SHA
    2b71a2a View commit details
    Browse the repository at this point in the history

Commits on Jun 28, 2022

  1. More work on Field and FieldPart classes.

    Updated test code.
    Still a work-in-progress.
    staleyLANL committed Jun 28, 2022
    Configuration menu
    Copy the full SHA
    cc1b7cc View commit details
    Browse the repository at this point in the history
  2. Merge branch 'feature/component-field' of github.com:njoy/GNDStk into…

    … feature/component-field
    staleyLANL committed Jun 28, 2022
    Configuration menu
    Copy the full SHA
    3507f3c View commit details
    Browse the repository at this point in the history

Commits on Jun 29, 2022

  1. Lots more work on the Field and FieldPart classes.

    Added new material to a couple of test codes.
    staleyLANL committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    8068978 View commit details
    Browse the repository at this point in the history
  2. Updating.

    staleyLANL committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    8b39010 View commit details
    Browse the repository at this point in the history
  3. Small cosmetic changes.

    staleyLANL committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    43af24e View commit details
    Browse the repository at this point in the history

Commits on Jun 30, 2022

  1. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    16fc7b7 View commit details
    Browse the repository at this point in the history
  2. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    a951980 View commit details
    Browse the repository at this point in the history
  3. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    4e04868 View commit details
    Browse the repository at this point in the history
  4. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    6b20355 View commit details
    Browse the repository at this point in the history
  5. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    4755fd3 View commit details
    Browse the repository at this point in the history
  6. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    15c0d7a View commit details
    Browse the repository at this point in the history
  7. Updating

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    2172b83 View commit details
    Browse the repository at this point in the history
  8. Updating ...

    whaeck committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    d24ceb8 View commit details
    Browse the repository at this point in the history
  9. Added add() and replace() functions.

    These forward to operator() variations, but users may like the more-natural names.
    Made some small cosmetic changes as well.
    staleyLANL committed Jun 30, 2022
    Configuration menu
    Copy the full SHA
    4b2e68e View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    33ecd8b View commit details
    Browse the repository at this point in the history

Commits on Jul 1, 2022

  1. Some new functions.

    staleyLANL committed Jul 1, 2022
    Configuration menu
    Copy the full SHA
    536ab5d View commit details
    Browse the repository at this point in the history

Commits on Jul 5, 2022

  1. Configuration menu
    Copy the full SHA
    66ae7ed View commit details
    Browse the repository at this point in the history

Commits on Jul 12, 2022

  1. Substantial new capability: class Component forwarding to fields.

    Component "forwards" to derived-class fields, where doing so is viable and unambiguous.
    
    This allows certain things to be shortened, when using generated classes.
    
    Moved some things around in Component's field.hpp. More clarity.
    
    Added some assignment operators there as well.
    
    Small change: some cases of "class" to "struct".
    
    Change: generated-class ctors from Node are now explicit. I think they really should be, because a Node is very general and could easily contain content (name, metadata, or child nodes) that make it fail at run-time when converting to an object of some particular generated class.
    staleyLANL committed Jul 12, 2022
    Configuration menu
    Copy the full SHA
    8df219a View commit details
    Browse the repository at this point in the history

Commits on Jul 15, 2022

  1. Configuration menu
    Copy the full SHA
    a3d4b8a View commit details
    Browse the repository at this point in the history
  2. Added comment.

    staleyLANL committed Jul 15, 2022
    Configuration menu
    Copy the full SHA
    a996ae3 View commit details
    Browse the repository at this point in the history

Commits on Jul 19, 2022

  1. Configuration menu
    Copy the full SHA
    3e69dd9 View commit details
    Browse the repository at this point in the history

Commits on Jul 28, 2022

  1. Fixed an HDF5 file reading glitch that a user noticed.

    Simplified some diagnostics.
    staleyLANL committed Jul 28, 2022
    Configuration menu
    Copy the full SHA
    8124176 View commit details
    Browse the repository at this point in the history

Commits on Aug 6, 2022

  1. Configuration menu
    Copy the full SHA
    4dae392 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    878c3e2 View commit details
    Browse the repository at this point in the history

Commits on Aug 7, 2022

  1. Small but complete example for the code generator.

    Handwritten (for now) C-language interface for some of the classes.
    For our purposes here, simple compilation scripts and examples.
    staleyLANL committed Aug 7, 2022
    Configuration menu
    Copy the full SHA
    2ae8b5c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    29c9ddf View commit details
    Browse the repository at this point in the history

Commits on Aug 11, 2022

  1. Configuration menu
    Copy the full SHA
    a2f7320 View commit details
    Browse the repository at this point in the history

Commits on Aug 12, 2022

  1. Configuration menu
    Copy the full SHA
    09d97be View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d9c4e71 View commit details
    Browse the repository at this point in the history
  3. More autogenerated C interface work.

    Very tedious, but coming along.
    staleyLANL committed Aug 12, 2022
    Configuration menu
    Copy the full SHA
    ed74a69 View commit details
    Browse the repository at this point in the history

Commits on Aug 14, 2022

  1. Configuration menu
    Copy the full SHA
    398c5f5 View commit details
    Browse the repository at this point in the history

Commits on Aug 15, 2022

  1. Configuration menu
    Copy the full SHA
    ae062f5 View commit details
    Browse the repository at this point in the history

Commits on Aug 16, 2022

  1. Configuration menu
    Copy the full SHA
    e0d97ad View commit details
    Browse the repository at this point in the history
  2. Completing some details.

    staleyLANL committed Aug 16, 2022
    Configuration menu
    Copy the full SHA
    e7577ca View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    ab46a7c View commit details
    Browse the repository at this point in the history
  4. Small fixes.

    staleyLANL committed Aug 16, 2022
    Configuration menu
    Copy the full SHA
    219683b View commit details
    Browse the repository at this point in the history
  5. More small fixes.

    staleyLANL committed Aug 16, 2022
    Configuration menu
    Copy the full SHA
    d6b6917 View commit details
    Browse the repository at this point in the history
  6. Script improvement.

    staleyLANL committed Aug 16, 2022
    Configuration menu
    Copy the full SHA
    84c78bf View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    5c34c5c View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2022

  1. Configuration menu
    Copy the full SHA
    90edf67 View commit details
    Browse the repository at this point in the history

Commits on Aug 18, 2022

  1. Account for a goofy C (not C++) constness wrinkle.

    Small name changes.
    staleyLANL committed Aug 18, 2022
    Configuration menu
    Copy the full SHA
    63cccad View commit details
    Browse the repository at this point in the history

Commits on Aug 19, 2022

  1. C interface: made Has() work for all fields, optional or not.

    Basically, that was for consistency.
    Did a bit of reformatting in json2class.cpp.
    staleyLANL committed Aug 19, 2022
    Configuration menu
    Copy the full SHA
    d90cdb7 View commit details
    Browse the repository at this point in the history

Commits on Aug 22, 2022

  1. Updating generated codes.

    Small changes in a couple of scripts.
    staleyLANL committed Aug 22, 2022
    Configuration menu
    Copy the full SHA
    21d0151 View commit details
    Browse the repository at this point in the history
  2. Small but important change in the code generator.

    nameClass() doesn't use any "name" override in a key's value,
    but always uses the key itself.
    staleyLANL committed Aug 22, 2022
    Configuration menu
    Copy the full SHA
    0bea9e3 View commit details
    Browse the repository at this point in the history
  3. Reorganized files that relate to our "prototype" GNDS 1.9.

    In preparation for putting together a GNDS 2.0 interface, I wanted to improve the way in which current content was organized.
    
    We had "prototype" GNDS 1.9 input specs in the autogen directory. However, calling it even a "prototype" was a bit much, because it had so little of the actual, full GNDS 1.9 specification. More accurately, it was simply an example of using the code generator. It wasn't even close to being GNDS 1.9.
    
    The code generator's inputs for this "prototype" were placing "v1.9" content into GNDStk/python/src and GNDStk/src/v1.9. That is, the content was going into the GNDStk repo's root directory. Given that this thing isn't really GNDS 1.9 by any stretch of the imagination, that output never really belonged in the root directory. Rather, it belonged in the autogen directory, under prototype.
    
    So, I moved the appropriate content to where I believe it belongs. Note that the general core-interface material (source and tests) remains in GNDStk/python. Only the not-really-"v1.9" files were moved.
    
    Various CMake-related files as well as C++ files were updated to reflect the move.
    
    How, precisely, we'll arrange GNDS 2.0 and GNDS [future-version] material is to be determined. @whaeck's dev/gnds-2.0 has them in GNDStk/standards, which I think is a good place. For the code that we'll generator for GNDS 2.0, etc., I'd say that we should remain in that directory structure, rather that going upwards to the main GNDStk/ directory as we originally did with the prototype.
    staleyLANL committed Aug 22, 2022
    Configuration menu
    Copy the full SHA
    a2047bc View commit details
    Browse the repository at this point in the history
  4. Updated summary_abstract with a couple of changes, per today's summar…

    …y_abstract on NEA Gitlab.
    staleyLANL committed Aug 22, 2022
    Configuration menu
    Copy the full SHA
    da9ad92 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d4d60c3 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    2419dd5 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    433eeb8 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    af2dbcd View commit details
    Browse the repository at this point in the history

Commits on Aug 23, 2022

  1. Gradually working through the .json spec files.

    Accounting for both Wim's changes and the current (2022-aug-23) master branch at git.oecd-nea.org
    I'm putting back in the nodes that create "circularity" issues, so that I can identify precisely where it happens, and fix it properly.
    This is all currently a work in progress!
    staleyLANL committed Aug 23, 2022
    Configuration menu
    Copy the full SHA
    51f38d2 View commit details
    Browse the repository at this point in the history

Commits on Aug 24, 2022

  1. Configuration menu
    Copy the full SHA
    b87942a View commit details
    Browse the repository at this point in the history
  2. A couple of json2class asserts replaces with informative diagnostics.

    Small coloring change in utility.
    Added some files to to-process list in gnds-2.0 json spec.
    staleyLANL committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    25cb828 View commit details
    Browse the repository at this point in the history
  3. Typo fix in old "v1.9" file.

    Not really important, but noticed it while working with v2.0.
    staleyLANL committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    44794d3 View commit details
    Browse the repository at this point in the history
  4. Changed four instances of "required" from true to false.

    In each case, the metadatum in question had a default. When a metadatum has a default, that implies that it shouldn't be required. If, in contrast, it turns out that we want to require any of the metadata in question, then we should remove their defaults.
    staleyLANL committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    67a84c6 View commit details
    Browse the repository at this point in the history
  5. Changed a comment.

    staleyLANL committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    e49dc9e View commit details
    Browse the repository at this point in the history
  6. Changed two instances of "required" from true to false.

    Same reasoning as a few minutes ago, with summary_tsl.json.
    staleyLANL committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    3b31f99 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    f635f38 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    55616f9 View commit details
    Browse the repository at this point in the history
  9. Fixed typo (complies ==> compiles) in various places.

    This typo was in the original source material we worked from.
    See: https://git.oecd-nea.org/science/wpec/gnds/formats/-/issues/113
    staleyLANL committed Aug 24, 2022
    Configuration menu
    Copy the full SHA
    23cfef5 View commit details
    Browse the repository at this point in the history

Commits on Aug 29, 2022

  1. Added a whole bunch of "trying it out" GNDS 2.0 files.

    These will be temporary, at least in this (try/ directory) location.
    
    But I want to have these, now, in order to help ensure that upcoming code and spec changes have the effects -- and only the effects -- that I want them to have.
    
    In the code generator, I replaced an assert with a meaningful error message, regarding times/occurrence. More work on the code generator will be forthcoming. (And hence one reason for putting in the slew of new files as described above.)
    staleyLANL committed Aug 29, 2022
    Configuration menu
    Copy the full SHA
    254b3b2 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2022

  1. Configuration menu
    Copy the full SHA
    b52cda0 View commit details
    Browse the repository at this point in the history
  2. Reordering.

    staleyLANL committed Aug 30, 2022
    Configuration menu
    Copy the full SHA
    b580a9e View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f2447ed View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0f91b56 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    72c8646 View commit details
    Browse the repository at this point in the history

Commits on Aug 31, 2022

  1. Configuration menu
    Copy the full SHA
    38a1d26 View commit details
    Browse the repository at this point in the history
  2. Update summary_common.json, per oecd-nea master.

    Abstract node physicalQuantity contents placed directly into certain nodes. The code generator doesn't do this automatically yet.
    Added back certain nodes like "uncertainty". Work in progress. We plan to fix the circular-definitions issue.
    staleyLANL committed Aug 31, 2022
    Configuration menu
    Copy the full SHA
    781b492 View commit details
    Browse the repository at this point in the history
  3. Update summary_transport.json, per oecd-nea master.

    Abstract node contents added where necessary.
    staleyLANL committed Aug 31, 2022
    Configuration menu
    Copy the full SHA
    06b752b View commit details
    Browse the repository at this point in the history
  4. Update summary_styles.json, per oecd-nea master.

    Abstract node contents added where necessary.
    Child nodes e.g. documentation and uncertainty added.
    staleyLANL committed Aug 31, 2022
    Configuration menu
    Copy the full SHA
    4ddd08d View commit details
    Browse the repository at this point in the history
  5. Updating a couple more JSON files, per the latest on oecd-nea.

    Abstract node contents added where necessary.
    Documentation and uncertainty nodes added where necessary.
    staleyLANL committed Aug 31, 2022
    Configuration menu
    Copy the full SHA
    997845b View commit details
    Browse the repository at this point in the history
  6. Updated summary_pops.json based on the latest main branch on oecd-nea.

    Added abstractNode base attributes where needed.
    Added documentation and uncertainty nodes, per the latest standard.
    Added another "default" mapping in the changes.json file.
    staleyLANL committed Aug 31, 2022
    Configuration menu
    Copy the full SHA
    b5ecb0a View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2022

  1. Added a minimal "mass" node to summary_tsl.json.

    And, to use it, stipulated the "tsl" namespace for mass in scatteringAtom.
    
    The above is meant as a fix, for now, of one of several ambiguities that the code generator reports during GNDS 2.0 code generation.
    
    scatteringAtom in summary_tsl.json gives mass as a child node. However, prior to the above change, there was no "mass" in tsl (the present namespace), but a "mass" in each of summary_common.json and summary_pops.json.
    
    There was no mechanism for the code generator to figure out which one was intended! So, I examined the tsl-*.xml files I have from GNDS 1.9, and observed that all <mass> nodes looked something like this:
    
         <mass value="90.436" unit="amu"/>
    
    Judging from that, I placed a serviceable such "mass" class into "tsl".
    
    The above fix is intended to be temporary, until the GNDS 2.0 spec clarifies precisely what "mass" in "scatteringAtom" should allow.
    staleyLANL committed Sep 3, 2022
    Configuration menu
    Copy the full SHA
    f032706 View commit details
    Browse the repository at this point in the history
  2. Got transport::NBodyPhaseSpace working by stipulating namespace "tsl"…

    … for its "mass" child node.
    
    Judging from GNDS 1.9 files I have, <mass> nodes inside <NBodyPhaseSpace> nodes always have attributes value and unit, and nothing else. The "mass" I added earlier in namespace tsl:: fits the bill. We'll therefore implement this minimal fix for now, until the GNDS 2.0 specs clarify the matter.
    staleyLANL committed Sep 3, 2022
    Configuration menu
    Copy the full SHA
    cde5f1c View commit details
    Browse the repository at this point in the history

Commits on Sep 6, 2022

  1. Configuration menu
    Copy the full SHA
    767f64c View commit details
    Browse the repository at this point in the history
  2. Disambiguated "uncertainty" in transport and fpy.

    Based on the content I'm seeing in GNDS files, the "uncertainty" child node in (1) summary_transport.json, and (2) summary_fpy.json, must be containers::uncertainty, not pops::uncertainty. The latter doesn't have sufficient child nodes of its own to cover what I see in the GNDS files.
    staleyLANL committed Sep 6, 2022
    Configuration menu
    Copy the full SHA
    d5d42a9 View commit details
    Browse the repository at this point in the history
  3. Updated generated code.

    staleyLANL committed Sep 6, 2022
    Configuration menu
    Copy the full SHA
    a2df1ce View commit details
    Browse the repository at this point in the history
  4. Disambiguated temperature's uncertainty in styles.

    It appears that this uncertainty can be pops::uncertainty, given that this temperature is a scalar. containers::uncertainty is more expansive, and appears to be overkill for a scalar.
    staleyLANL committed Sep 6, 2022
    Configuration menu
    Copy the full SHA
    c540f24 View commit details
    Browse the repository at this point in the history
  5. Disambiguated delayedNeutron's "product" child.

    This is in: summary_fissionFragmentData.json.
    
    The "product" node appears in two namespaces: pops and common. The pops version includes two attributes (label and pid), and no child nodes. The common version include the same two attributes, as well as children multiplicity, distribution, and outputChannel.
    
    The "product" description in summary_fissionFragmentData.json says,
    
         "Product describing this delayed neutron.
          Includes average multiplicity and distribution info."
    
    So, I infer that the common:: version, not the pops:: version, is required, and I specified "namespace" in order to make this happen.
    
    Generated codes are updated accordingly.
    staleyLANL committed Sep 6, 2022
    Configuration menu
    Copy the full SHA
    7271396 View commit details
    Browse the repository at this point in the history
  6. Inferred three cases of "namespace" in summary_transport.json.

    Two cases of child node "Q", and one case of child node "products", were inferred, based on content in some GNDS 1.9 files, to be the ones in common::, not the ones in pops::.
    
    Generated codes were updated accordingly.
    staleyLANL committed Sep 6, 2022
    Configuration menu
    Copy the full SHA
    08147a1 View commit details
    Browse the repository at this point in the history

Commits on Sep 7, 2022

  1. Best guess at correct namespace.

    In summary_resonance.json, resonanceReaction has child node Q. This could be either common::Q or pops::Q. The description for this Q says:
    
        "An optional override for the Q value of the reaction given
         in the reaction node."
    
    Q isn't directly in any <reaction> nodes I see, but I see it in <outputChannel> nodes within <reaction> nodes. Those <Q>s I see have <constant1d>, which only common::Q, not pops::Q, allows for. So, I'm going to infer that namespace common is the correct one.
    staleyLANL committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    efe80e2 View commit details
    Browse the repository at this point in the history
  2. Added "namespace".

    In four case in summary_common.json, I assumed that containers::uncertainty, not pops::uncertainty, was the intended uncertainty.
    staleyLANL committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    881bd6e View commit details
    Browse the repository at this point in the history
  3. Disambiguated an "energy" child node in summary_processed.json.

    A node named "energy" appears in three namespaces: common, fpy, and pops. Based on a remark Caleb made to me,
    
       "...[energy] inside the...'energyAngularMC' distribution type...stores
       the outgoing energy distribution P(E' | E)."
    
    I'm thinking that common::energy appears to be the correct one.
    staleyLANL committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    266fef0 View commit details
    Browse the repository at this point in the history
  4. Pointed to proper child nodes.

    Child node keys (as opposed to the given "name" value) should refer to node
    names, not to node "name" values. So...
    
    In summary_gpdc.json:
    
         xs ==> xs_in_xs_pdf_cdf1d
         cdf ==> cdf_in_xs_pdf_cdf1d
    
    In summary_processed.json:
    
         angular ==> angular_uncorrelated
    
    In summary_resonance.json:
    
         PoPs ==> PoPs_database
    
    In summary_transport.json:
    
         PoPs ==> PoPs_database
    staleyLANL committed Sep 7, 2022
    Configuration menu
    Copy the full SHA
    6958b41 View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2022

  1. Directory name change.

    staleyLANL committed Sep 8, 2022
    Configuration menu
    Copy the full SHA
    3b1391a View commit details
    Browse the repository at this point in the history

Commits on Sep 12, 2022

  1. Added the summary_extra.json file.

    This will serve, for now, as a place to store alternative versions of certain classes, for the purpose of avoiding circular class references.
    staleyLANL committed Sep 12, 2022
    Configuration menu
    Copy the full SHA
    75591dd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8abc8a4 View commit details
    Browse the repository at this point in the history
  3. Fixed "type" attribute name: "type", not "label".

    More namespaces, for disambiguation.
    Updated generated code.
    staleyLANL committed Sep 12, 2022
    Configuration menu
    Copy the full SHA
    05570af View commit details
    Browse the repository at this point in the history
  4. Debug printing in json2class, to help analyze GNDS 2.0 specs.

    Changes in some example specs; will help to analyze a JSON-format issue.
    staleyLANL committed Sep 12, 2022
    Configuration menu
    Copy the full SHA
    b5e2f58 View commit details
    Browse the repository at this point in the history

Commits on Sep 15, 2022

  1. Fixed a JSON-related glitch, for a user.

    Simplified and clarified some of the JSON-related code.
    Updated some example/test codes.
    staleyLANL committed Sep 15, 2022
    Configuration menu
    Copy the full SHA
    c62d3a7 View commit details
    Browse the repository at this point in the history

Commits on Sep 19, 2022

  1. Have the code generator ignore child nodes beginning with "//".

    It's a convenient way to temporarily "comment out" a child node that's involved in a circular definition (of which the specs have many), until a proper solution is found.
    staleyLANL committed Sep 19, 2022
    Configuration menu
    Copy the full SHA
    5ecb938 View commit details
    Browse the repository at this point in the history
  2. Maps: checksum to std::string, algorithm to HashAlgorithm.

    I'm guessing that the specs really shouldn't have both "algorithm" and "hashAlgorithm".
    staleyLANL committed Sep 19, 2022
    Configuration menu
    Copy the full SHA
    1e6e297 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4090370 View commit details
    Browse the repository at this point in the history
  4. Regenerated GNDS 2.0 code.

    staleyLANL committed Sep 19, 2022
    Configuration menu
    Copy the full SHA
    e3cefdb View commit details
    Browse the repository at this point in the history
  5. Well, it *compiles*, for what that's worth.

    That is, I added a very simple (for now) code that #includes the generated "GNDS 2.0" classes. The code compiles, which is great. However, given the condition of the GNDS 2.0 specs, more work is needed to make this code successfully read and write GNDS 2.0 files.
    staleyLANL committed Sep 19, 2022
    Configuration menu
    Copy the full SHA
    38081e4 View commit details
    Browse the repository at this point in the history

Commits on Sep 22, 2022

  1. Some work that might improve performance with GNDS 2.0, or any autoge…

    …nerated classes.
    
    Un-required some things in the spec, where I saw in the the GNDS 2.0 files that the values weren't there (so, obviously, couldn't be required).
    staleyLANL committed Sep 22, 2022
    Configuration menu
    Copy the full SHA
    86655eb View commit details
    Browse the repository at this point in the history

Commits on Oct 24, 2022

  1. Began an "incremental" GNDS 2.0 spec build, in standards/incremental.

    Sorting of vectors in Component-derived classes is now optional, and OFF by default. That's really the right thing to do. For GNDS data (which is billed as being order-independent), it may seem convenient to sort vectors of objects according to an index or label metadatum in the object. However, (1) doing so takes time, and (2) we think that by default, at least, the order in which somebody enters such vector elements should be preserved.
    
    Modified a couple of the GNDS 2.0 JSON specs, based on experience with trying to load GNDS 2.0 files.
    staleyLANL committed Oct 24, 2022
    Configuration menu
    Copy the full SHA
    670e545 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    caf0ccc View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2022

  1. Work-in-progress on making certain aspects of generated classes more …

    …efficient.
    
    This includes work in the Core Interface and the Component class, so that queries into Nodes -- to extract objects of prescribed types -- work more efficiently when the objects in question have relatively expensive construction or assignment. This can easily happen with complicated, highly hierarchical generated classes.
    staleyLANL committed Oct 28, 2022
    Configuration menu
    Copy the full SHA
    37b1244 View commit details
    Browse the repository at this point in the history

Commits on Oct 29, 2022

  1. Configuration menu
    Copy the full SHA
    856aac0 View commit details
    Browse the repository at this point in the history

Commits on Nov 14, 2022

  1. Work in progress, towards making generated classes more efficient.

    Regenerated some sample classes.
    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    7448d6d View commit details
    Browse the repository at this point in the history
  2. Modified the code generator so that generated constructors are more e…

    …fficient.
    
    Also allowed for additional debug printing in generated classes.
    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    430ebfe View commit details
    Browse the repository at this point in the history
  3. Update example code.

    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    d4add7f View commit details
    Browse the repository at this point in the history
  4. Meta<T> and Child<T> no longer need a T in them.

    This helps with some efficiency issues.
    Some new, alternative query formulations elsewhere allow the T to go.
    This other work will be uploaded shortly.
    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    6d28f68 View commit details
    Browse the repository at this point in the history
  5. Child<T> and Meta<T> class operator updates, because they no longer h…

    …ave a T.
    
    Removed some constructs elsewhere that were no longer needed.
    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    4ce186b View commit details
    Browse the repository at this point in the history
  6. Alternative formulations of Meta<T> and Child<T> related query functi…

    …ons.
    
    Small changes to a couple of test codes.
    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    821ead0 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    39b03fb View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    5d07dbc View commit details
    Browse the repository at this point in the history
  9. Regenerated some code.

    Update to the code generator.
    Updates to some example/test material.
    staleyLANL committed Nov 14, 2022
    Configuration menu
    Copy the full SHA
    8187e03 View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2022

  1. Configuration menu
    Copy the full SHA
    3ab6cc7 View commit details
    Browse the repository at this point in the history

Commits on Nov 21, 2022

  1. Substantial optimization.

    Via reformulation and extension of some floating-point read/write capabilities.
    staleyLANL committed Nov 21, 2022
    Configuration menu
    Copy the full SHA
    babad79 View commit details
    Browse the repository at this point in the history

Commits on Dec 7, 2022

  1. Fast, completely optional parallel string-of-doubles-to-doubles conve…

    …rsion.
    
    Used in BlockData::get().
    So, relevant for getting vector<floating-point> in Component-derived classes.
    staleyLANL committed Dec 7, 2022
    Configuration menu
    Copy the full SHA
    ea2a04c View commit details
    Browse the repository at this point in the history

Commits on Dec 9, 2022

  1. Configuration menu
    Copy the full SHA
    934673a View commit details
    Browse the repository at this point in the history