From 3c911b8ffd27c466882bbda4e2bd97f5f308db2f Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 25 Apr 2008 16:19:13 +0100 Subject: [PATCH] Static initialisation of labelListList --- .../containers/Lists/ListOps/ListOps.H | 6 + .../Lists/ListOps/ListOpsTemplates.C | 18 + src/OpenFOAM/db/dictionary/#dictionary.C# | 638 ------------------ src/OpenFOAM/db/dictionary/#dictionary.H# | 539 --------------- src/OpenFOAM/meshes/meshShapes/edge/edge.H | 3 + src/OpenFOAM/meshes/meshShapes/edge/edgeI.H | 7 + src/meshTools/octree/treeBoundBox.C | 52 +- 7 files changed, 61 insertions(+), 1202 deletions(-) delete mode 100644 src/OpenFOAM/db/dictionary/#dictionary.C# delete mode 100644 src/OpenFOAM/db/dictionary/#dictionary.H# diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H index 15e264ab74..ddeb8f62e1 100644 --- a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H +++ b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H @@ -184,6 +184,12 @@ label findLower ); +//- To construct a (square) ListList from a C array. Has extra Container type +// to initialise e.g. faceList from arrays of labels. +template +List initListList(const T[nRows][nColumns]); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C index a68a66b44c..2a2792af53 100644 --- a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C +++ b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C @@ -486,4 +486,22 @@ Foam::label Foam::findLower } +template +Foam::List Foam::initListList(const T elems[nRows][nColumns]) +{ + List faces(nRows); + + Container f(nColumns); + forAll(faces, faceI) + { + forAll(f, i) + { + f[i] = elems[faceI][i]; + } + faces[faceI] = f; + } + return faces; +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/db/dictionary/#dictionary.C# b/src/OpenFOAM/db/dictionary/#dictionary.C# deleted file mode 100644 index 2982ad32d4..0000000000 --- a/src/OpenFOAM/db/dictionary/#dictionary.C# +++ /dev/null @@ -1,638 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -\*---------------------------------------------------------------------------*/ - -#include "dictionary.H" -#include "primitiveEntry.H" -#include "dictionaryEntry.H" - -/* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */ - -defineTypeNameAndDebug(Foam::dictionary, 0); - -const Foam::dictionary Foam::dictionary::null; - - -// * * * * * * * * * * * * * Private member functions * * * * * * * * * * * // - -bool Foam::dictionary::add(entry* ePtr, bool mergeEntry) -{ - HashTable::iterator iter = hashedEntries_.find(ePtr->keyword()); - - if (mergeEntry && iter != hashedEntries_.end()) - { - // can only merge dictionaries - if (ePtr->isDict() && iter()->isDict()) - { - iter()->dict().merge(ePtr->dict()); - delete ePtr; - - return true; - } - else - { - remove(ePtr->keyword()); - } - } - - if (hashedEntries_.insert(ePtr->keyword(), ePtr)) - { - ePtr->name() = name_ + "::" + ePtr->keyword(); - append(ePtr); - - return true; - } - else - { - IOWarningIn("dictionary::add(entry* ePtr)", (*this)) - << "attempt to add an entry already in dictionary " << name() - << endl; - - delete ePtr; - - return false; - } -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::dictionary::dictionary() -: - parent_(dictionary::null) -{} - - -Foam::dictionary::dictionary -( - const dictionary& parentDict, - const dictionary& dict -) -: - IDLList(dict, *this), - name_(dict.name()), - parent_(parentDict) -{ - for - ( - IDLList::iterator iter = begin(); - iter != end(); - ++iter - ) - { - hashedEntries_.insert(iter().keyword(), &iter()); - } -} - - -Foam::dictionary::dictionary -( - const dictionary& dict -) -: - IDLList(dict, *this), - name_(dict.name()), - parent_(dictionary::null) -{ - for - ( - IDLList::iterator iter = begin(); - iter != end(); - ++iter - ) - { - hashedEntries_.insert(iter().keyword(), &iter()); - } -} - - -Foam::autoPtr Foam::dictionary::clone() const -{ - return autoPtr(new dictionary(*this)); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::dictionary::~dictionary() -{ - // cerr<< "~dictionary() " << name() << " " << long(this) << std::endl; -} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -Foam::label Foam::dictionary::startLineNumber() const -{ - if (size()) - { - return first()->startLineNumber(); - } - else - { - return -1; - } -} - - -Foam::label Foam::dictionary::endLineNumber() const -{ - if (size()) - { - return last()->endLineNumber(); - } - else - { - return -1; - } -} - - -bool Foam::dictionary::found(const word& keyword, bool recusive) const -{ - if (hashedEntries_.found(keyword)) - { - return true; - } - else if (recusive && &parent_ != &dictionary::null) - { - return parent_.found(keyword, recusive); - } - else - { - return false; - } -} - - -const Foam::entry* Foam::dictionary::lookupEntryPtr -( - const word& keyword, - bool recusive -) const -{ - HashTable::const_iterator iter = hashedEntries_.find(keyword); - - if (iter == hashedEntries_.end()) - { - if (recusive && &parent_ != &dictionary::null) - { - return parent_.lookupEntryPtr(keyword, recusive); - } - else - { - return NULL; - } - } - - return iter(); -} - - -const Foam::entry& Foam::dictionary::lookupEntry -( - const word& keyword, - bool recusive -) const -{ - const entry* ePtr = lookupEntryPtr(keyword, recusive); - - if (ePtr == NULL) - { - // If keyword not found print error message ... - FatalIOErrorIn - ( - "dictionary::lookupEntry(const word& keyword) const", - *this - ) << " keyword " << keyword << " is undefined in dictionary " - << name() - << exit(FatalIOError); - } - - return *ePtr; -} - - -Foam::ITstream& Foam::dictionary::lookup -( - const word& keyword, - bool recusive -) const -{ - return lookupEntry(keyword, recusive).stream(); -} - - -bool Foam::dictionary::isDict(const word& keyword) const -{ - if (const entry* entryPtr = lookupEntryPtr(keyword)) - { - return entryPtr->isDict(); - } - else - { - return false; - } -} - - -const Foam::dictionary* Foam::dictionary::subDictPtr(const word& keyword) const -{ - if (const entry* entryPtr = lookupEntryPtr(keyword)) - { - return &entryPtr->dict(); - } - else - { - return NULL; - } -} - - -const Foam::dictionary& Foam::dictionary::subDict(const word& keyword) const -{ - if (const entry* entryPtr = lookupEntryPtr(keyword)) - { - return entryPtr->dict(); - } - else - { - // If keyword not found print error message ... - FatalIOErrorIn - ( - "dictionary::subDict(const word& keyword) const", - *this - ) << " keyword " << keyword << " is undefined in dictionary " - << name() - << exit(FatalIOError); - - return entryPtr->dict(); - } -} - - -Foam::wordList Foam::dictionary::toc() const -{ - wordList keywords(size()); - - label i = 0; - for - ( - IDLList::const_iterator iter = begin(); - iter != end(); - ++iter - ) - { - keywords[i++] = iter().keyword(); - } - - return keywords; -} - - -void Foam::dictionary::add(const entry& e) -{ - add(e.clone(*this).ptr()); -} - -void Foam::dictionary::add(const word& keyword, const token& t) -{ - add(new primitiveEntry(keyword, t)); -} - -void Foam::dictionary::add(const word& keyword, const word& w) -{ - add(new primitiveEntry(keyword, token(w))); -} - -void Foam::dictionary::add(const word& keyword, const Foam::string& s) -{ - add(new primitiveEntry(keyword, token(s))); -} - -void Foam::dictionary::add(const word& keyword, const label l) -{ - add(new primitiveEntry(keyword, token(l))); -} - -void Foam::dictionary::add(const word& keyword, const scalar s) -{ - add(new primitiveEntry(keyword, token(s))); -} - -void Foam::dictionary::add(const word& keyword, const ITstream& tokens) -{ - add(new primitiveEntry(keyword, tokens)); -} - -void Foam::dictionary::add(const word& keyword, const tokenList& tokens) -{ - add(new primitiveEntry(keyword, tokens)); -} - -void Foam::dictionary::add(const word& keyword, const dictionary& dict) -{ - add(new dictionaryEntry(keyword, *this, dict)); -} - - -bool Foam::dictionary::remove(const word& Keyword) -{ - HashTable::iterator iter = hashedEntries_.find(Keyword); - - if (iter != hashedEntries_.end()) - { - IDLList::remove(iter()); - delete iter(); - hashedEntries_.erase(iter); - - return true; - } - else - { - return false; - } -} - - -bool Foam::dictionary::changeKeyword -( - const word& oldKeyword, - const word& newKeyword, - bool forceOverwrite -) -{ - // no change - if (oldKeyword == newKeyword) - { - return false; - } - - HashTable::iterator iter = hashedEntries_.find(oldKeyword); - - // oldKeyword not found - do nothing - if (iter == hashedEntries_.end()) - { - return false; - } - - HashTable::iterator iter2 = hashedEntries_.find(newKeyword); - - // newKeyword already exists - if (iter2 != hashedEntries_.end()) - { - if (forceOverwrite) - { - IDLList::remove(iter2()); - delete iter2(); - hashedEntries_.erase(iter2); - } - else - { - // could issue warning if desired - return false; - } - } - - // change name and HashTable, but leave DL-List untouched - iter()->keyword() = newKeyword; - iter()->name() = name_ + "::" + newKeyword; - hashedEntries_.erase(oldKeyword); - hashedEntries_.insert(newKeyword, iter()); - - return true; -} - - -bool Foam::dictionary::merge(const dictionary& dict) -{ - // Check for assignment to self - if (this == &dict) - { - FatalErrorIn("dictionary::merge(const dictionary&)") - << "attempted merge to self for dictionary " << name() - << abort(FatalError); - } - - bool changed = false; - - for - ( - IDLList::const_iterator iter = dict.begin(); - iter != dict.end(); - ++iter - ) - { - const word& keyword = iter().keyword(); - - HashTable::iterator iter2 = hashedEntries_.find(keyword); - - if (iter2 != hashedEntries_.end()) - { - // Recursively merge sub-dictionaries - if (iter2()->isDict() && iter().isDict()) - { - // without copying and without remove/add? - // this certainly looks ugly and doesn't necessarily - // retain the original sort order (perhaps nice to have) - if - ( - iter2()->dict().merge(iter().dict()) - ) - { - changed = true; - } - } - else - { - remove(keyword); - add(iter().clone(*this)()); - changed = true; - } - } - else - { - // not found - just add - add(iter().clone(*this)()); - } - } - - return changed; -} - - -void Foam::dictionary::clear() -{ - IDLList::clear(); - hashedEntries_.clear(); -} - - -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - -Foam::ITstream& Foam::dictionary::operator[](const word& keyword) const -{ - return lookup(keyword); -} - - -void Foam::dictionary::operator=(const dictionary& dict) -{ - // Check for assignment to self - if (this == &dict) - { - FatalErrorIn("dictionary::operator=(const dictionary&)") - << "attempted assignment to self for dictionary " << name() - << abort(FatalError); - } - - // Clear the current entries - IDLList::clear(); - - // Create clones of the entries in the given dictionary - // resetting the parentDict to this dictionary - for - ( - IDLList::const_iterator iter = dict.begin(); - iter != dict.end(); - ++iter - ) - { - append(iter().clone(*this).ptr()); - } - - name_ = dict.name(); - - hashedEntries_.clear(); - - for - ( - IDLList::iterator iter = begin(); - iter != end(); - ++iter - ) - { - hashedEntries_.insert(iter().keyword(), &iter()); - } -} - - -void Foam::dictionary::operator+=(const dictionary& dict) -{ - // Check for assignment to self - if (this == &dict) - { - FatalErrorIn("dictionary::operator+=(const dictionary&)") - << "attempted addition assignment to self for dictionary " << name() - << abort(FatalError); - } - - for - ( - IDLList::const_iterator iter = dict.begin(); - iter != dict.end(); - ++iter - ) - { - add(iter().clone(*this)()); - } -} - - -void Foam::dictionary::operator|=(const dictionary& dict) -{ - // Check for assignment to self - if (this == &dict) - { - FatalErrorIn("dictionary::operator|=(const dictionary&)") - << "attempted assignment to self for dictionary " << name() - << abort(FatalError); - } - - for - ( - IDLList::const_iterator iter = dict.begin(); - iter != dict.end(); - ++iter - ) - { - if (!found(iter().keyword())) - { - add(iter().clone(*this)()); - } - } -} - - -void Foam::dictionary::operator<<=(const dictionary& dict) -{ - // Check for assignment to self - if (this == &dict) - { - FatalErrorIn("dictionary::operator<<=(const dictionary&)") - << "attempted assignment to self for dictionary " << name() - << abort(FatalError); - } - - for - ( - IDLList::const_iterator iter = dict.begin(); - iter != dict.end(); - ++iter - ) - { - remove(iter().keyword()); - add(iter().clone(*this)()); - } -} - - -/* * * * * * * * * * * * * * * * Global operators * * * * * * * * * * * * * */ - -Foam::dictionary Foam::operator+ -( - const dictionary& dict1, - const dictionary& dict2 -) -{ - dictionary sum(dict1); - sum += dict2; - return sum; -} - - -Foam::dictionary Foam::operator| -( - const dictionary& dict1, - const dictionary& dict2 -) -{ - dictionary sum(dict1); - sum |= dict2; - return sum; -} - - -// ************************************************************************* // diff --git a/src/OpenFOAM/db/dictionary/#dictionary.H# b/src/OpenFOAM/db/dictionary/#dictionary.H# deleted file mode 100644 index 0db0ca9a02..0000000000 --- a/src/OpenFOAM/db/dictionary/#dictionary.H# +++ /dev/null @@ -1,539 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::dictionary - -Description - A dictionary is a list of keyword definitions. A keyword definition - consists of a keyword followed by any number of values - (e.g. words and numbers). Dictionary is the base class for IOdictionary - It serves the purpose of a bootstrap dictionary for the objectRegistry data - dictionaries, since unlike the IOdictionary class, it does not use a - objectRegistry itself to work. - -SourceFiles - dictionary.C - dictionaryIO.C - -\*---------------------------------------------------------------------------*/ - -#ifndef dictionary_H -#define dictionary_H - -#include "entry;;############################################################ -;; Misc Setting -;;############################################################ -(require 'ido) -(ido-mode t) -;;(load "fold-dwim") -(desktop-save-mode 1) -(global-font-lock-mode 1) -(setq font-lock-maximum-decoration t) -(setq font-lock-global-modes '(not text-mode)) -(setq font-lock-verbose t) -(setq ring-bell-function 'ignore) -;; Make scripts executable on Save(saves having to do the chmod every time) -;;(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) - -(setq comint-process-echoes t) -(setq version-control 'never) -(setq dired-recursive-deletes t) -(tool-bar-mode -1) -(blink-cursor-mode -1) -(show-paren-mode 1) -(fset 'yes-or-no-p 'y-or-n-p) -(setq suggest-key-bindings 1) -(setq inhibit-startup-message t) -(setq default-directory "e:\\gnuhome") -;;(setq debug-on-error t) -(auto-image-file-mode t) -(setq default-major-mode 'text-mode) - -;; display timer -(setq display-time-24hr-format t) -(setq display-time-day-and-date t) -(display-time) - -;; enhanced change buffer -(iswitchb-mode t) -;; support compressed file -;;(auto-compression-mode t) - -(setq enable-recursive-minibuffers t) - -(setq make-backup-file nil) -(setq bookmark-save-flag 1) -(setq colon-double-space t) -(put 'narrow-to-page 'disabled nil) - - -;;(autoload 'ruby-mode "ruby-mode" -;; "Mode for editing ruby source files" t) -;;(add-hook 'ruby-mode-hook 'turn-on-font-lock) - -;;add directory including the subdirectories to load-path -(if (fboundp 'normal-top-level-add-subdirs-to-load-path) - (let* ((my-lisp-dir "~/misctools/emacs") - (default-directory my-lisp-dir)) - (setq load-path (cons my-lisp-dir load-path)) - (normal-top-level-add-subdirs-to-load-path))) -;;(setq load-path -;; (append -;; (list -;; "~/misctools/emacs" -;; "~/misctools/emacs/icicles" -;; "~/misctools/emacs/init") -;; load-path)) - - -(autoload 'css-mode "css-mode" "Mode for editing CSS files" t) -(autoload 'nxml-mode "nxml-mode" "Mode for editing xml, xhtml files" t) -(setq auto-mode-alist - (cons '("\\.\\(xml\\|xsl\\|xul\\|rng\\|rhtml\\|xhtml\\)\\'" . nxml-mode) - auto-mode-alist)) -(setq auto-mode-alist - (append '(("\\.wiki$" . muse-mode) - ("\\.css$" . css-mode) - ("\\.yml$" . conf-mode) - ("Rakefile$" . ruby-mode) - ("\\.rb$" . ruby-mode)) auto-mode-alist)) - - -;;TABBAR MODE -(require 'tabbar) -(tabbar-mode t) -;(global-set-key (kdb "") 'tabbar-forward-group) -;(global-set-key (kdb "") 'tabbar-backward-group) -(global-set-key [(control tab)] 'tabbar-forward) -(global-set-key [(control shift tab)] 'tabbar-backward) - -;;###################################################################### -;; Mail Account of 126.com -;;###################################################################### -(setq user-full-name "Eric Luo") -(setq user-mail-address "eric.python@126.com") - -(setq send-mail-function 'smtpmail-send-it) -(setq smtpmail-default-smtp-server "smtp.126.com") -(setq smtpmail-smtp-server "smtp.126.com") -(setq smtpmail-debug-info t) -(setq smtpmail-auth-credentials - '(("smtp.126.com" 25 "eric.python" "123659"))) - -;;################################################################################ -;; Emacs SQL Setting -;;################################################################################ -;; emacs -;; Make mysql not buffer sending stuff to the emacs-subprocess-pipes -;; -n unbuffered -B batch(tab separated) -;; -f force(go on after error) -i ignore spaces -q no caching -t table format -(setq-default sql-mysql-options (quote ("-n" "-B" "-f" "-i" "-q" "-t"))) -;; For Oracle -(setq-default sql-oracle-options (quote ("eric/snow327@test3_localhost"))) -;(setq-default sql-password "cyberdb") - -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(blink-cursor-mode nil nil (frame)) - '(canlock-password "fb2167920638cf95c5b386459649c6e2f5ab4875") - '(cua-mode nil) - '(emacsw32-max-frames t) - '(emacsw32-mode nil nil (emacsw32)) - '(emacsw32-style-frame-title t) - '(nxml-slash-auto-complete-flag t) - '(ps-paper-type nil nil nil "Added by setup-helper") - '(show-paren-mode t nil (paren)) - '(transient-mark-mode nil)) -(custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - ) - -;;###################################################################### -;; Muse mode -;;###################################################################### -(require 'psvn) - -(load "ruby-config") -(load "muse-config") -(load "textile-config") -(load "misc-config") -(load "macro-config") -(load "gnus-config") -(load "nxml-config") - -(eval-after-load "dired" '(require 'dired+)) -(eval-after-load "dired-x" '(require 'dired+)) - -(require 'icicles) -(icicle-mode 1) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; BEGIN CHINESE SETTING -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(setq font-encoding-alist - (cons '("gb2312.1980" . chinese-gbk) font-encoding-alist)) -(create-fontset-from-fontset-spec - "-*-Courier New-normal-r-*-*-16-*-*-*-c-*-fontset-chinese, - chinese-gb2312:-outline-ËÎÌå-normal-r-normal-normal-*-*-96-96-p-*-gb2312.1980-0" t) - -(setq default-frame-alist - (append - '((font . "fontset-chinese")) - default-frame-alist)) -(set-language-environment 'Chinese-GB) -(prefer-coding-system 'chinese-gbk-dos) -(set-keyboard-coding-system 'chinese-gbk-dos) -(set-clipboard-coding-system 'chinese-gbk-dos) -(set-terminal-coding-system 'chinese-gbk-dos) -(set-buffer-file-coding-system 'chinese-gbk-dos) -(set-selection-coding-system 'chinese-gbk-dos) -;;(modify-coding-system-alist 'process "*" 'chinese-gbk-dos) -(setq default-process-coding-system - '(chinese-gbk-dos . chinese-gbk-dos)) -(setq-default pathname-coding-system 'chinese-gbk-dos) -;;; end of chinese input configuration -;;; END CHINESE SETTING, - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Begin Rails Setting -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; -;;(require 'mmm-mode) -;;(require 'mmm-auto) -;;(setq mmm-global-mode 'maybe) -;;(setq mmm-submode-decoration-level 2) -;;(set-face-background 'mmm-output-submode-face "LightGrey") -;;(set-face-background 'mmm-code-submode-face "MediumSlateBlue") -;;(set-face-background 'mmm-comment-submode-face "DarkOliveGreen") -;;(mmm-add-classes -;; '((erb-code -;; :submode ruby-mode -;; :match-face (("<%#" . mmm-comment-submode-face) -;; ("<%=" . mmm-output-submode-face) -;; ("<%" . mmm-code-submode-face)) -;; :front "<%[#=]?" -;; :back "%>" -;; :insert ((?% erb-code nil @ "<%" @ " " _ " " @ "%>" @) -;; (?# erb-comment nil @ "<%#" @ " " _ " " @ "%>" @) -;; (?= erb-expression nil @ "<%=" @ " " _ " " @ "%>" @)) -;; ))) -;;(add-hook 'nxml-mode-hook -;; (lambda () -;; (setq mmm-classes '(erb-code)) -;; (mmm-mode-on))) -;;;;(add-to-list 'auto-mode-alist '("\\.rhtml$" . html-mode)) -;;(global-set-key [f8] 'mmm-parse-buffer) -;; - -;;;;(setq transient-mark-mode nil) -;;(put 'narrow-to-region 'disabled nil).H" -#include "IDLList.H" -#include "fileName.H" -#include "ITstream.H" -#include "HashTable.H" -#include "wordList.H" -#include "className.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// Forward declaration of friend functions and operators - -class dictionary; -Istream& operator>>(Istream&, dictionary&); -Ostream& operator<<(Ostream&, const dictionary&); - - -/*---------------------------------------------------------------------------*\ - Class dictionary Declaration -\*---------------------------------------------------------------------------*/ - -class dictionary -: - public IDLList -{ - // Private data - - //- Dictionary name - fileName name_; - - //- HashTable of the enries held on the DL-list for quick lookup - HashTable hashedEntries_; - - //- Parent dictionary - const dictionary& parent_; - -public: - - //- Read dictionary from Istream - bool read(Istream&); - - //- Substitute the given keyword prepended by '$' with the - // corresponding sub-dictionary entries - bool substituteKeyword(const word& keyword); - - -public: - - //- Declare friendship with the entry class for IO - friend class entry; - - - // Declare name of the class and it's debug switch - ClassName("dictionary"); - - - //- Null dictionary - static const dictionary null; - - - // Constructors - - //- Construct top-level dictionary null - dictionary(); - - //- Construct from the parent dictionary and Istream, reading entries - // until lastEntry or EOF - dictionary - ( - const dictionary& parentDict, - Istream& - ); - - //- Construct top-level dictionary from Istream, reading entries - // until EOF - dictionary(Istream&); - - //- Construct as copy given the parent dictionary - dictionary(const dictionary& parentDict, const dictionary& dict); - - //- Construct top-level dictionary as copy - dictionary(const dictionary& dict); - - //- Construct and return clone - Foam::autoPtr clone() const; - - //- Construct top-level dictionary on freestore from Istream - static Foam::autoPtr New(Istream& is); - - - // Destructor - - ~dictionary(); - - - // Member functions - - //- Return the dictionary name - const fileName& name() const - { - return name_; - } - - //- Return the dictionary name - fileName& name() - { - return name_; - } - - //- Return the parent dictionary - const dictionary& parent() const - { - return parent_; - } - - //- Return line number of first token in dictionary - label startLineNumber() const; - - //- Return line number of last token in dictionary - label endLineNumber() const; - - - // Search and lookup - - //- Search dictionary for given keyword - // If recusive search parent dictionaries - bool found(const word& keyword, bool recusive=false) const; - - //- Find and return an entry data stream pointer if present - // otherwise return NULL. - // If recusive search parent dictionaries - const entry* lookupEntryPtr(const word&, bool recusive=false) const; - - //- Find and return an entry data stream if present otherwise error. - // If recusive search parent dictionaries - const entry& lookupEntry(const word&, bool recusive=false) const; - - //- Find and return an entry data stream - // If recusive search parent dictionaries - ITstream& lookup(const word&, bool recusive=false) const; - - //- Find and return a T, if not found return the given default value - // If recusive search parent dictionaries - template - T lookupOrDefault(const word&, const T&, bool recusive=false) const; - - //- Check if entry is a sub-dictionary - bool isDict(const word&) const; - - //- Find and return a sub-dictionary pointer if present - // otherwise return NULL. - const dictionary* subDictPtr(const word&) const; - - //- Find and return a sub-dictionary - const dictionary& subDict(const word&) const; - - //- Return the table of contents - wordList toc() const; - - - // Editing - - //- Add a new entry - bool add(entry*, bool mergeEntry = false); - - //- Add an entry - void add(const entry&); - - //- Add a token entry - void add(const word& keyword, const token&); - - //- Add a word entry - void add(const word& keyword, const word&); - - //- Add a string entry - void add(const word& keyword, const string&); - - //- Add a label entry - void add(const word& keyword, const label); - - //- Add a scalar entry - void add(const word& keyword, const scalar); - - //- Add an entry constructed from a ITstream - void add(const word& keyword, const ITstream&); - - //- Add an entry constructed from a tokenList - void add(const word& keyword, const tokenList& tokens); - - //- Add a T entry - template - void add(const word& keyword, const T&); - - //- Add a dictionary entry - void add(const word& keyword, const dictionary&); - - //- Remove an entry specified by keyword - bool remove(const word& keyword); - - //- Change the keyword for an entry, - // optionally forcing overwrite of an existing entry - bool changeKeyword - ( - const word& oldKeyword, - const word& newKeyword, - bool forceOverwrite = false - ); - - //- Merge entries from the given dictionary. - // Also merge sub-dictionaries as required. - bool merge(const dictionary&); - - //- Clear the dictionary - void clear(); - - - // Write - - void write(Ostream& os, bool subDict = true) const; - - - // Member Operators - - //- Find and return entry - ITstream& operator[](const word&) const; - - void operator=(const dictionary&); - - //- Include entries from the given dictionary. - // Warn, but do not overwrite existing entries - void operator+=(const dictionary&); - - //- Conditionally include entries from the given dictionary. - // Do not overwrite existing entries. - void operator|=(const dictionary&); - - //- Unconditionally include entries from the given dictionary. - // Overwrite existing entries. - void operator<<=(const dictionary&); - - - // IOstream operators - - //- Read dictionary from Istream - friend Istream& operator>>(Istream&, dictionary&); - - //- Write dictionary to Ostream - friend Ostream& operator<<(Ostream&, const dictionary&); -}; - - -// Global Operators - -// Combine dictionaries starting from the entries in dict one and then including -// those from dict2. -// Warn, but do not overwrite the entries from dict1. -dictionary operator+(const dictionary& dict1, const dictionary& dict2); - -// Combine dictionaries starting from the entries in dict one and then including -// those from dict2. -// Do not overwrite the entries from dict1. -dictionary operator|(const dictionary& dict1, const dictionary& dict2); - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository -# include "dictionaryTemplates.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/OpenFOAM/meshes/meshShapes/edge/edge.H b/src/OpenFOAM/meshes/meshShapes/edge/edge.H index d0d64ee155..ccef92bf41 100644 --- a/src/OpenFOAM/meshes/meshShapes/edge/edge.H +++ b/src/OpenFOAM/meshes/meshShapes/edge/edge.H @@ -77,6 +77,9 @@ public: //- Construct from components inline edge(const label a, const label b); + //- Construct from FixedList + inline edge(const FixedList&); + //- Construct from Istream inline edge(Istream&); diff --git a/src/OpenFOAM/meshes/meshShapes/edge/edgeI.H b/src/OpenFOAM/meshes/meshShapes/edge/edgeI.H index c2ecf2aed2..8aa88ebe78 100644 --- a/src/OpenFOAM/meshes/meshShapes/edge/edgeI.H +++ b/src/OpenFOAM/meshes/meshShapes/edge/edgeI.H @@ -39,6 +39,13 @@ inline Foam::edge::edge(const label a, const label b) } +inline Foam::edge::edge(const FixedList& a) +{ + start() = a[0]; + end() = a[1]; +} + + inline Foam::edge::edge(Istream& is) : FixedList(is) diff --git a/src/meshTools/octree/treeBoundBox.C b/src/meshTools/octree/treeBoundBox.C index 8d91899753..662570c565 100644 --- a/src/meshTools/octree/treeBoundBox.C +++ b/src/meshTools/octree/treeBoundBox.C @@ -22,13 +22,10 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - \*---------------------------------------------------------------------------*/ -#include "error.H" #include "treeBoundBox.H" -#include "point.H" +#include "ListOps.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -44,31 +41,36 @@ const treeBoundBox treeBoundBox::greatBox ); -const faceList treeBoundBox::faces -( - Foam::IStringStream - ( - "6(" - "4(0 4 6 2)" // left - "4(1 3 7 5)" // right - "4(0 1 5 4)" // bottom - "4(2 6 7 3)" // top - "4(0 2 3 1)" // back - "4(4 5 7 6)" // front - ")" - )() -); +const label facesArray[6][4] = +{ + {0, 4, 6, 2}, // left + {1, 3, 7, 5}, // right + {0, 1, 5, 4}, // bottom + {2, 6, 7, 3}, // top + {0, 2, 3, 1}, // back + {4, 5, 7, 6} // front +}; +const faceList treeBoundBox::faces(initListList(facesArray)); +const label edgesArray[12][2] = +{ + {0, 1}, //0 + {1, 3}, + {2, 3}, //2 + {0, 2}, + {4, 5}, //4 + {5, 7}, + {6, 7}, //6 + {4, 6}, + {0, 4}, //8 + {1, 5}, + {3, 7}, //10 + {2, 6} +}; const edgeList treeBoundBox::edges ( - //treeBoundBox::edges() - Foam::IStringStream - ( - //(E01)(E13)(E23)(E02)(E45)(E57)(E67)(E46)(E04)(E15)(E37)(E26) - // 0 1 2 3 4 5 6 7 8 9 10 11 - "12((0 1)(1 3)(2 3)(0 2)(4 5)(5 7)(6 7)(4 6)(0 4)(1 5)(3 7)(2 6))" - )() + initListList(edgesArray) );