MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / copy_from_stack

Method copy_from_stack

Source/Utils/dukglue/dukvalue.h:142–185  ·  view source on GitHub ↗

copies the object at idx on the stack into a new DukValue and returns it

Source from the content-addressed store, hash-verified

140
141 // copies the object at idx on the stack into a new DukValue and returns it
142 static DukValue copy_from_stack(duk_context* ctx, duk_idx_t idx = -1) {
143 DukValue value;
144 value.mContext = ctx;
145 value.mType = (Type) duk_get_type(ctx, idx);
146 switch (value.mType) {
147 case UNDEFINED:
148 break;
149
150 case NULLREF:
151 value.mPOD.pointer = NULL;
152 break;
153
154 case BOOLEAN:
155 value.mPOD.boolean = duk_require_boolean(ctx, idx) ? true : false;
156 break;
157
158 case NUMBER:
159 value.mPOD.number = duk_require_number(ctx, idx);
160 break;
161
162 case STRING:
163 {
164 duk_size_t len;
165 const char* data = duk_get_lstring(ctx, idx, &len);
166 value.mString.assign(data, len);
167 break;
168 }
169
170 case OBJECT:
171 value.mPOD.ref_array_idx = stash_ref(ctx, idx);
172 break;
173
174 case POINTER:
175 value.mPOD.pointer = duk_require_pointer(ctx, idx);
176 break;
177
178 case BUFFER:
179 case LIGHTFUNC:
180 default:
181 throw DukException() << "Cannot turn type into DukValue (" << value.type_name() << ")";
182 }
183
184 return value;
185 }
186
187protected:
188 static duk_ret_t json_decode_safe(duk_context* ctx, void* user_data)

Callers

nothing calls this directly

Calls 2

DukExceptionClass · 0.85
type_nameMethod · 0.80

Tested by

no test coverage detected