]> granicus.if.org Git - clang/commitdiff
cindex.py: Add File.create_from_name()
authorTobias Grosser <grosser@fim.uni-passau.de>
Mon, 31 Oct 2011 00:07:19 +0000 (00:07 +0000)
committerTobias Grosser <grosser@fim.uni-passau.de>
Mon, 31 Oct 2011 00:07:19 +0000 (00:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143321 91177308-0d34-0410-b5e6-96231b3b80d8

bindings/python/clang/cindex.py
bindings/python/tests/cindex/test_file.py [new file with mode: 0644]

index 1c4ab35e4a50af964d4f1fee095f5c40be31ce66..c66e3563c93dd10939113445ce6d07ba3d1b14d8 100644 (file)
@@ -1523,6 +1523,11 @@ class File(ClangObject):
     translation unit.
     """
 
+    @staticmethod
+    def from_name(translation_unit, file_name):
+        """Retrieve a file handle within the given translation unit."""
+        return File(File_getFile(translation_unit, file_name))
+
     @property
     def name(self):
         """Return the complete file and path name of the file."""
@@ -1533,6 +1538,12 @@ class File(ClangObject):
         """Return the last modification time of the file."""
         return File_time(self)
 
+    def __str__(self):
+        return self.name
+
+    def __repr__(self):
+        return "<File: %s>" % (self.name)
+
 class FileInclusion(object):
     """
     The FileInclusion class represents the inclusion of one source file by
@@ -1759,6 +1770,10 @@ TranslationUnit_includes.argtypes = [TranslationUnit,
                                      py_object]
 
 # File Functions
+File_getFile = lib.clang_getFile
+File_getFile.argtypes = [TranslationUnit, c_char_p]
+File_getFile.restype = c_object_p
+
 File_name = lib.clang_getFileName
 File_name.argtypes = [File]
 File_name.restype = _CXString
diff --git a/bindings/python/tests/cindex/test_file.py b/bindings/python/tests/cindex/test_file.py
new file mode 100644 (file)
index 0000000..146e8c5
--- /dev/null
@@ -0,0 +1,9 @@
+from clang.cindex import Index, File
+
+def test_file():
+  index = Index.create()
+  tu = index.parse('t.c', unsaved_files = [('t.c', "")])
+  file = File.from_name(tu, "t.c")
+  assert str(file) == "t.c"
+  assert file.name == "t.c"
+  assert repr(file) == "<File: t.c>"