1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nsXBLProtoImplField_h__
7 #define nsXBLProtoImplField_h__
13 #include "nsXBLProtoImplMember.h"
15 class nsIObjectInputStream
;
16 class nsIObjectOutputStream
;
17 class nsIScriptContext
;
20 class nsXBLProtoImplField
23 nsXBLProtoImplField(const char16_t
* aName
, const char16_t
* aReadOnly
);
24 explicit nsXBLProtoImplField(const bool aIsReadOnly
);
25 ~nsXBLProtoImplField();
27 void AppendFieldText(const nsAString
& aText
);
28 void SetLineNumber(uint32_t aLineNumber
) {
29 mLineNumber
= aLineNumber
;
32 nsXBLProtoImplField
* GetNext() const { return mNext
; }
33 void SetNext(nsXBLProtoImplField
* aNext
) { mNext
= aNext
; }
35 nsresult
InstallField(JS::Handle
<JSObject
*> aBoundNode
,
36 nsIURI
* aBindingDocURI
,
37 bool* aDidInstall
) const;
39 nsresult
InstallAccessors(JSContext
* aCx
,
40 JS::Handle
<JSObject
*> aTargetClassObject
);
42 nsresult
Read(nsIObjectInputStream
* aStream
);
43 nsresult
Write(nsIObjectOutputStream
* aStream
);
45 const char16_t
* GetName() const { return mName
; }
47 unsigned AccessorAttributes() const {
48 return JSPROP_SHARED
| JSPROP_GETTER
| JSPROP_SETTER
|
49 (mJSAttributes
& (JSPROP_ENUMERATE
| JSPROP_PERMANENT
));
52 bool IsEmpty() const { return mFieldTextLength
== 0; }
55 nsXBLProtoImplField
* mNext
;
58 uint32_t mFieldTextLength
;
60 unsigned mJSAttributes
;
63 #endif // nsXBLProtoImplField_h__