Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Brad King
CMake
Commits
b1cbba68
Commit
b1cbba68
authored
Feb 26, 2014
by
Stephen Kelly
Browse files
cmSourceFileLocation: Make copyable and assignable.
This allows using it in containers and algorithms.
parent
0ed5ce4c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Source/cmSourceFileLocation.cxx
View file @
b1cbba68
...
...
@@ -16,6 +16,42 @@
#include "cmGlobalGenerator.h"
#include "cmSystemTools.h"
#include "assert.h"
//----------------------------------------------------------------------------
cmSourceFileLocation
::
cmSourceFileLocation
()
:
Makefile
(
0
),
AmbiguousDirectory
(
true
),
AmbiguousExtension
(
true
)
{
}
//----------------------------------------------------------------------------
cmSourceFileLocation
::
cmSourceFileLocation
(
const
cmSourceFileLocation
&
loc
)
:
Makefile
(
loc
.
Makefile
)
{
this
->
AmbiguousDirectory
=
loc
.
AmbiguousDirectory
;
this
->
AmbiguousExtension
=
loc
.
AmbiguousExtension
;
this
->
Directory
=
loc
.
Directory
;
this
->
Name
=
loc
.
Name
;
}
//----------------------------------------------------------------------------
cmSourceFileLocation
&
cmSourceFileLocation
::
operator
=
(
const
cmSourceFileLocation
&
loc
)
{
if
(
this
==
&
loc
)
{
return
*
this
;
}
this
->
Makefile
=
loc
.
Makefile
;
this
->
AmbiguousDirectory
=
loc
.
AmbiguousDirectory
;
this
->
AmbiguousExtension
=
loc
.
AmbiguousExtension
;
this
->
Directory
=
loc
.
Directory
;
this
->
Name
=
loc
.
Name
;
this
->
UpdateExtension
(
this
->
Name
);
return
*
this
;
}
//----------------------------------------------------------------------------
cmSourceFileLocation
::
cmSourceFileLocation
(
cmMakefile
const
*
mf
,
const
std
::
string
&
name
)
...
...
@@ -59,6 +95,7 @@ void cmSourceFileLocation::Update(cmSourceFileLocation const& loc)
//----------------------------------------------------------------------------
void
cmSourceFileLocation
::
DirectoryUseSource
()
{
assert
(
this
->
Makefile
);
if
(
this
->
AmbiguousDirectory
)
{
this
->
Directory
=
...
...
@@ -71,6 +108,7 @@ void cmSourceFileLocation::DirectoryUseSource()
//----------------------------------------------------------------------------
void
cmSourceFileLocation
::
DirectoryUseBinary
()
{
assert
(
this
->
Makefile
);
if
(
this
->
AmbiguousDirectory
)
{
this
->
Directory
=
...
...
@@ -83,6 +121,7 @@ void cmSourceFileLocation::DirectoryUseBinary()
//----------------------------------------------------------------------------
void
cmSourceFileLocation
::
UpdateExtension
(
const
std
::
string
&
name
)
{
assert
(
this
->
Makefile
);
// Check the extension.
std
::
string
ext
=
cmSystemTools
::
GetFilenameLastExtension
(
name
);
if
(
!
ext
.
empty
())
{
ext
=
ext
.
substr
(
1
);
}
...
...
@@ -152,6 +191,7 @@ bool
cmSourceFileLocation
::
MatchesAmbiguousExtension
(
cmSourceFileLocation
const
&
loc
)
const
{
assert
(
this
->
Makefile
);
// This location's extension is not ambiguous but loc's extension
// is. See if the names match as-is.
if
(
this
->
Name
==
loc
.
Name
)
...
...
@@ -188,6 +228,7 @@ cmSourceFileLocation
//----------------------------------------------------------------------------
bool
cmSourceFileLocation
::
Matches
(
cmSourceFileLocation
const
&
loc
)
{
assert
(
this
->
Makefile
);
if
(
this
->
AmbiguousExtension
&&
loc
.
AmbiguousExtension
)
{
// Both extensions are ambiguous. Since only the old fixed set of
...
...
Source/cmSourceFileLocation.h
View file @
b1cbba68
...
...
@@ -34,6 +34,9 @@ public:
* instance with an initial name.
*/
cmSourceFileLocation
(
cmMakefile
const
*
mf
,
const
std
::
string
&
name
);
cmSourceFileLocation
();
cmSourceFileLocation
(
const
cmSourceFileLocation
&
loc
);
cmSourceFileLocation
&
operator
=
(
const
cmSourceFileLocation
&
loc
);
/**
* Return whether the givne source file location could refers to the
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment