1*11c03c6dSDamjan Jovanovic /************************************************************** 2*11c03c6dSDamjan Jovanovic * 3*11c03c6dSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*11c03c6dSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*11c03c6dSDamjan Jovanovic * distributed with this work for additional information 6*11c03c6dSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*11c03c6dSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*11c03c6dSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*11c03c6dSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*11c03c6dSDamjan Jovanovic * 11*11c03c6dSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*11c03c6dSDamjan Jovanovic * 13*11c03c6dSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*11c03c6dSDamjan Jovanovic * software distributed under the License is distributed on an 15*11c03c6dSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*11c03c6dSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*11c03c6dSDamjan Jovanovic * specific language governing permissions and limitations 18*11c03c6dSDamjan Jovanovic * under the License. 19*11c03c6dSDamjan Jovanovic * 20*11c03c6dSDamjan Jovanovic *************************************************************/ 21*11c03c6dSDamjan Jovanovic 22*11c03c6dSDamjan Jovanovic 23*11c03c6dSDamjan Jovanovic 24*11c03c6dSDamjan Jovanovic #ifndef CSV_PLOCDIR_HXX 25*11c03c6dSDamjan Jovanovic #define CSV_PLOCDIR_HXX 26*11c03c6dSDamjan Jovanovic 27*11c03c6dSDamjan Jovanovic 28*11c03c6dSDamjan Jovanovic // USED SERVICES 29*11c03c6dSDamjan Jovanovic // BASE CLASSES 30*11c03c6dSDamjan Jovanovic #include <cosv/persist.hxx> 31*11c03c6dSDamjan Jovanovic // COMPONENTS 32*11c03c6dSDamjan Jovanovic #include <cosv/ploc.hxx> 33*11c03c6dSDamjan Jovanovic // PARAMETERS 34*11c03c6dSDamjan Jovanovic 35*11c03c6dSDamjan Jovanovic namespace csv 36*11c03c6dSDamjan Jovanovic { 37*11c03c6dSDamjan Jovanovic namespace ploc 38*11c03c6dSDamjan Jovanovic { 39*11c03c6dSDamjan Jovanovic 40*11c03c6dSDamjan Jovanovic class DirectoryChain; 41*11c03c6dSDamjan Jovanovic 42*11c03c6dSDamjan Jovanovic enum E_Recursivity 43*11c03c6dSDamjan Jovanovic { 44*11c03c6dSDamjan Jovanovic flat, 45*11c03c6dSDamjan Jovanovic recursive 46*11c03c6dSDamjan Jovanovic }; 47*11c03c6dSDamjan Jovanovic 48*11c03c6dSDamjan Jovanovic class Directory : public Persistent 49*11c03c6dSDamjan Jovanovic { 50*11c03c6dSDamjan Jovanovic public: 51*11c03c6dSDamjan Jovanovic // LIFECYCLE 52*11c03c6dSDamjan Jovanovic Directory(); 53*11c03c6dSDamjan Jovanovic Directory( 54*11c03c6dSDamjan Jovanovic const Path & i_rLocation ); 55*11c03c6dSDamjan Jovanovic Directory( 56*11c03c6dSDamjan Jovanovic const char * i_rLocation ); 57*11c03c6dSDamjan Jovanovic Directory( 58*11c03c6dSDamjan Jovanovic const String & i_rLocation ); 59*11c03c6dSDamjan Jovanovic Directory( 60*11c03c6dSDamjan Jovanovic const Directory & i_rDir ); 61*11c03c6dSDamjan Jovanovic virtual ~Directory(); 62*11c03c6dSDamjan Jovanovic 63*11c03c6dSDamjan Jovanovic // OPERATORS 64*11c03c6dSDamjan Jovanovic Directory & operator+=( 65*11c03c6dSDamjan Jovanovic const String & i_sName ); 66*11c03c6dSDamjan Jovanovic Directory & operator+=( 67*11c03c6dSDamjan Jovanovic const DirectoryChain & 68*11c03c6dSDamjan Jovanovic i_sDirChain ); 69*11c03c6dSDamjan Jovanovic Directory & operator-=( 70*11c03c6dSDamjan Jovanovic uintt i_nLevels ); 71*11c03c6dSDamjan Jovanovic 72*11c03c6dSDamjan Jovanovic // OPERATIONS 73*11c03c6dSDamjan Jovanovic bool PhysicalCreate( 74*11c03c6dSDamjan Jovanovic bool i_bCreateParentsIfNecessary = true ) const; 75*11c03c6dSDamjan Jovanovic 76*11c03c6dSDamjan Jovanovic // INQUIRY 77*11c03c6dSDamjan Jovanovic void GetContainedDirectories( 78*11c03c6dSDamjan Jovanovic StringVector & o_rResult ) const; 79*11c03c6dSDamjan Jovanovic /** @param i_sFilter 80*11c03c6dSDamjan Jovanovic Currently only filters of the form "*.ending" or "*.*" 81*11c03c6dSDamjan Jovanovic (the default) are processed correctly under UNIX. Under WNT this 82*11c03c6dSDamjan Jovanovic restriction does not apply. 83*11c03c6dSDamjan Jovanovic */ 84*11c03c6dSDamjan Jovanovic void GetContainedFiles( 85*11c03c6dSDamjan Jovanovic StringVector & o_rResult, 86*11c03c6dSDamjan Jovanovic const char * i_sFilter = "*.*", 87*11c03c6dSDamjan Jovanovic E_Recursivity i_eRecursivity = flat ) const; 88*11c03c6dSDamjan Jovanovic private: 89*11c03c6dSDamjan Jovanovic // Interface Persistent: 90*11c03c6dSDamjan Jovanovic virtual const Path & 91*11c03c6dSDamjan Jovanovic inq_MyPath() const; 92*11c03c6dSDamjan Jovanovic 93*11c03c6dSDamjan Jovanovic // Locals: 94*11c03c6dSDamjan Jovanovic /** @return 95*11c03c6dSDamjan Jovanovic true, if parent(!) directory exists or could be created. 96*11c03c6dSDamjan Jovanovic false, if this is a root directory. 97*11c03c6dSDamjan Jovanovic */ 98*11c03c6dSDamjan Jovanovic bool Check_Parent() const; 99*11c03c6dSDamjan Jovanovic bool PhysicalCreate_Dir( 100*11c03c6dSDamjan Jovanovic const char * i_sStr ) const; 101*11c03c6dSDamjan Jovanovic // DATA 102*11c03c6dSDamjan Jovanovic Path aPath; 103*11c03c6dSDamjan Jovanovic }; 104*11c03c6dSDamjan Jovanovic 105*11c03c6dSDamjan Jovanovic 106*11c03c6dSDamjan Jovanovic 107*11c03c6dSDamjan Jovanovic } // namespace ploc 108*11c03c6dSDamjan Jovanovic } // namespace csv 109*11c03c6dSDamjan Jovanovic 110*11c03c6dSDamjan Jovanovic 111*11c03c6dSDamjan Jovanovic 112*11c03c6dSDamjan Jovanovic #endif 113