MCPcopy Create free account
hub / github.com/defold/defold / DefaultLuaValueToDDF

Function DefaultLuaValueToDDF

engine/script/src/script_ddf.cpp:42–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40 char* buffer, char** data_start, char** data_last, int index, char* pointer_base);
41
42 static void DefaultLuaValueToDDF(lua_State* L, const dmDDF::FieldDescriptor* f,
43 char* buffer, char** data_start, char** data_end, const char* default_value, char* pointer_base)
44 {
45 switch (f->m_Type)
46 {
47 case dmDDF::TYPE_INT32:
48 {
49 *((int32_t *) &buffer[f->m_Offset]) = *((int32_t*) default_value);
50 }
51 break;
52
53 case dmDDF::TYPE_UINT32:
54 {
55 *((uint32_t *) &buffer[f->m_Offset]) = *((uint32_t*) default_value);
56 }
57 break;
58
59 case dmDDF::TYPE_UINT64:
60 {
61 *((dmhash_t *) &buffer[f->m_Offset]) = *((dmhash_t*) default_value);
62 }
63 break;
64
65 case dmDDF::TYPE_BOOL:
66 {
67 *((bool *) &buffer[f->m_Offset]) = *((bool*) default_value);
68 }
69 break;
70
71 case dmDDF::TYPE_FLOAT:
72 {
73 *((float *) &buffer[f->m_Offset]) = *((float*) default_value);
74 }
75 break;
76
77 case dmDDF::TYPE_STRING:
78 {
79 const char* s = default_value;
80 int size = strlen(s) + 1;
81 if (*data_start + size > *data_end)
82 {
83 luaL_error(L, "Message data doesn't fit");
84 }
85 else
86 {
87 memcpy(*data_start, s, size);
88 // NOTE: We store offset here an relocate later...
89 *((const char**) &buffer[f->m_Offset]) = (const char*) (*data_start - pointer_base);
90 }
91 *data_start += size;
92 }
93 break;
94
95 case dmDDF::TYPE_ENUM:
96 {
97 *((int32_t *) &buffer[f->m_Offset]) = *((int32_t*) default_value);
98 }
99 break;

Callers 2

DoDefaultLuaTableToDDFFunction · 0.85
DoLuaTableToDDFFunction · 0.85

Calls 1

luaL_errorFunction · 0.85

Tested by

no test coverage detected