/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * vim: set ts=4 sw=4 et tw=80: * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ include DOMTypes; using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; namespace mozilla { namespace jsipc { struct JSIID { uint32_t m0; uint16_t m1; uint16_t m2; uint8_t m3_0; uint8_t m3_1; uint8_t m3_2; uint8_t m3_3; uint8_t m3_4; uint8_t m3_5; uint8_t m3_6; uint8_t m3_7; }; struct LocalObject { uint64_t id; }; struct RemoteObject { uint64_t id; }; union ObjectVariant { LocalObject; RemoteObject; }; struct UndefinedVariant {}; struct NullVariant {}; union JSVariant { UndefinedVariant; NullVariant; ObjectVariant; nsString; /* StringValue(x) */ double; /* NumberValue(x) */ bool; /* BooleanValue(x) */ JSIID; /* XPC nsIID */ }; struct ReturnSuccess { }; struct ReturnStopIteration { }; struct ReturnException { JSVariant exn; }; union ReturnStatus { ReturnSuccess; ReturnStopIteration; ReturnException; }; union JSParam { void_t; /* value is strictly an xpc out param */ JSVariant; /* actual value to pass through */ }; union GetterSetter { uint64_t; ObjectVariant; }; struct PPropertyDescriptor { ObjectVariant obj; uint32_t attrs; JSVariant value; // How to interpret these values depends on whether JSPROP_GETTER/SETTER // are set. If set, the corresponding value is a CPOW or 0 for NULL. // Otherwise, the following table is used: // // 0 - NULL // 1 - Default getter or setter. // 2 - js_GetterOnlyPropertyStub (setter only) // 3 - Unknown GetterSetter getter; GetterSetter setter; }; struct CpowEntry { nsString name; JSVariant value; }; } }