File: VarTypes.cpp

package info (click to toggle)
spring 104.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 47,512 kB
  • sloc: cpp: 391,093; ansic: 79,943; python: 12,356; java: 12,201; awk: 5,889; sh: 1,826; xml: 655; makefile: 486; perl: 405; php: 211; objc: 194; sed: 2
file content (97 lines) | stat: -rw-r--r-- 2,003 bytes parent folder | download
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
87
88
89
90
91
92
93
94
95
96
97
/* 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 <assert.h>

using namespace creg;
using std::string;

// 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();
}

size_t BasicType::GetSize() const
{
	return size;
}

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

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

size_t StringType::GetSize() const
{
	return sizeof(std::string);
}

StringType::StringType(std::shared_ptr<IType> charType) : DynamicArrayType<string>(charType) {}

std::shared_ptr<IType> IType::CreateStringType()
{
	DeduceType<char> charType;
	return std::shared_ptr<IType>(new StringType(charType.Get()));
}

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

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

size_t ObjectInstanceType::GetSize() const
{
	return objectClass->size;
}

std::shared_ptr<IType> IType::CreateObjInstanceType(Class* objectType)
{
	return std::shared_ptr<IType>(new ObjectInstanceType(objectType));
}

string StaticArrayBaseType::GetName() const
{
	char sstr[16];
	SNPRINTF(sstr, 16, "%d", size);
	return elemType->GetName() + "[" + std::string(sstr) + "]";
}

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