blob: 48c751177c03f368772eb80812d61219c92d6e5e [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- SBFileSpec.cpp ------------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/API/SBFileSpec.h"
11#include "lldb/Core/FileSpec.h"
12
13using namespace lldb;
14using namespace lldb_private;
15
16
17
18SBFileSpec::SBFileSpec () :
19 m_lldb_object_ap()
20{
21}
22
23SBFileSpec::SBFileSpec (const SBFileSpec &rhs) :
24 m_lldb_object_ap()
25{
26 if (rhs.m_lldb_object_ap.get())
27 m_lldb_object_ap.reset (new FileSpec (*m_lldb_object_ap));
28}
29
30SBFileSpec::SBFileSpec (const char *path) :
31 m_lldb_object_ap(new FileSpec (path))
32{
33}
34
35SBFileSpec::~SBFileSpec ()
36{
37}
38
39const SBFileSpec &
40SBFileSpec::operator = (const SBFileSpec &rhs)
41{
42 if (this != &rhs)
43 {
44 if (rhs.IsValid())
45 m_lldb_object_ap.reset (new lldb_private::FileSpec(*rhs.m_lldb_object_ap.get()));
46 }
47 return *this;
48}
49
50bool
51SBFileSpec::IsValid() const
52{
53 return m_lldb_object_ap.get() != NULL;
54}
55
56bool
57SBFileSpec::Exists () const
58{
59 if (m_lldb_object_ap.get())
60 return m_lldb_object_ap->Exists();
61 return false;
62}
63
64
65int
66SBFileSpec::ResolvePath (const char *src_path, char *dst_path, size_t dst_len)
67{
68 return lldb_private::FileSpec::Resolve (src_path, dst_path, dst_len);
69}
70
71const char *
72SBFileSpec::GetFileName() const
73{
74 if (m_lldb_object_ap.get())
75 return m_lldb_object_ap->GetFilename().AsCString();
76 return NULL;
77}
78
79const char *
80SBFileSpec::GetDirectory() const
81{
82 if (m_lldb_object_ap.get())
83 return m_lldb_object_ap->GetDirectory().AsCString();
84 return NULL;
85}
86
87uint32_t
88SBFileSpec::GetPath (char *dst_path, size_t dst_len) const
89{
90 if (m_lldb_object_ap.get())
91 return m_lldb_object_ap->GetPath (dst_path, dst_len);
92
93 if (dst_path && dst_len)
94 *dst_path = '\0';
95 return 0;
96}
97
98
99const lldb_private::FileSpec *
100SBFileSpec::operator->() const
101{
102 return m_lldb_object_ap.get();
103}
104
105const lldb_private::FileSpec *
106SBFileSpec::get() const
107{
108 return m_lldb_object_ap.get();
109}
110
111
112const lldb_private::FileSpec &
113SBFileSpec::operator*() const
114{
115 return *m_lldb_object_ap.get();
116}
117
118const lldb_private::FileSpec &
119SBFileSpec::ref() const
120{
121 return *m_lldb_object_ap.get();
122}
123
124
125void
126SBFileSpec::SetFileSpec (const lldb_private::FileSpec& fs)
127{
128 if (m_lldb_object_ap.get())
129 *m_lldb_object_ap = fs;
130 else
131 m_lldb_object_ap.reset (new FileSpec (fs));
132}
133