| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 
							- /*============================================================================
 
-   CMake - Cross Platform Makefile Generator
 
-   Copyright 2012 Stephen Kelly <[email protected]>
 
-   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 cmGeneratorExpressionEvaluator_h
 
- #define cmGeneratorExpressionEvaluator_h
 
- #include <vector>
 
- #include <string>
 
- #include "cmListFileCache.h"
 
- class cmTarget;
 
- class cmGeneratorTarget;
 
- //----------------------------------------------------------------------------
 
- struct cmGeneratorExpressionContext
 
- {
 
-   cmListFileBacktrace Backtrace;
 
-   std::set<cmTarget*> Targets;
 
-   cmMakefile *Makefile;
 
-   const char *Config;
 
-   cmGeneratorTarget *Target;
 
-   bool Quiet;
 
-   bool HadError;
 
- };
 
- struct cmGeneratorExpressionDAGChecker;
 
- //----------------------------------------------------------------------------
 
- struct cmGeneratorExpressionEvaluator
 
- {
 
-   cmGeneratorExpressionEvaluator() {}
 
-   virtual ~cmGeneratorExpressionEvaluator() {}
 
-   enum Type
 
-   {
 
-     Text,
 
-     Generator
 
-   };
 
-   virtual Type GetType() const = 0;
 
-   virtual std::string Evaluate(cmGeneratorExpressionContext *context,
 
-                               cmGeneratorExpressionDAGChecker *) const = 0;
 
- private:
 
-   cmGeneratorExpressionEvaluator(const cmGeneratorExpressionEvaluator &);
 
-   void operator=(const cmGeneratorExpressionEvaluator &);
 
- };
 
- struct TextContent : public cmGeneratorExpressionEvaluator
 
- {
 
-   TextContent(const char *start, unsigned int length)
 
-     : Content(start), Length(length)
 
-   {
 
-   }
 
-   std::string Evaluate(cmGeneratorExpressionContext *,
 
-                        cmGeneratorExpressionDAGChecker *) const
 
-   {
 
-     return std::string(this->Content, this->Length);
 
-   }
 
-   Type GetType() const
 
-   {
 
-     return cmGeneratorExpressionEvaluator::Text;
 
-   }
 
-   void Extend(unsigned int length)
 
-   {
 
-     this->Length += length;
 
-   }
 
-   unsigned int GetLength()
 
-   {
 
-     return this->Length;
 
-   }
 
- private:
 
-   const char *Content;
 
-   unsigned int Length;
 
- };
 
- //----------------------------------------------------------------------------
 
- struct GeneratorExpressionContent : public cmGeneratorExpressionEvaluator
 
- {
 
-   GeneratorExpressionContent(const char *startContent, unsigned int length);
 
-   void SetIdentifier(std::vector<cmGeneratorExpressionEvaluator*> identifier)
 
-   {
 
-     this->IdentifierChildren = identifier;
 
-   }
 
-   void SetParameters(
 
-         std::vector<std::vector<cmGeneratorExpressionEvaluator*> > parameters)
 
-   {
 
-     this->ParamChildren = parameters;
 
-   }
 
-   Type GetType() const
 
-   {
 
-     return cmGeneratorExpressionEvaluator::Generator;
 
-   }
 
-   std::string Evaluate(cmGeneratorExpressionContext *context,
 
-                        cmGeneratorExpressionDAGChecker *) const;
 
-   std::string GetOriginalExpression() const;
 
-   ~GeneratorExpressionContent();
 
- private:
 
-   std::vector<cmGeneratorExpressionEvaluator*> IdentifierChildren;
 
-   std::vector<std::vector<cmGeneratorExpressionEvaluator*> > ParamChildren;
 
-   const char *StartContent;
 
-   unsigned int ContentLength;
 
- };
 
- #endif
 
 
  |