| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*============================================================================
- CMake - Cross Platform Makefile Generator
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
- ============================================================================*/
- #ifndef cmListFileCache_h
- #define cmListFileCache_h
- #include "cmStandardIncludes.h"
- #include "cmState.h"
- /** \class cmListFileCache
- * \brief A class to cache list file contents.
- *
- * cmListFileCache is a class used to cache the contents of parsed
- * cmake list files.
- */
- class cmMakefile;
- struct cmCommandContext
- {
- std::string Name;
- long Line;
- cmCommandContext(): Name(), Line(0) {}
- };
- struct cmListFileArgument
- {
- enum Delimiter
- {
- Unquoted,
- Quoted,
- Bracket
- };
- cmListFileArgument(): Value(), Delim(Unquoted), Line(0) {}
- cmListFileArgument(const cmListFileArgument& r)
- : Value(r.Value), Delim(r.Delim), Line(r.Line) {}
- cmListFileArgument(const std::string& v, Delimiter d, long line)
- : Value(v), Delim(d), Line(line) {}
- bool operator == (const cmListFileArgument& r) const
- {
- return (this->Value == r.Value) && (this->Delim == r.Delim);
- }
- bool operator != (const cmListFileArgument& r) const
- {
- return !(*this == r);
- }
- std::string Value;
- Delimiter Delim;
- long Line;
- };
- struct cmListFileContext
- {
- std::string Name;
- std::string FilePath;
- long Line;
- cmListFileContext(): Name(), FilePath(), Line(0) {}
- static cmListFileContext FromCommandContext(cmCommandContext const& lfcc,
- std::string const& fileName)
- {
- cmListFileContext lfc;
- lfc.FilePath = fileName;
- lfc.Line = lfcc.Line;
- lfc.Name = lfcc.Name;
- return lfc;
- }
- };
- std::ostream& operator<<(std::ostream&, cmListFileContext const&);
- bool operator<(const cmListFileContext& lhs, const cmListFileContext& rhs);
- bool operator==(cmListFileContext const& lhs, cmListFileContext const& rhs);
- bool operator!=(cmListFileContext const& lhs, cmListFileContext const& rhs);
- struct cmListFileFunction: public cmCommandContext
- {
- std::vector<cmListFileArgument> Arguments;
- };
- class cmListFileBacktrace
- {
- public:
- cmListFileBacktrace(cmState::Snapshot snapshot = cmState::Snapshot(),
- cmCommandContext const& cc = cmCommandContext());
- ~cmListFileBacktrace();
- void PrintTitle(std::ostream& out) const;
- void PrintCallStack(std::ostream& out) const;
- private:
- cmCommandContext Context;
- cmState::Snapshot Snapshot;
- };
- struct cmListFile
- {
- bool ParseFile(const char* path,
- bool topLevel,
- cmMakefile *mf);
- std::vector<cmListFileFunction> Functions;
- };
- #endif
|