Use the SpiderMonkey C++ Coding Style page on wikimo which is more up to date and the canonical source.
The SpiderMonkey project owners enforce coding conventions pretty strictly during code reviews.
Naming conventions
- Public function names begin with
JS_
followed by capitalized "intercaps", e.g.JS_NewObject
.
- Extern but library-private function names use a
js_
prefix and mixed case, e.g.js_SearchScope
.
- Most static function names have unprefixed, mixed-case names:
GetChar
.
- But static native methods of JS objects have lowercase, underscore-separated or intercaps names, e.g.,
str_indexOf
.
- And library-private and static data use underscores, not intercaps (but library-private data do use a
js_
prefix).
- Scalar type names are lowercase and
js
-prefixed:jsdouble
.
- Aggregate type names are
JS
-prefixed and mixed-case:JSObject
.
- Macros are generally
ALL_CAPS
and underscored, to call out potential side effects, multiple uses of a formal argument, etc.
Linkage
- DLL entry points have their return type expanded within a
JS_PUBLIC_API()
macro call, to get the right Windows secret type qualifiers in the right places for all build variants. - DLL entry points that are not public APIs use
JS_FRIEND_API()
instead.