1/*
2 * LegacyClonk
3 *
4 * Copyright (c) 2019-2021, The LegacyClonk Team and contributors
5 *
6 * Distributed under the terms of the ISC license; see accompanying file
7 * "COPYING" for details.
8 *
9 * "Clonk" is a registered trademark of Matthes Bender, used with permission.
10 * See accompanying file "TRADEMARK" for details.
11 *
12 * To redistribute this file separately, substitute the full license texts
13 * for the above references.
14 */
15
16#pragma once
17
18#include "C4Value.h"
19
20class C4ValueContainer
21{
22public:
23 virtual ~C4ValueContainer() {}
24
25 virtual void CompileFunc(StdCompiler *pComp) = 0;
26 virtual void DenumeratePointers() = 0;
27
28 virtual bool hasIndex(const C4Value &index) const = 0;
29 virtual C4Value &operator[](const C4Value &index) = 0;
30
31 virtual C4ValueContainer *IncRef() = 0;
32 virtual void DecRef() = 0;
33
34 virtual C4ValueContainer *IncElementRef() = 0;
35 virtual void DecElementRef() = 0;
36};
37