Commit Graph

61 Commits

Author SHA1 Message Date
f2ba618c19 STYLE: consistency in using argList::addArgument, argList::addOption 2017-11-22 12:54:28 +01:00
61534989df ENH: simplify primitiveEntry parsing code, move append new tokens
- simplify string output code
2017-11-05 22:07:17 +01:00
4e48beffd4 ENH: support "one-shot" changes to the dictionary inputMode (issue #429)
- Instead of relying on #inputMode to effect a global change it is now
  possible (and recommended) to a temporary change in the inputMode
  for the following entry.

     #default   : provide default value if entry is not already defined
     #overwrite : silently remove a previously existing entry
     #warn      : warn about duplicate entries
     #error     : error if any duplicate entries occur
     #merge     : merge sub-dictionaries when possible (the default mode)

  This is generally less cumbersome than the switching the global
  inputMode. For example to provide a set of fallback values.

      #includeIfPresent "user-files"
      ...
      #default value uniform 10;

  vs.

      #includeIfPresent "user-files"
      #inputMode protect
      ...
      value uniform 10;
      #inputMode merge    // _Assuming_ we actually had this before

  These directives can also be used to suppress the normal dictionary
  merge semantics:

     #overwrite dict { entry val; ... }
2017-07-29 17:44:22 +02:00
2fdc6b161a ENH: support full-scoping for keywords as lvalue (issue #429)
- patterns only supported for the final element.

  To create an element as a pattern instead of a word, an embedded
  string quote (single or double) is used for that element.
  Any of the following examples:

      "/top/sub/dict/'(p|U).*"     100;
      "/top/sub/dict/'(p|U).*'"    100;
      "/top/sub/dict/\"(p|U).*"    100;
      "/top/sub/dict/\"(p|U).*\""  100;

  are equivalent to the longer form:

      top
      {
          sub
          {
              dict
              {
                  "(p|U).*"     100;
              }
          }
      }

  It is not currently possible to auto-vivify intermediate
  dictionaries with patterns.

    NOK   "/nonexistent.*/value"   100;
    OK    "/existing.*/value"      100;

- full scoping also works for the #remove directive

        #remove "/dict1/subdict2/entry1"
2017-07-20 10:58:05 +02:00
5148e4f860 STYLE: manage dictionary inputMode directly within entry class
- The logic for switching input-mode was previously completely
  encapsulated within the #inputMode directive, but without any
  programming equivalent. Furthermore, the encapsulation in inputMode
  made the logic less clear in other places.

  Exposing the inputMode as an enum with direct access from entry
  simplifies things a fair bit.

- eliminate one level of else/if nesting in entryIO.C for clearer logic

- for dictionary function entries, simply use
  addNamedToMemberFunctionSelectionTable() and avoid defining a type()
  as a static. For most function entries the information is only used
  to get a name for the selection table lookup anyhow.
2017-08-03 07:14:17 +02:00
cc290b7c02 ENH: improve dictionary parsing behaviour for ill-formed entries (closes #510)
- mostly associated with forgotten quotes around "(abd|def)" ...

- Address different potential problems:

      (key) { key1   entry1; }
      (key) { key1   entry1; };    // <- Note trailing ';'
      (key) entry2;
2017-07-19 11:00:44 +02:00
84e47f2d2a ENH: cleanup dictionary code
- use typedefs and new features/methods
- file-scope template to avoid code duplication.
2017-07-06 12:58:04 +02:00
ffe3e0e425 ENH: allow '^' as anchor for dictionary scoping (issue #429)
- The existing ':' anchor works for rvalue substitutions
  (Eg, ${:subdict.name}), but fails for lvalues, since it is
  a punctuation token and parse stops there.
2017-04-25 11:57:21 +02:00
f05be160e2 BUG: dictionary entries not being properly merged/overwritten (closes #418)
STYLE: update dictionary documentation
2017-03-03 11:36:24 +01:00
6d5db96ad9 ENH: subdict output with leading name (issue #255)
- Introduce dictionary::writeEntries for better code-reuse.

  Before
  ======
      os << nl << indent << "name";
      dict.write(os);

  After
  =====
      dict.write(os, "name");
2016-06-09 18:33:56 +01:00
f0c3e8d599 STYLE: Updated version to 'plus' 2015-12-22 23:14:17 +00:00
8837a89237 STYLE: Updated links from openfoam.org to openfoam.com 2015-12-09 15:03:05 +00:00
9fb26d59d3 GIT: Repo update 2014-12-11 08:35:10 +00:00
fbb3ddf2c4 Updated for release 2.3.0 2014-02-17 10:21:46 +00:00
7da6784897 ENH: testDict: key substitution 2013-05-08 14:11:13 +01:00
6dc4de7d3f ENH: dictionary: recursive variable expansion 2012-10-15 16:00:03 +01:00
78a7cdf7f3 ENH: Test-dictionary: test dictionary variable expansion 2012-10-12 17:52:52 +01:00
87bab77daf ENH:dictionary: allow scoped variable lookup (using '.') 2012-09-12 09:14:43 +01:00
c2dd153a14 Copyright transfered to the OpenFOAM Foundation 2011-08-14 12:17:30 +01:00
c720299876 ENH: Reverted back to version dev 2011-06-17 10:08:20 +01:00
4f47ff0219 STYLE: dictionaries: update version number 2011-06-10 17:22:56 +01:00
b89f6082b0 STYLE: dictionary headers 2011-04-06 20:35:56 +01:00
4aafea74a9 COMP: removed calcEntry bits missed in b4dae1a5ab 2011-02-24 11:35:24 +01:00
eaef8d482b STYLE: Updated 1991 start copyright year to 2004 2011-01-14 16:08:00 +00:00
099cc39e2e Revert "STYLE: 2011 copyright date."
This reverts commit b18f6cc1ce.
2011-01-05 18:24:29 +00:00
b18f6cc1ce STYLE: 2011 copyright date. 2011-01-05 11:14:26 +00:00
499d48cfdb STYLE: uniform 'Test-' prefix for all applications/test
- easier to clean, avoid confusion with 'real' applications, etc.
2010-11-23 16:26:04 +01:00
28345247a7 STYLE: Fixing code style requirements for more files - those not
picked up by a copyright change.
2010-07-29 11:28:44 +01:00
ccfb6e32a6 Corrected headers. 2010-06-23 16:54:54 +01:00
895a077cb1 STYLE: fixup some dictionary headers 2010-05-18 11:38:07 +02:00
d29c438657 STYLE: use url for FSF license instead of postal address, switch to GPL v3 2010-03-29 14:07:56 +02:00
d857d671ac STYLE: use new argList argRead() method and operator[] for cleaner code.
- deprecate argList::additionalArgs() method and remove uses of it
2010-02-16 17:57:49 +01:00
00616b72ff ENH: Add functionEntry '#calc' to dictionary
- handles basic operations, references to other dictionary entries
  (with '$name' syntax) and assorted mathematical functions:

      pi(), degToRad, radToDeg, asin, acos, atan, sin, cos, tan, log,
      log10, mag, atan2, pow

The basic syntax: #calc{ ... };

NOTE the trailing ';' is required for the primitiveEntry to be
properly defined.
2010-02-07 13:58:10 +01:00
7dd1ad1e23 Adjust Make options for calcEntry. 2010-01-15 19:25:12 +01:00
cf3e2a8abf Update calcEntry grammar to include copyright.
Include character class (wchar_t or char) as a template parameter in
CocoParserErrors.
2010-01-06 12:27:14 +01:00
e0ba4cbb02 Adjust line number before/after #calc{} scanner for improved error messages. 2010-01-03 21:45:32 +01:00
ebfdafad7f Add preliminary wmake rule for using CoCo/R. 2010-01-03 00:39:28 +01:00
d1a2be7872 Reorganize runTimeSelection to include new macros from calcEntry.
Added globalFunctionSelectionTables, staticMemberFunctionSelectionTables
2010-01-02 16:09:08 +01:00
cf91174880 Use global lookup tables for the calcEntry scalar functions.
Handle leading signs on functions etc.
2010-01-02 15:09:17 +01:00
f8147f5bb5 Add basic scalar functions to calcEntry. 2010-01-02 13:01:37 +01:00
8bf3807c3e Update dictionary calcEntry testing for updated CoCo/R 2009-12-21 15:02:33 +01:00
ccdbf4735f Move CocoParserErrors.H template class into src/OpenFOAM/db/error 2009-12-21 14:14:30 +01:00
438a83fc81 Update experimental dictionary #calc for new Coco pragmas 2009-12-21 09:28:17 +01:00
e434b51914 Add namespace qualifier to WarningIn, FatalErrorIn, etc. macros.
- Previously had just 'Warning' instead of '::Foam::Warning', which
  meant that an identically named class method would inadvertently be
  used - resulting in a compile failure.
2009-12-16 08:55:04 +01:00
ad2204a818 Add in calcEntry as a very rough draft
- needs Coco/R 16 Dec 2009 version
2009-12-16 01:31:44 +01:00
28345f7e97 fixup #remove functionEntry and revert e15e32fdb7d515b
- forgot to use readList in removeEntry, which caused the test failure.

- remaining problem:

it doesn't work as might be expected
This is the problem:

dict
{
   foo xxx;
   bar yyy;
}

dict
{
   baz zzz;
   #remove foo
}

This only removes 'foo' from the current scope (the second dict), since
it occurs before the dictionary merge does.

To remove from the final, merged dictionary, we'd need a new
deleteEntry type that would do the right thing on the merge before
self-destructing (ie, removing itself too).
2009-12-01 13:50:51 +01:00
80a27fb9da Removed the "#remove" statements which do not appear to work. 2009-12-01 12:04:28 +00:00
2e558acf65 TypeName instead of ClassName 2009-09-22 15:24:59 +01:00
0b7832e37c qualify exported FOAM_CASE
- avoid ambiguities caused by relative paths
2009-07-23 09:43:05 +02:00
4f6f570d6d versatility improvement: #includeIfPresent dictionary directive
- similar to the #include directive, but does not generate an error if the
  file does not exist.

Note: opted for an explicit naming #includeIfPresent rather than #cinclude
2009-07-21 08:44:25 +02:00