MCPcopy Create free account
hub / github.com/MonaSolutions/MonaServer / readOne

Method readOne

MonaServer/sources/ScriptReader.cpp:90–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

88}
89
90bool ScriptReader::readOne(UInt8 type,DataWriter& writer) {
91
92 SCRIPT_BEGIN(_pState)
93
94 UInt32 reference((Mona::UInt64)lua_topointer(_pState, _current));
95 if (reference && tryToRepeat(writer, reference)) {
96 ++_current;
97 return true;
98 }
99
100 switch (type) {
101
102 case STRING: {
103 writer.writeString(lua_tostring(_pState, _current), lua_objlen(_pState, _current));
104 ++_current;
105 return true;
106 }
107 case BOOLEAN:
108 writer.writeBoolean(lua_toboolean(_pState,_current++)==0 ? false : true);
109 return true;
110 case NUMBER:
111 writer.writeNumber(lua_tonumber(_pState,_current++));
112 return true;
113 case NIL:
114 writer.writeNull();
115 ++_current;
116 return true;
117
118 case BYTES:
119 lua_getfield(_pState, _current++, "__raw");
120 writeBytes(writer,reference,(const UInt8*)lua_tostring(_pState,-1),lua_objlen(_pState,-1));
121 lua_pop(_pState,1);
122 return true;
123
124 case DATE: {
125 lua_getfield(_pState, _current++, "__time");
126 Date date((Int64)lua_tonumber(_pState, -1));
127 writeDate(writer,reference,date);
128 lua_pop(_pState,1);
129 return true;
130 }
131
132 }
133
134 bool object=true;
135 bool started=false;
136 Reference* pReference(NULL);
137 UInt32 size(0);
138
139 // Dictionary
140 lua_getfield(_pState,_current,"__size");
141 if(lua_isnumber(_pState,-1)) {
142 size = (UInt32)lua_tonumber(_pState,-1);
143
144 bool weakKeys = false;
145 if(lua_getmetatable(_pState,_current)!=0) {
146 lua_getfield(_pState,-1,"__mode");
147 if(lua_isstring(_pState,-1) && strcmp(lua_tostring(_pState,-1),"k")==0)

Callers

nothing calls this directly

Calls 7

FormatClass · 0.85
errorMethod · 0.80
writeStringMethod · 0.45
writeBooleanMethod · 0.45
writeNumberMethod · 0.45
writeNullMethod · 0.45
writePropertyNameMethod · 0.45

Tested by

no test coverage detected