source: libcfa/src/virtual.h @ 5e81a9c

Last change on this file since 5e81a9c was 8f910430, checked in by Andrew Beach <ajbeach@…>, 3 years ago

Updated the virtual module to prefix the names with the new convention and change the parent_vtable into type_info.

  • Property mode set to 100644
File size: 1.3 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// virtual.h -- Builtins for hierarchy objects.
8//
9// Author           : Andrew Beach
10// Created On       : Tus Jul 11 15:08:00 2017
11// Last Modified By : Andrew Beach
12// Last Modified On : Mon May 17 11:03:00 2021
13// Update Count     : 2
14//
15
16#pragma once
17
18#ifdef __cforall
19extern "C" {
20#endif
21
22// Information on a type for the virtual system.
23// There should be exactly one instance per type and there should be a
24// pointer to it at the head of every virtual table.
25struct __cfavir_type_info {
26        // Type id of parent type, null if this is a root type.
27    struct __cfavir_type_info const * const parent;
28};
29
30// A pointer to type information acts as the type id.
31typedef struct __cfavir_type_info const * __cfavir_type_id;
32
33// Takes in two non-null type ids.
34int __cfavir_is_parent(
35                __cfavir_type_id parent, __cfavir_type_id child );
36
37// If parent is a parent of child then return child, otherwise return NULL.
38// Input pointers are none-null, child's first level should be an object with
39// a vtable
40void * __cfavir_virtual_cast(
41                __cfavir_type_id parent, __cfavir_type_id const * child );
42
43#ifdef __cforall
44}
45#endif
Note: See TracBrowser for help on using the repository browser.