File: entry.hpp

package info (click to toggle)
rapidsvn 0.7.0-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 4,004 kB
  • ctags: 2,214
  • sloc: cpp: 14,455; sh: 8,330; makefile: 230; python: 6
file content (301 lines) | stat: -rw-r--r-- 5,357 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
/*
 * ====================================================================
 * Copyright (c) 2002-2004 The RapidSvn Group.  All rights reserved.
 *
 * This software is licensed as described in the file LICENSE.txt,
 * which you should have received as part of this distribution.
 *
 * This software consists of voluntary contributions made by many
 * individuals.  For exact contribution history, see the revision
 * history and logs, available at http://rapidsvn.tigris.org/.
 * ====================================================================
 */
#ifndef _SVNCPP_ENTRY_HPP_
#define _SVNCPP_ENTRY_HPP_

// subversion api
#include "svn_wc.h"

// svncpp
#include "svncpp/pool.hpp"


namespace svn
{
  /**
   * C++ API for Subversion. 
   * This class wraps around @a svn_wc_entry_t.
   */
  class Entry
  {
  public:
    /**
     * default constructor. if @a src is set,
     * copy its contents. 
     *
     * If @a src is not set (=0) this will be
     * a non-versioned entry. This can be checked
     * later with @a isValid ().
     *
     * @param src another entry to copy from
     */
    Entry (const svn_wc_entry_t * src = 0);

    /**
     * copy constructor
     */
    Entry (const Entry & src);

    /**
     * destructor 
     */
    virtual ~Entry ();

    /**
     * returns whether this is a valid=versioned
     * entry.    
     *
     * @return is entry valid
     * @retval true valid entry
     * @retval false invalid or unversioned entry
     */
    bool isValid () const
    {
      return m_valid;
    }

    /**
     * @return entry's name
     */
    const char *
    name () const
    {
      return m_entry->name;
    }

    /**
     * @return base revision
     */
    const svn_revnum_t 
    revision () const
    {
      return m_entry->revision;
    }

    /**
     * @return url in repository
     */
    const char * 
    url () const
    {
      return m_entry->url;
    }

    /**
     * @return canonical repository url
     */
    const char *
    repos () const
    {
      return m_entry->repos;
    }

    /**
     * @return repository uuid
     */
    const char *
    uuid () const
    {
      return m_entry->uuid;
    }

    /**
     * @return node kind (file, dir, ...)
     */
    const svn_node_kind_t
    kind () const
    {
      return m_entry->kind;
    }

    /**
     * @return scheduling (add, delete, replace)
     */
    const svn_wc_schedule_t
    schedule () const
    {
      return m_entry->schedule;
    }

    /**
     * @return TRUE if copied
     */
    const bool 
    isCopied () const
    {
      return m_entry->copied != 0;
    }
    
    /**
     * @return true if deleted
     */
    const bool
    isDeleted () const
    {
      return m_entry->deleted != 0;
    }

    /**
     * @return true if deleted
     */
    const bool
    isAbsent () const
    {
      return m_entry->absent != 0;
    }

    /**
     * @return copyfrom location
     */
    const char *
    copyfromUrl () const
    {
      return m_entry->copyfrom_url;
    }

    /**
     * @return copyfrom revision
     */
    const svn_revnum_t
    copyfromRev () const
    {
      return m_entry->copyfrom_rev;
    }

    /**
     * @return old version of conflicted file
     */
    const char *
    conflictOld () const
    {
      return m_entry->conflict_old;
    }

    /**
     * @return new version of conflicted file
     */
    const char *
    conflictNew () const
    {
      return m_entry->conflict_new;
    }
    
    /**
     * @return working version of conflicted file
     */
    const char *
    conflictWrk () const
    {
      return m_entry->conflict_wrk;
    }

    /**
     * @return property reject file
     */
    const char *
    prejfile () const
    {
      return m_entry->prejfile;
    }

    /**
     * @return last up-to-date time for text contents
     * @retval 0 no information available
     */
    const apr_time_t
    textTime () const
    {
      return m_entry->text_time;
    }
    
    /**
     * @return last up-to-date time for properties
     * @retval 0 no information available
     */
    const apr_time_t
    propTime () const
    {
      return m_entry->prop_time;
    }

    /**
     * @return base64 encoded checksum
     * @retval NULL for backwards compatibility
     */
    const char *
    checksum () const
    {
      return m_entry->checksum;
    }

    /**
     * @return last revision this was changed
     */
    const svn_revnum_t
    cmtRev () const
    {
      return m_entry->cmt_rev;
    }

    /**
     * @return last date this was changed
     */
    const apr_time_t
    cmtDate () const
    {
      return m_entry->cmt_date;
    }

    /**
     * @return last commit author of this file
     */
    const char *
    cmtAuthor () const
    {
      return m_entry->cmt_author;
    }

    /**
     * @return svn_wc_entry_t for this class
     */
    operator svn_wc_entry_t * () const
    {
      return m_entry;
    }

    /**
     * assignment operator
     */
    Entry &
    operator = (const Entry &);

  private:
    svn_wc_entry_t * m_entry;
    Pool m_pool;
    bool m_valid;

    /**
     * initializes the members
     */
    void 
    init (const svn_wc_entry_t * src);
 };

}

#endif
/* -----------------------------------------------------------------
 * local variables:
 * eval: (load-file "../../rapidsvn-dev.el")
 * end:
 */