Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 8cb529ef454610f419062ea646c6469aaf43b4e6)
+++ src/libcfa/Makefile.am	(revision 6ea87486b2b6353d6a7759b5de92a77328693534)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Andrew Beach
-## Last Modified On : Wed Jun 28 15:36:00 2017
-## Update Count     : 215
+## Last Modified On : Fri Jun 14 17:00:00 2017
+## Update Count     : 216
 ###############################################################################
 
@@ -51,5 +51,6 @@
 
 libobjs = ${headers:=.o}
-libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} exception.c
+libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \
+	exception.c typeobject.c
 
 # not all platforms support concurrency, add option do disable it
@@ -68,8 +69,14 @@
 	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
 
+libcfa_a-typeobject.o : typeobject.c
+	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $<
+
 concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c
 	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
 
 libcfa_d_a-exception.o : exception.c
+	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
+
+libcfa_d_a-typeobject.o : typeobject.c
 	${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $<
 
Index: src/libcfa/typeobject.c
===================================================================
--- src/libcfa/typeobject.c	(revision 6ea87486b2b6353d6a7759b5de92a77328693534)
+++ src/libcfa/typeobject.c	(revision 6ea87486b2b6353d6a7759b5de92a77328693534)
@@ -0,0 +1,27 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// typeobject.c --
+//
+// Author           : Andrew Beach
+// Created On       : Tus Jul 11 15:10:00 2017
+// Last Modified By : Andrew Beach
+// Last Modified On : Tus Jul 12 16:04:00 2017
+// Update Count     : 0
+//
+
+#include "typeobject.h"
+
+// Takes in two non-null pointers to type_objects.
+int is_parent( struct __cfa__type_object const * parent,
+               struct __cfa__type_object const * child ) {
+	do {
+		if ( parent == child )
+			return 1;
+		child = child->parent;
+	} while ( child );
+	return 0;
+}
Index: src/libcfa/typeobject.h
===================================================================
--- src/libcfa/typeobject.h	(revision 6ea87486b2b6353d6a7759b5de92a77328693534)
+++ src/libcfa/typeobject.h	(revision 6ea87486b2b6353d6a7759b5de92a77328693534)
@@ -0,0 +1,28 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// typeobject.h -- Builtins for hierarchy objects.
+//
+// Author           : Andrew Beach
+// Created On       : Tus Jul 11 15:08:00 2017
+// Last Modified By : Andrew Beach
+// Last Modified On : Tus Jul 11 16:18:00 2017
+// Update Count     : 0
+//
+
+#pragma once
+#ifndef TYPEOBJECT_H
+#define TYPEOBJECT_H
+
+struct __cfa__type_object {
+    struct __cfa__type_object const * const parent;
+};
+
+// Takes in two non-null pointers to type_objects.
+int is_parent( struct __cfa__type_object const * parent,
+               struct __cfa__type_object const * child );
+
+#endif // TYPEOBJECT_H
