1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: ploc.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
32 #include <cosv/ploc.hxx>
34 // NOT FULLY DECLARED SERVICES
35 #include <cosv/bstream.hxx>
46 Path::Path( const char * i_sPath
,
47 bool i_bPathIsAlwaysDir
,
48 const char * i_sDelimiter
)
53 Set(i_sPath
, i_bPathIsAlwaysDir
, i_sDelimiter
);
56 Path::Path( const Path
& i_rPath
)
57 : pRoot(i_rPath
.pRoot
->CreateCopy()),
68 Path::operator=( const Path
& i_rPath
)
70 pRoot
= i_rPath
.pRoot
->CreateCopy();
71 aPath
= i_rPath
.aPath
;
72 sFile
= i_rPath
.sFile
;
78 Path::Set( const char * i_sPath
,
79 bool i_bPathIsAlwaysDir
,
80 const char * i_sDelimiter
)
82 if ( *i_sDelimiter
!= '\\' AND
*i_sDelimiter
!= '/' )
87 pRoot
= Root::Create_( restPath
, i_sPath
, i_sDelimiter
);
91 aPath
.Set(restPath
, i_bPathIsAlwaysDir
, i_sDelimiter
);
93 if (NOT i_bPathIsAlwaysDir
)
96 file
= strrchr( restPath
, *i_sDelimiter
);
106 Path::SetFile( const String
& i_sName
)
112 Path::FileExtension() const
115 ext
= strrchr(sFile
, '.');
124 Path::IsValid() const
126 return RootDir().OwnDelimiter() != 0;
130 Path::Get( ostream
& o_rPath
) const
135 pRoot
->Get( o_rPath
);
136 aPath
.Get( o_rPath
, pRoot
->OwnDelimiter() );
138 if ( sFile
.length() > 0 )
144 Path::Get( bostream
& o_rPath
) const
149 pRoot
->Get( o_rPath
);
150 aPath
.Get( o_rPath
, pRoot
->OwnDelimiter() );
152 if ( sFile
.length() > 0 )
153 o_rPath
.write( sFile
);