xref: /AOO42X/main/autodoc/source/cosv/storage/ploc.cxx (revision b1c5455db1639c48e26c568e4fa7ee78ca5d60ee)
1*8a106958SDamjan Jovanovic /**************************************************************
2*8a106958SDamjan Jovanovic  *
3*8a106958SDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*8a106958SDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*8a106958SDamjan Jovanovic  * distributed with this work for additional information
6*8a106958SDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*8a106958SDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*8a106958SDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*8a106958SDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*8a106958SDamjan Jovanovic  *
11*8a106958SDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*8a106958SDamjan Jovanovic  *
13*8a106958SDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*8a106958SDamjan Jovanovic  * software distributed under the License is distributed on an
15*8a106958SDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*8a106958SDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*8a106958SDamjan Jovanovic  * specific language governing permissions and limitations
18*8a106958SDamjan Jovanovic  * under the License.
19*8a106958SDamjan Jovanovic  *
20*8a106958SDamjan Jovanovic  *************************************************************/
21*8a106958SDamjan Jovanovic 
22*8a106958SDamjan Jovanovic 
23*8a106958SDamjan Jovanovic 
24*8a106958SDamjan Jovanovic #include <precomp.h>
25*8a106958SDamjan Jovanovic #include <cosv/ploc.hxx>
26*8a106958SDamjan Jovanovic 
27*8a106958SDamjan Jovanovic // NOT FULLY DECLARED SERVICES
28*8a106958SDamjan Jovanovic #include <cosv/bstream.hxx>
29*8a106958SDamjan Jovanovic 
30*8a106958SDamjan Jovanovic 
31*8a106958SDamjan Jovanovic 
32*8a106958SDamjan Jovanovic 
33*8a106958SDamjan Jovanovic namespace csv
34*8a106958SDamjan Jovanovic {
35*8a106958SDamjan Jovanovic namespace ploc
36*8a106958SDamjan Jovanovic {
37*8a106958SDamjan Jovanovic 
38*8a106958SDamjan Jovanovic 
Path(const char * i_sPath,bool i_bPathIsAlwaysDir,const char * i_sDelimiter)39*8a106958SDamjan Jovanovic Path::Path( const char *        i_sPath,
40*8a106958SDamjan Jovanovic             bool                i_bPathIsAlwaysDir,
41*8a106958SDamjan Jovanovic             const char *        i_sDelimiter        )
42*8a106958SDamjan Jovanovic     :   pRoot(0)
43*8a106958SDamjan Jovanovic         // aPath,
44*8a106958SDamjan Jovanovic         // sFile
45*8a106958SDamjan Jovanovic {
46*8a106958SDamjan Jovanovic     Set(i_sPath, i_bPathIsAlwaysDir, i_sDelimiter );
47*8a106958SDamjan Jovanovic }
48*8a106958SDamjan Jovanovic 
Path(const Path & i_rPath)49*8a106958SDamjan Jovanovic Path::Path( const Path & i_rPath )
50*8a106958SDamjan Jovanovic     :   pRoot(i_rPath.pRoot->CreateCopy()),
51*8a106958SDamjan Jovanovic         aPath(i_rPath.aPath),
52*8a106958SDamjan Jovanovic         sFile(i_rPath.sFile)
53*8a106958SDamjan Jovanovic {
54*8a106958SDamjan Jovanovic }
55*8a106958SDamjan Jovanovic 
~Path()56*8a106958SDamjan Jovanovic Path::~Path()
57*8a106958SDamjan Jovanovic {
58*8a106958SDamjan Jovanovic }
59*8a106958SDamjan Jovanovic 
60*8a106958SDamjan Jovanovic Path &
operator =(const Path & i_rPath)61*8a106958SDamjan Jovanovic Path::operator=( const Path & i_rPath )
62*8a106958SDamjan Jovanovic {
63*8a106958SDamjan Jovanovic     pRoot = i_rPath.pRoot->CreateCopy();
64*8a106958SDamjan Jovanovic     aPath = i_rPath.aPath;
65*8a106958SDamjan Jovanovic     sFile = i_rPath.sFile;
66*8a106958SDamjan Jovanovic     return *this;
67*8a106958SDamjan Jovanovic }
68*8a106958SDamjan Jovanovic 
69*8a106958SDamjan Jovanovic 
70*8a106958SDamjan Jovanovic void
Set(const char * i_sPath,bool i_bPathIsAlwaysDir,const char * i_sDelimiter)71*8a106958SDamjan Jovanovic Path::Set( const char *        i_sPath,
72*8a106958SDamjan Jovanovic            bool                i_bPathIsAlwaysDir,
73*8a106958SDamjan Jovanovic            const char *        i_sDelimiter        )
74*8a106958SDamjan Jovanovic {
75*8a106958SDamjan Jovanovic     if ( *i_sDelimiter != '\\' AND *i_sDelimiter != '/' )
76*8a106958SDamjan Jovanovic         return;
77*8a106958SDamjan Jovanovic 
78*8a106958SDamjan Jovanovic     const char *
79*8a106958SDamjan Jovanovic         restPath = 0;
80*8a106958SDamjan Jovanovic     pRoot = Root::Create_( restPath, i_sPath, i_sDelimiter );
81*8a106958SDamjan Jovanovic     if (restPath == 0)
82*8a106958SDamjan Jovanovic         return;
83*8a106958SDamjan Jovanovic 
84*8a106958SDamjan Jovanovic     aPath.Set(restPath, i_bPathIsAlwaysDir, i_sDelimiter);
85*8a106958SDamjan Jovanovic 
86*8a106958SDamjan Jovanovic     if (NOT i_bPathIsAlwaysDir)
87*8a106958SDamjan Jovanovic     {
88*8a106958SDamjan Jovanovic         const char *
89*8a106958SDamjan Jovanovic             file = strrchr( restPath, *i_sDelimiter );
90*8a106958SDamjan Jovanovic         if (file == 0)
91*8a106958SDamjan Jovanovic             file = restPath;
92*8a106958SDamjan Jovanovic         else
93*8a106958SDamjan Jovanovic             file++;
94*8a106958SDamjan Jovanovic         sFile = file;
95*8a106958SDamjan Jovanovic     }
96*8a106958SDamjan Jovanovic }
97*8a106958SDamjan Jovanovic 
98*8a106958SDamjan Jovanovic void
SetFile(const String & i_sName)99*8a106958SDamjan Jovanovic Path::SetFile( const String & i_sName )
100*8a106958SDamjan Jovanovic {
101*8a106958SDamjan Jovanovic     sFile = i_sName;
102*8a106958SDamjan Jovanovic }
103*8a106958SDamjan Jovanovic 
104*8a106958SDamjan Jovanovic const char *
FileExtension() const105*8a106958SDamjan Jovanovic Path::FileExtension() const
106*8a106958SDamjan Jovanovic {
107*8a106958SDamjan Jovanovic     const char *
108*8a106958SDamjan Jovanovic         ext = strrchr(sFile, '.');
109*8a106958SDamjan Jovanovic     if (ext != 0)
110*8a106958SDamjan Jovanovic         ++ext;
111*8a106958SDamjan Jovanovic     else
112*8a106958SDamjan Jovanovic         ext = "";
113*8a106958SDamjan Jovanovic     return ext;
114*8a106958SDamjan Jovanovic }
115*8a106958SDamjan Jovanovic 
116*8a106958SDamjan Jovanovic bool
IsValid() const117*8a106958SDamjan Jovanovic Path::IsValid() const
118*8a106958SDamjan Jovanovic {
119*8a106958SDamjan Jovanovic     return RootDir().OwnDelimiter() != 0;
120*8a106958SDamjan Jovanovic }
121*8a106958SDamjan Jovanovic 
122*8a106958SDamjan Jovanovic void
Get(ostream & o_rPath) const123*8a106958SDamjan Jovanovic Path::Get( ostream & o_rPath ) const
124*8a106958SDamjan Jovanovic {
125*8a106958SDamjan Jovanovic     if (NOT IsValid())
126*8a106958SDamjan Jovanovic         return;
127*8a106958SDamjan Jovanovic 
128*8a106958SDamjan Jovanovic     pRoot->Get( o_rPath );
129*8a106958SDamjan Jovanovic     aPath.Get( o_rPath, pRoot->OwnDelimiter() );
130*8a106958SDamjan Jovanovic 
131*8a106958SDamjan Jovanovic     if ( sFile.length() > 0 )
132*8a106958SDamjan Jovanovic         o_rPath << sFile;
133*8a106958SDamjan Jovanovic 
134*8a106958SDamjan Jovanovic }
135*8a106958SDamjan Jovanovic 
136*8a106958SDamjan Jovanovic void
Get(bostream & o_rPath) const137*8a106958SDamjan Jovanovic Path::Get( bostream & o_rPath ) const
138*8a106958SDamjan Jovanovic {
139*8a106958SDamjan Jovanovic     if (NOT IsValid())
140*8a106958SDamjan Jovanovic         return;
141*8a106958SDamjan Jovanovic 
142*8a106958SDamjan Jovanovic     pRoot->Get( o_rPath );
143*8a106958SDamjan Jovanovic     aPath.Get( o_rPath, pRoot->OwnDelimiter() );
144*8a106958SDamjan Jovanovic 
145*8a106958SDamjan Jovanovic     if ( sFile.length() > 0 )
146*8a106958SDamjan Jovanovic         o_rPath.write( sFile );
147*8a106958SDamjan Jovanovic }
148*8a106958SDamjan Jovanovic 
149*8a106958SDamjan Jovanovic 
150*8a106958SDamjan Jovanovic 
151*8a106958SDamjan Jovanovic 
152*8a106958SDamjan Jovanovic } // namespace ploc
153*8a106958SDamjan Jovanovic } // namespace csv
154