summaryrefslogtreecommitdiffstats
path: root/Source/cmSourceFile.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmSourceFile.h')
-rw-r--r--Source/cmSourceFile.h89
1 files changed, 31 insertions, 58 deletions
diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h
index 5a3da70..47f31eb 100644
--- a/Source/cmSourceFile.h
+++ b/Source/cmSourceFile.h
@@ -17,11 +17,11 @@
#ifndef cmSourceFile_h
#define cmSourceFile_h
+#include "cmSourceFileLocation.h"
#include "cmCustomCommand.h"
#include "cmPropertyMap.h"
class cmake;
-class cmMakefile;
/** \class cmSourceFile
* \brief Represent a class loaded from a makefile.
@@ -33,67 +33,41 @@ class cmSourceFile
{
public:
/**
- * Construct instance as a concrete class with both a
- * .h and .cxx file.
+ * Construct with the makefile storing the source and the initial
+ * name referencing it.
*/
- cmSourceFile();
- ~cmSourceFile()
- {
- this->SetCustomCommand(0);
- }
-
- /**
- * Set the name of the file, given the directory the file should be
- * in. The various extensions provided are tried on the name
- * (e.g., cxx, cpp) in the directory to find the actual file.
- */
- bool SetName(const char* name, const char* dir,
- const std::vector<std::string>& sourceExts,
- const std::vector<std::string>& headerExts,
- const char* target = 0);
+ cmSourceFile(cmMakefile* mf, const char* name);
+
+ ~cmSourceFile();
/**
* Get the list of the custom commands for this source file
*/
- const cmCustomCommand *GetCustomCommand() const
- {return this->CustomCommand;}
- cmCustomCommand *GetCustomCommand() {return this->CustomCommand;}
+ cmCustomCommand* GetCustomCommand();
+ cmCustomCommand const* GetCustomCommand() const;
void SetCustomCommand(cmCustomCommand *cc);
-
- /**
- * Set the name of the file, given the directory the file should be in. IN
- * this version the extension is provided in the call. This is useful for
- * generated files that do not exist prior to the build.
- */
- void SetName(const char* name, const char* dir, const char *ext,
- bool headerFileOnly);
-
- /**
- * Print the structure to std::cout.
- */
- void Print() const;
///! Set/Get a property of this source file
void SetProperty(const char *prop, const char *value);
const char *GetProperty(const char *prop) const;
bool GetPropertyAsBool(const char *prop) const;
-
+
/**
* The full path to the file.
*/
- const std::string &GetFullPath() const {return this->FullPath;}
+ std::string const& GetFullPath();
+ std::string const& GetFullPath() const;
/**
- * The file name associated with stripped off directory and extension.
- * (In most cases this is the name of the class.)
+ * Get the file extension of this source file.
*/
- const std::string &GetSourceName() const {return this->SourceName;}
+ std::string const& GetExtension() const;
/**
- * The file extension associated with source file
+ * Get the language of the compiler to use for this source file.
*/
- const std::string &GetSourceExtension() const {
- return this->SourceExtension;}
+ const char* GetLanguage();
+ const char* GetLanguage() const;
/**
* Return the vector that holds the list of dependencies
@@ -101,33 +75,32 @@ public:
const std::vector<std::string> &GetDepends() const {return this->Depends;}
void AddDepend(const char* d) { this->Depends.push_back(d); }
- /**
- * Get the source name without last extension
- */
- const std::string& GetSourceNameWithoutLastExtension();
-
// Get the properties
cmPropertyMap &GetProperties() { return this->Properties; };
// Define the properties
static void DefineProperties(cmake *cm);
- ///! Set the cmMakefile that owns this target
- void SetMakefile(cmMakefile *mf);
- cmMakefile *GetMakefile() { return this->Makefile;};
+ /**
+ * Check whether the given source file location could refer to this
+ * source.
+ */
+ bool Matches(cmSourceFileLocation const&);
private:
+ cmSourceFileLocation Location;
cmPropertyMap Properties;
- cmCustomCommand *CustomCommand;
+ cmCustomCommand* CustomCommand;
+ std::string Extension;
+ std::string Language;
std::string FullPath;
- std::string SourceName;
- std::string SourceExtension;
- std::vector<std::string> Depends;
- std::string SourceNameWithoutLastExtension;
+ bool FindFullPathFailed;
- // The cmMakefile instance that owns this source file. This should
- // always be set.
- cmMakefile* Makefile;
+ bool FindFullPath();
+ bool TryFullPath(const char* tryPath, const char* ext);
+ void CheckExtension();
+
+ std::vector<std::string> Depends;
};
#endif