X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetcommandparams.h;h=ae6876ba834f180e86ea6628411eb001986e0906;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=90bb0eb56ae4a64564225948a960c60c6dc6755c;hpb=f849bc4a629e15389f629fd4f187790bb68db464;p=lyx.git diff --git a/src/insets/insetcommandparams.h b/src/insets/insetcommandparams.h index 90bb0eb56a..ae6876ba83 100644 --- a/src/insets/insetcommandparams.h +++ b/src/insets/insetcommandparams.h @@ -1,73 +1,108 @@ // -*- C++ -*- -/* This file is part of* - * ====================================================== +/** + * \file insetcommandparams.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * LyX, The Document Processor + * \author Angus Leeming + * \author Georg Baum * - * Copyright 2002-2001 The LyX Team. - * - * ====================================================== */ + * Full author contact details are available in file CREDITS. + */ #ifndef INSETCOMMANDPARAMS_H #define INSETCOMMANDPARAMS_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "support/docstring.h" -#include +#include +#include -#include "LString.h" -#include +namespace lyx { class LyXLex; class InsetCommandParams { public: - /// - InsetCommandParams(); - /// - explicit - InsetCommandParams(string const & n, - string const & c = string(), - string const & o = string()); - /// - bool operator==(InsetCommandParams const &) const; - /// - bool operator!=(InsetCommandParams const &) const; + /// Construct parameters for command \p name. \p name must be known. + explicit InsetCommandParams(std::string const & name); /// void read(LyXLex &); /// Parse the command - void scanCommand(string const &); + /// FIXME remove + void scanCommand(std::string const &); /// void write(std::ostream &) const; /// Build the complete LaTeX command - string const getCommand() const; - /// - string const & getCmdName() const { return cmdname; } - /// - string const & getOptions() const { return options; } - /// - string const & getContents() const { return contents; } - /// - void setCmdName(string const & n) { cmdname = n; } - /// - void setOptions(string const & o) { options = o; } - /// - void setContents(string const & c) { contents = c; } - /// - string const getAsString() const; - /// - void setFromString(string const &); + docstring const getCommand() const; + /// Return the command name + std::string const & getCmdName() const { return name_; } + /// FIXME remove + std::string const getOptions() const; + /// FIXME remove + std::string const getSecOptions() const; + /// FIXME remove + std::string const getContents() const; + /// Set the name to \p n. This must be a known name. All parameters + /// are cleared except those that exist also in the new command. + /// What matters here is the parameter name, not position. + void setCmdName(std::string const & n); + /// FIXME remove + void setOptions(std::string const &); + /// FIXME remove + void setSecOptions(std::string const &); + /// FIXME remove + void setContents(std::string const &); + /// get parameter \p name + docstring const & operator[](std::string const & name) const; + /// set parameter \p name + docstring & operator[](std::string const & name); + /// + bool preview() const { return preview_; } + /// + void preview(bool p) { preview_ = p; } + /// Clear the values of all parameters + void clear(); + private: /// - string cmdname; - /// - string contents; - /// - string options; + struct CommandInfo { + /// Number of parameters + size_t n; + /// Parameter names. paramnames[n] must be "". + char const * const * paramnames; + /// Tells whether a parameter is optional + bool const * optional; + }; + /// Get information for command \p name. + /// Returns 0 if the command is not known. + static CommandInfo const * findInfo(std::string const & name); + /// Description of all command properties + CommandInfo const * info_; + /// The name of this command as it appears in .lyx and .tex files + std::string name_; + /// + typedef std::vector ParamVector; + /// The parameters (both optional and required ones). The order is + /// the same that is required for LaTeX output. The size of params_ + /// is always info_->n. + ParamVector params_; + /// + bool preview_; + /// + friend bool operator==(InsetCommandParams const &, + InsetCommandParams const &); }; +/// +bool operator==(InsetCommandParams const &, InsetCommandParams const &); + +/// +bool operator!=(InsetCommandParams const &, InsetCommandParams const &); + + +} // namespace lyx + #endif