+++ /dev/null
-/************************************************************************
- ************************************************************************
- FAUST compiler
- Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale
- ---------------------------------------------------------------------
- This program 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.
-
- This program 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 this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- ************************************************************************
- ************************************************************************/
-
-
-#include <iostream>
-#include <fstream>
-#include <set>
-#include <time.h>
-#include <cstdlib>
-#include <errno.h>
-
-#include "doc_notice.hh"
-#include "doc_lang.hh"
-#include "enrobage.hh"
-#include "compatibility.hh"
-
-
-map<string, bool> gDocNoticeFlagMap;
-
-map<string, string> gDocNoticeStringMap;
-set<string> gDocNoticeKeySet;
-
-extern map<string, string> gDocAutodocStringMap;
-
-extern string gMasterName;
-
-static void initDocNoticeKeySet();
-static void initDocNoticeFlagMap();
-
-
-
-/*****************************************************************************
- Public functions
- *****************************************************************************/
-
-/**
- * Print the content of the notice (a string map),
- * as LaTeX items inside an itemize environment.
- *
- * @remark
- * This function is meant to make it easier to reorder
- * the notice printing by gathering all the items.
- *
- * @param[in] notice The set containing the strings to print as items.
- * @param[in] faustversion The current version of this Faust compiler.
- * @param[out] docout The LaTeX output file to print into.
- */
-void printDocNotice(const string& faustversion, ostream& docout) {
-
- if (! gDocNoticeStringMap.empty() ) {
-
- //cerr << "Documentator : printDocNotice : printing..." << endl;
-
- docout << endl << "\\begin{itemize}" << endl;
-
- /* Presentations. */
- docout << "\t\\item " << gDocAutodocStringMap["autontctext"] << endl;
- if(gDocNoticeFlagMap["faustapply"]) docout << "\t\\item " << gDocNoticeStringMap["faustapply"] << endl;
- if(gDocNoticeFlagMap["faustpresentation"]) docout << "\t\\item " << gDocNoticeStringMap["faustpresentation"] << endl;
- if(gDocNoticeFlagMap["causality"]) docout << "\t\\item " << gDocNoticeStringMap["causality"] << endl;
- if(gDocNoticeFlagMap["blockdiagrams"]) docout << "\t\\item " << gDocNoticeStringMap["blockdiagrams"] << endl;
-
- /* Naming conventions of variables and functions. */
- if(gDocNoticeFlagMap["foreignfun"]) docout << "\t\\item " << gDocNoticeStringMap["foreignfun"] << endl;
- if(gDocNoticeFlagMap["intcast"]) docout << "\t\\item " << gDocNoticeStringMap["intcast"] << endl;
-
- /* Integer arithmetic into a tabular environment. */
- if(gDocNoticeFlagMap["intplus"] ||
- gDocNoticeFlagMap["intminus"] ||
- gDocNoticeFlagMap["intmult"] ||
- gDocNoticeFlagMap["intdiv"] ||
- gDocNoticeFlagMap["intand"] ||
- gDocNoticeFlagMap["intor"] ||
- gDocNoticeFlagMap["intxor"])
- {
- gDocNoticeFlagMap["operators"] = true;
- gDocNoticeFlagMap["optabtitle"] = true;
- gDocNoticeFlagMap["integerops"] = true;
-
- docout << "\t\\item " << endl;
- docout << "\t\t" << gDocNoticeStringMap["operators"] << endl;
- docout << "\t\\begin{center}" << endl;
- docout << "\t\\begin{tabular}{|c|l|l|} " << endl;
- docout << "\t\t\\hline " << endl;
- docout << "\t\t" << gDocNoticeStringMap["optabtitle"] << endl;
- docout << "\t\t\\hline " << endl;
- if(gDocNoticeFlagMap["intplus"]) docout << "\t\t" << gDocNoticeStringMap["intplus"] << endl;
- if(gDocNoticeFlagMap["intminus"]) docout << "\t\t" << gDocNoticeStringMap["intminus"] << endl;
- if(gDocNoticeFlagMap["intmult"]) docout << "\t\t" << gDocNoticeStringMap["intmult"] << endl;
- if(gDocNoticeFlagMap["intdiv"]) docout << "\t\t" << gDocNoticeStringMap["intdiv"] << endl;
- if(gDocNoticeFlagMap["intand"]) docout << "\t\t" << gDocNoticeStringMap["intand"] << endl;
- if(gDocNoticeFlagMap["intor"]) docout << "\t\t" << gDocNoticeStringMap["intor"] << endl;
- if(gDocNoticeFlagMap["intxor"]) docout << "\t\t" << gDocNoticeStringMap["intxor"] << endl;
- docout << "\t\t\\hline " << endl;
- docout << "\t\\end{tabular} " << endl;
- docout << "\t\\end{center}" << endl;
- docout << "\t\t" << gDocNoticeStringMap["integerops"] << endl;
- }
-
- if(gDocNoticeFlagMap["faustdocdir"]) docout << "\t\\item " << gDocNoticeStringMap["faustdocdir"] << endl;
-
- docout << "\\end{itemize}" << endl << endl;
- }
- //cerr << " ... Documentator : printDocNotice : end of printing." << endl;
-}
-
-
-/**
- * Dispatch initialization of notice containers,
- * after default notice file loading.
- *
- * @remark
- * The default (english) notice is already loaded at this stage
- * to ensure that all keywords will receive a definition.
- */
-void initDocNotice()
-{
- initDocNoticeKeySet();
- initDocNoticeFlagMap();
-}
-
-
-
-
-/*****************************************************************************
- Static functions
- *****************************************************************************/
-
-
-/**
- * Initialize gDocNoticeKeySet, a set containing all the keywords.
- */
-static void initDocNoticeKeySet() {
-
- gDocNoticeKeySet.insert("faustpresentation");
- gDocNoticeKeySet.insert("faustapply");
- gDocNoticeKeySet.insert("faustdocdir");
- gDocNoticeKeySet.insert("causality");
- gDocNoticeKeySet.insert("blockdiagrams");
-
- gDocNoticeKeySet.insert("foreignfun");
- gDocNoticeKeySet.insert("intcast");
-
- gDocNoticeKeySet.insert("operators");
- gDocNoticeKeySet.insert("optabtitle");
- gDocNoticeKeySet.insert("integerops");
- gDocNoticeKeySet.insert("intplus");
- gDocNoticeKeySet.insert("intminus");
- gDocNoticeKeySet.insert("intmult");
- gDocNoticeKeySet.insert("intdiv");
- gDocNoticeKeySet.insert("intand");
- gDocNoticeKeySet.insert("intor");
- gDocNoticeKeySet.insert("intxor");
-}
-
-
-/**
- * Initialize gDocNoticeFlagMap, a map containing all the flags.
- */
-static void initDocNoticeFlagMap() {
-
- for (set<string>::iterator it=gDocNoticeKeySet.begin(); it != gDocNoticeKeySet.end() ; ++it ) {
- gDocNoticeFlagMap[*it] = false;
- }
- gDocNoticeFlagMap["faustpresentation"] = true;
- gDocNoticeFlagMap["faustapply"] = true;
- gDocNoticeFlagMap["faustdocdir"] = true;
- gDocNoticeFlagMap["causality"] = true;
- gDocNoticeFlagMap["blockdiagrams"] = true;
-}
-