summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorExpression.h
blob: fdf45a1938783ab62864346f6c8a6ae67f043498 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*============================================================================
  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 cmGeneratorExpression_h
#define cmGeneratorExpression_h

#include "cmStandardIncludes.h"

#include <stack>

#include <cmsys/RegularExpression.hxx>

class cmTarget;
class cmGeneratorTarget;
class cmMakefile;
class cmListFileBacktrace;

struct cmGeneratorExpressionEvaluator;

class cmCompiledGeneratorExpression;

/** \class cmGeneratorExpression
 * \brief Evaluate generate-time query expression syntax.
 *
 * cmGeneratorExpression instances are used by build system generator
 * implementations to evaluate the $<> generator expression syntax.
 * Generator expressions are evaluated just before the generate step
 * writes strings into the build system.  They have knowledge of the
 * build configuration which is not available at configure time.
 */
class cmGeneratorExpression
{
public:
  /** Construct. */
  cmGeneratorExpression(cmListFileBacktrace const& backtrace);
  ~cmGeneratorExpression();

  const cmCompiledGeneratorExpression& Parse(std::string const& input);
  const cmCompiledGeneratorExpression& Parse(const char* input);

private:
  cmGeneratorExpression(const cmGeneratorExpression &);
  void operator=(const cmGeneratorExpression &);

  cmListFileBacktrace const& Backtrace;
  cmCompiledGeneratorExpression *CompiledExpression;
};

class cmCompiledGeneratorExpression
{
public:
  const char* Evaluate(cmMakefile* mf, const char* config,
                       bool quiet = false,
                       cmGeneratorTarget *target = 0) const;

  /** Get set of targets found during evaluations.  */
  std::set<cmTarget*> const& GetTargets() const
    { return this->Targets; }

  ~cmCompiledGeneratorExpression();

private:
  cmCompiledGeneratorExpression(cmListFileBacktrace const& backtrace,
              const std::vector<cmGeneratorExpressionEvaluator*> &evaluators,
              const char *input, bool needsParsing);

  friend class cmGeneratorExpression;

  cmCompiledGeneratorExpression(const cmCompiledGeneratorExpression &);
  void operator=(const cmCompiledGeneratorExpression &);

  cmListFileBacktrace const& Backtrace;
  const std::vector<cmGeneratorExpressionEvaluator*> Evaluators;
  const char* const Input;
  const bool NeedsParsing;

  mutable std::set<cmTarget*> Targets;
  mutable std::string Output;
};

#endif
.c?h=hdf5_1_13_3'>statsplain -rw-r--r--H5Aint.c109977logstatsplain -rw-r--r--H5Amodule.h19746logstatsplain -rw-r--r--H5Apkg.h13505logstatsplain -rw-r--r--H5Aprivate.h3483logstatsplain -rw-r--r--H5Apublic.h48019logstatsplain -rw-r--r--H5Atest.c4845logstatsplain -rw-r--r--H5B.c81806logstatsplain -rw-r--r--H5B2.c62923logstatsplain -rw-r--r--H5B2cache.c49080logstatsplain -rw-r--r--H5B2dbg.c13439logstatsplain -rw-r--r--H5B2hdr.c24945logstatsplain -rw-r--r--H5B2int.c96258logstatsplain -rw-r--r--H5B2internal.c64471logstatsplain -rw-r--r--H5B2leaf.c40969logstatsplain -rw-r--r--H5B2module.h1375logstatsplain -rw-r--r--H5B2pkg.h25912logstatsplain -rw-r--r--H5B2private.h8055logstatsplain -rw-r--r--H5B2stat.c4069logstatsplain -rw-r--r--H5B2test.c21540logstatsplain -rw-r--r--H5Bcache.c13198logstatsplain -rw-r--r--H5Bdbg.c10529logstatsplain -rw-r--r--H5Bmodule.h1368logstatsplain -rw-r--r--H5Bpkg.h3623logstatsplain -rw-r--r--H5Bprivate.h7503logstatsplain -rw-r--r--H5C.c358981logstatsplain -rw-r--r--H5CS.c10472logstatsplain -rw-r--r--H5CSprivate.h1484logstatsplain -rw-r--r--H5CX.c142624logstatsplain -rw-r--r--H5CXmodule.h1374logstatsplain -rw-r--r--H5CXprivate.h8637logstatsplain -rw-r--r--H5Cdbg.c48621logstatsplain -rw-r--r--H5Cepoch.c8919logstatsplain -rw-r--r--H5Cimage.c139744logstatsplain -rw-r--r--H5Clog.c30140logstatsplain -rw-r--r--H5Clog.h8634logstatsplain -rw-r--r--H5Clog_json.c43670logstatsplain -rw-r--r--H5Clog_trace.c37142logstatsplain -rw-r--r--H5Cmodule.h1368logstatsplain -rw-r--r--H5Cmpio.c60471logstatsplain -rw-r--r--H5Cpkg.h287160logstatsplain -rw-r--r--H5Cprefetched.c13091logstatsplain -rw-r--r--H5Cprivate.h107435logstatsplain -rw-r--r--H5Cpublic.h2319logstatsplain -rw-r--r--H5Cquery.c14039logstatsplain -rw-r--r--H5Ctag.c30553logstatsplain -rw-r--r--H5Ctest.c5566logstatsplain -rw-r--r--H5D.c113404logstatsplain -rw-r--r--H5Dbtree.c54203logstatsplain -rw-r--r--H5Dbtree2.c55605logstatsplain -rw-r--r--H5Dchunk.c373258logstatsplain -rw-r--r--H5Dcompact.c28491logstatsplain -rw-r--r--H5Dcontig.c81778logstatsplain -rw-r--r--H5Ddbg.c3097logstatsplain -rw-r--r--H5Ddeprec.c14454logstatsplain -rw-r--r--H5Dearray.c67042logstatsplain -rw-r--r--H5Defl.c22249logstatsplain -rw-r--r--H5Dfarray.c59604logstatsplain -rw-r--r--H5Dfill.c28402logstatsplain -rw-r--r--H5Dint.c174736logstatsplain -rw-r--r--H5Dio.c61836logstatsplain -rw-r--r--H5Dlayout.c29057logstatsplain -rw-r--r--H5Dmodule.h119745logstatsplain -rw-r--r--H5Dmpio.c274060logstatsplain -rw-r--r--H5Dnone.c16304logstatsplain -rw-r--r--H5Doh.c16672logstatsplain -rw-r--r--H5Dpkg.h44539logstatsplain -rw-r--r--H5Dprivate.h10141logstatsplain -rw-r--r--H5Dpublic.h77931logstatsplain -rw-r--r--H5Dscatgath.c40770logstatsplain -rw-r--r--H5Dselect.c23056logstatsplain -rw-r--r--H5Dsingle.c18002logstatsplain -rw-r--r--H5Dtest.c10038logstatsplain -rw-r--r--H5Dvirtual.c154226logstatsplain -rw-r--r--H5E.c63305logstatsplain -rw-r--r--H5EA.c42130logstatsplain -rw-r--r--H5EAcache.c87232logstatsplain -rw-r--r--H5EAdbg.c19447logstatsplain -rw-r--r--H5EAdblkpage.c12311logstatsplain -rw-r--r--H5EAdblock.c17499logstatsplain -rw-r--r--H5EAhdr.c29830logstatsplain -rw-r--r--H5EAiblock.c18884logstatsplain -rw-r--r--H5EAint.c4031logstatsplain -rw-r--r--H5EAmodule.h1376logstatsplain -rw-r--r--H5EApkg.h27386logstatsplain -rw-r--r--H5EAprivate.h7118logstatsplain -rw-r--r--H5EAsblock.c16798logstatsplain -rw-r--r--H5EAstat.c2864logstatsplain -rw-r--r--H5EAtest.c15145logstatsplain -rw-r--r--H5ES.c24055logstatsplain -rw-r--r--H5ESdevelop.h1711logstatsplain -rw-r--r--H5ESevent.c6097logstatsplain -rw-r--r--H5ESint.c37805logstatsplain -rw-r--r--H5ESlist.c6409logstatsplain -rw-r--r--H5ESmodule.h5579logstatsplain -rw-r--r--H5ESpkg.h4464logstatsplain -rw-r--r--H5ESprivate.h2101logstatsplain -rw-r--r--H5ESpublic.h11346logstatsplain -rw-r--r--H5Edefin.h14217logstatsplain -rw-r--r--H5Edeprec.c14717logstatsplain -rw-r--r--H5Einit.h63323logstatsplain -rw-r--r--H5Eint.c34951logstatsplain -rw-r--r--H5Emodule.h26773logstatsplain -rw-r--r--H5Epkg.h5641logstatsplain -rw-r--r--H5Eprivate.h12053logstatsplain -rw-r--r--H5Epubgen.h23433logstatsplain -rw-r--r--H5Epublic.h39703logstatsplain -rw-r--r--H5Eterm.h5497logstatsplain -rw-r--r--H5F.c118007logstatsplain -rw-r--r--H5FA.c28781logstatsplain -rw-r--r--H5FAcache.c48205logstatsplain -rw-r--r--H5FAdbg.c11983logstatsplain -rw-r--r--H5FAdblkpage.c12483logstatsplain -rw-r--r--H5FAdblock.c16919logstatsplain -rw-r--r--H5FAhdr.c18986logstatsplain -rw-r--r--H5FAint.c4074logstatsplain -rw-r--r--H5FAmodule.h1376logstatsplain -rw-r--r--H5FApkg.h16780logstatsplain -rw-r--r--H5FAprivate.h6178logstatsplain -rw-r--r--H5FAstat.c3003logstatsplain -rw-r--r--H5FAtest.c12348logstatsplain -rw-r--r--H5FD.c85445logstatsplain -rw-r--r--H5FDcore.c69012logstatsplain -rw-r--r--H5FDcore.h3998logstatsplain -rw-r--r--H5FDdevelop.h15129logstatsplain -rw-r--r--H5FDdirect.c52974logstatsplain -rw-r--r--H5FDdirect.h4383logstatsplain -rw-r--r--H5FDdrvr_module.h1383logstatsplain -rw-r--r--H5FDfamily.c60277logstatsplain -rw-r--r--H5FDfamily.h3303logstatsplain -rw-r--r--H5FDhdfs.c52300logstatsplain -rw-r--r--H5FDhdfs.h4003logstatsplain -rw-r--r--H5FDint.c102615logstatsplain -rw-r--r--H5FDlog.c69110logstatsplain -rw-r--r--H5FDlog.h14694logstatsplain -rw-r--r--H5FDmirror.c73822logstatsplain -rw-r--r--H5FDmirror.h2953logstatsplain -rw-r--r--H5FDmirror_priv.h13343logstatsplain -rw-r--r--H5FDmodule.h1373logstatsplain -rw-r--r--H5FDmpi.c13165logstatsplain -rw-r--r--H5FDmpi.h2587logstatsplain -rw-r--r--H5FDmpio.c122945logstatsplain -rw-r--r--H5FDmpio.h10238logstatsplain -rw-r--r--H5FDmulti.c82663logstatsplain -rw-r--r--H5FDmulti.h10658logstatsplain -rw-r--r--H5FDonion.c73561logstatsplain -rw-r--r--H5FDonion.h8392logstatsplain -rw-r--r--H5FDonion_header.c8423logstatsplain -rw-r--r--H5FDonion_header.h2315logstatsplain -rw-r--r--H5FDonion_history.c11995logstatsplain -rw-r--r--H5FDonion_history.h2431logstatsplain -rw-r--r--H5FDonion_index.c35768logstatsplain -rw-r--r--H5FDonion_index.h6815logstatsplain -rw-r--r--H5FDonion_priv.h1257logstatsplain -rw-r--r--H5FDperform.c2491logstatsplain -rw-r--r--H5FDpkg.h2264logstatsplain -rw-r--r--H5FDprivate.h11061logstatsplain -rw-r--r--H5FDpublic.h16763logstatsplain -rw-r--r--H5FDros3.c49850logstatsplain -rw-r--r--H5FDros3.h3522logstatsplain -rw-r--r--H5FDs3comms.c98781logstatsplain -rw-r--r--H5FDs3comms.h18062logstatsplain -rw-r--r--H5FDsec2.c41085logstatsplain -rw-r--r--H5FDsec2.h1379logstatsplain -rw-r--r--H5FDspace.c15689logstatsplain -rw-r--r--H5FDsplitter.c62332logstatsplain -rw-r--r--H5FDsplitter.h4057logstatsplain -rw-r--r--H5FDstdio.c43587logstatsplain -rw-r--r--H5FDstdio.h1621logstatsplain d---------H5FDsubfiling556logstatsplain -rw-r--r--H5FDtest.c3452logstatsplain -rw-r--r--H5FDwindows.c2808logstatsplain -rw-r--r--H5FDwindows.h2525logstatsplain -rw-r--r--H5FL.c93123logstatsplain -rw-r--r--H5FLmodule.h1378logstatsplain -rw-r--r--H5FLprivate.h20466logstatsplain -rw-r--r--H5FO.c18788logstatsplain -rw-r--r--H5FOprivate.h2195logstatsplain -rw-r--r--H5FS.c46711logstatsplain -rw-r--r--H5FScache.c61463logstatsplain -rw-r--r--H5FSdbg.c10343logstatsplain -rw-r--r--H5FSint.c4091logstatsplain -rw-r--r--H5FSmodule.h1376logstatsplain -rw-r--r--H5FSpkg.h12997logstatsplain -rw-r--r--H5FSprivate.h13787logstatsplain -rw-r--r--H5FSsection.c104834logstatsplain -rw-r--r--H5FSstat.c3027logstatsplain -rw-r--r--H5FStest.c4437logstatsplain -rw-r--r--H5Faccum.c50224logstatsplain -rw-r--r--H5Fcwfs.c10585logstatsplain -rw-r--r--H5Fdbg.c6960logstatsplain -rw-r--r--H5Fdeprec.c9954logstatsplain -rw-r--r--H5Fefc.c39448logstatsplain -rw-r--r--H5Ffake.c3425logstatsplain -rw-r--r--H5Fint.c168648logstatsplain -rw-r--r--H5Fio.c19001logstatsplain -rw-r--r--H5Fmodule.h56285logstatsplain -rw-r--r--H5Fmount.c24679logstatsplain -rw-r--r--H5Fmpi.c20480logstatsplain -rw-r--r--H5Fpkg.h29380logstatsplain -rw-r--r--H5Fprivate.h65225logstatsplain -rw-r--r--H5Fpublic.h81528logstatsplain -rw-r--r--H5Fquery.c43013logstatsplain -rw-r--r--H5Fsfile.c6732logstatsplain -rw-r--r--H5Fspace.c7084logstatsplain -rw-r--r--H5Fsuper.c82512logstatsplain -rw-r--r--H5Fsuper_cache.c42092logstatsplain -rw-r--r--H5Ftest.c9672logstatsplain -rw-r--r--H5G.c44718logstatsplain -rw-r--r--H5Gbtree2.c17741logstatsplain -rw-r--r--H5Gcache.c11735logstatsplain -rw-r--r--H5Gcompact.c19526logstatsplain -rw-r--r--H5Gdense.c67474logstatsplain -rw-r--r--H5Gdeprec.c52906logstatsplain -rw-r--r--H5Gent.c19433logstatsplain -rw-r--r--H5Gint.c52600logstatsplain -rw-r--r--H5Glink.c19056logstatsplain -rw-r--r--H5Gloc.c36971logstatsplain -rw-r--r--H5Gmodule.h47450logstatsplain -rw-r--r--H5Gname.c44147logstatsplain -rw-r--r--H5Gnode.c58045logstatsplain -rw-r--r--H5Gobj.c48261logstatsplain -rw-r--r--H5Goh.c14589logstatsplain -rw-r--r--H5Gpkg.h24130logstatsplain -rw-r--r--H5Gprivate.h14169logstatsplain -rw-r--r--H5Gpublic.h46737logstatsplain -rw-r--r--H5Groot.c15266logstatsplain -rw-r--r--H5Gstab.c38699logstatsplain -rw-r--r--H5Gtest.c32564logstatsplain -rw-r--r--H5Gtraverse.c36327logstatsplain -rw-r--r--H5HF.c31116logstatsplain -rw-r--r--H5HFbtree2.c36719logstatsplain -rw-r--r--H5HFcache.c145966logstatsplain -rw-r--r--H5HFdbg.c33985logstatsplain -rw-r--r--H5HFdblock.c28576logstatsplain -rw-r--r--H5HFdtable.c11251logstatsplain -rw-r--r--H5HFhdr.c56137logstatsplain -rw-r--r--H5HFhuge.c43595logstatsplain -rw-r--r--H5HFiblock.c78404logstatsplain -rw-r--r--H5HFiter.c19518logstatsplain -rw-r--r--H5HFman.c25933logstatsplain -rw-r--r--H5HFmodule.h1374logstatsplain -rw-r--r--H5HFpkg.h48366logstatsplain -rw-r--r--H5HFprivate.h7112logstatsplain -rw-r--r--H5HFsection.c166953logstatsplain -rw-r--r--H5HFspace.c18704logstatsplain -rw-r--r--H5HFstat.c5834logstatsplain -rw-r--r--H5HFtest.c16053logstatsplain -rw-r--r--H5HFtiny.c11181logstatsplain -rw-r--r--H5HG.c30640logstatsplain -rw-r--r--H5HGcache.c16793logstatsplain -rw-r--r--H5HGdbg.c5651logstatsplain -rw-r--r--H5HGmodule.h1374logstatsplain -rw-r--r--H5HGpkg.h6133logstatsplain -rw-r--r--H5HGprivate.h3082logstatsplain -rw-r--r--H5HGquery.c3822logstatsplain -rw-r--r--H5HL.c39276logstatsplain -rw-r--r--H5HLcache.c34077logstatsplain -rw-r--r--H5HLdbg.c4894logstatsplain -rw-r--r--H5HLdblk.c9345logstatsplain -rw-r--r--H5HLint.c6270logstatsplain -rw-r--r--H5HLmodule.h1374logstatsplain -rw-r--r--H5HLpkg.h6674logstatsplain -rw-r--r--H5HLprfx.c4784logstatsplain -rw-r--r--H5HLprivate.h3154logstatsplain -rw-r--r--H5I.c32503logstatsplain -rw-r--r--H5Idbg.c7062logstatsplain -rw-r--r--H5Idevelop.h6237logstatsplain -rw-r--r--H5Iint.c59121logstatsplain -rw-r--r--H5Imodule.h4027logstatsplain -rw-r--r--H5Ipkg.h4968logstatsplain -rw-r--r--H5Iprivate.h4780logstatsplain -rw-r--r--H5Ipublic.h26793logstatsplain -rw-r--r--H5Itest.c4170logstatsplain -rw-r--r--H5L.c91261logstatsplain -rw-r--r--H5Ldeprec.c28748logstatsplain -rw-r--r--H5Ldevelop.h12942logstatsplain -rw-r--r--H5Lexternal.c15437logstatsplain