File: VarTypes.cpp

package info (click to toggle)
spring 106.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 55,260 kB
  • sloc: cpp: 543,946; ansic: 44,800; python: 12,575; java: 12,201; awk: 5,889; sh: 1,796; asm: 1,546; xml: 655; perl: 405; php: 211; objc: 194; makefile: 76; sed: 2
file content (86 lines) | stat: -rw-r--r-- 1,834 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

/*
 * creg - Code compoment registration system
 * Classes for serialization of registrated class instances
 */

#include "VarTypes.h"

#include "System/StringUtil.h"

#include <cassert>

using namespace creg;

// serialization code

// type instance allocators

void BasicType::Serialize(ISerializer* s, void* inst)
{
	s->SerializeInt(inst, GetSize());
}

std::string BasicType::GetName() const
{
	switch(id) {
#if defined(SYNCDEBUG) || defined(SYNCCHECK)
		case crSyncedInt:   return "synced int";
		case crSyncedFloat: return "synced float";
#endif
		case crInt:   return "int";
		case crFloat: return "float";
	};
	return std::string();
}

std::unique_ptr<IType> IType::CreateBasicType(BasicTypeID t, size_t size)
{
	return std::unique_ptr<IType>(new BasicType(t, size));
}

std::string ObjectPointerBaseType::GetName() const
{
	return std::string(objClass->name) + "*";
}

std::string StringType::GetName() const
{
	return "string";
}

std::unique_ptr<IType> IType::CreateStringType()
{
	return std::unique_ptr<IType>(new StringType());
}

void ObjectInstanceType::Serialize(ISerializer* s, void* inst)
{
	s->SerializeObjectInstance(inst, objectClass);
}

std::string ObjectInstanceType::GetName() const
{
	return objectClass->name;
}

std::unique_ptr<IType> IType::CreateObjInstanceType(Class* objectType, size_t size)
{
	return std::unique_ptr<IType>(new ObjectInstanceType(objectType, size));
}

std::string StaticArrayBaseType::GetName() const
{
	return elemType->GetName() + "[" + IntToString(size / elemType->GetSize()) + "]";
}

std::string DynamicArrayBaseType::GetName() const
{
	return elemType->GetName() + "[]";
}

std::unique_ptr<IType> IType::CreateIgnoredType(size_t size)
{
	return std::unique_ptr<IType>(new IgnoredType(size));
}