MODULE = Clang				PACKAGE = Clang::TUnit

Cursor
cursor(self)
	TUnit self

	CODE:
		Cursor retval = malloc(sizeof(CXCursor));
		CXCursor cursor = clang_getTranslationUnitCursor(self);
		*retval = cursor;
		RETVAL = retval;

	OUTPUT: RETVAL

SV *
spelling(self)
	TUnit self

	CODE:
		CXString spelling = clang_getTranslationUnitSpelling(self);
		RETVAL = newSVpv(clang_getCString(spelling), 0);

	OUTPUT: RETVAL

AV *
diagnostics(self)
	TUnit self

	CODE:
		AV *diagnostics = newAV();
		unsigned int i, count = clang_getNumDiagnostics(self);

		for (i = 0; i < count; i++) {
			Diagnostic d = clang_getDiagnostic(self, i);
			SV *elem = sv_setref_pv(
				newSV(0), "Clang::Diagnostic", (void *) d
			);

			av_push(diagnostics, elem);
		}

		RETVAL = diagnostics;

	OUTPUT: RETVAL

void
DESTROY(self)
	TUnit self

	CODE:
		clang_disposeTranslationUnit(self);