/* jband - 04/03/99 -  */

// keywords that do something or another

interface           // declare interface
attribute           // for 'properties' (generates getter)
readonly            // modify 'attribute' to not have setter (no [])

uuid                // modify interface (in [])
namespace           // modify interface (in [])
scriptable          // modify interface (in [])


void                // built-in type
boolean             // built-in type
octet               // built-in type
short               // built-in type
long                // built-in type
long long           // built-in type
unsigned short      // built-in type
unsigned long       // built-in type
unsigned long long  // built-in type
float               // built-in type
double              // built-in type
char                // built-in type
wchar               // built-in type
string              // built-in type
wstring             // built-in type


const           // used 2 ways: for decl of value, or in [] for constness
                //      const short foo = 5;
                //      void foo([const] in voidStar bar);

native          // used to declare native types


ptr             // using in native decl to make it a pointer type
ref             // using in native decl to make it a C++ reference type
nsid            // using in native decl to say that this is an nsID

retval          // declare that the param is the retval (in [])
                // used when we need to also add other modifiers
                // (look at QueryInterface in nsISupports.h)

shared          // used to say that this pointer type out param does not
                // follow the normal transfer of ownership rules (in [])

iid_is          // used to say that some other param indicates at runtime
                   the interface type for this out param (in [])

notxpcom        // say that this method does not return an nsresult (in [])
                // (look at Addref and Release in nsISupports.h)

noscript        // without brackets is deprecated

in              // param usage (no [])
out             // param usage (no [])
inout           // param usage (no [])

%{C++           // code inclusion blocks
%}


/***************************************************************************/
// types currently declared in nsrootidl.idl

// typedef'd
PRUint8  
PRUint16 
PRUint32 
PRUint64 
PRInt16  
PRInt32  
PRInt64  
nsrefcnt 

// natives
voidStar
voidRef
nsIDRef
nsIIDRef
nsCIDRef
nsIDPtr
nsIIDPtr
nsCIDPtr
nsQIResult

/***************************************************************************/
// corba idl keywords that are not supported

enum
struct
union
module
sequence
any
exception
raises
oneway
none
case
context
default
fixed
switch