GRAPHITE HUNGARIAN NOTATION

General rules for variable names:

* Syntax is:
    scope indicator (if any)
    combining prefix (zero or more)
    type/class indicator (required)
    usage labels (optional)

* The only places underscores are used are after the scoping prefixes. Uppercase is used to separate the prefixes from the main label, if any; eg: strName, m_psegNew.

* If you are creating a new class, make up a short indicator for it and use it consistently. Class indicators should be 3-6 characters long.

* An appropriate way to indicate method arguments where necessary is with an "Arg" usage label, eg: nValueArg. Generally method arguments have no special indication.

* Usage labels can be made up arbitrarily, but the ones listed below should be used if they apply.


*** Scope indicators:

m_	member variable
s_	static (global) variable


*** Combining prefixes:

i	index
c	counter
p	pointer
pp	double pointer
rg	range (array, especially stack-allocated)
prg	pointer to the start of an array (often used for method arguments)
v	vector
d	delta or difference
k	constant (combines with an enumeration identifier: eg, klb, kest, kgmet, etc)


*** Basic type indicators:

f	boolean (flag)
n	integer (simple numerical value--not a counter, index, glyph id, char, measurement, etc.)
b	byte
l	long integer (whatever that means)
ch	character (width irrelevant)
chs	short character (8-bit)
chw	wide character (16-bit)
chl	long (32-bit) character
str	string (char-width irrelevant)
sta	ANSI string (8-bit)
stu	Unicode string (16-bit)
fxd	fixed-field integer
v	void (yes, this duplicates vector)

Graphite specific integer types:

gid	glyph id
m	em-units
xs	logical units, x-coordinates (source)
ys	logical units, y-coordinates (source)
xys	logical units, x- or y-coordinates (source)
xd	display units, x-coordinates
yd	display units, y-coordinates
xyd	display units, x- or y-coordinates


*** Common Graphite-specific class prefixes (not a complete list)

seg	Segment
font	Font
txsrc	TextSource
fface	FontFace
pass	GrPass
greng	GrEngine
tman	GrTableManager
sstrm	GrSlotStream
slot	GrSlotState
slout	GrSlotOutput
chstrm	GrCharStream
gbb	glyph bounding box


*** Enumeration prefixes (see the GrConstants.h and GrData.h files for a more complete list)

lb	line break (breakweight)
twsh	trailing whitespace handling
est	end-segment type (why the segment was terminated)
dm	draw mode (for insertion points)
dirc	directionality code
slat	slot attribute name
clr	color
op	operator in Graphite's stack machine


*** Usage labels (somewhat optional, depending on context)

Min	first in a sequence or array (used with Lim); minimum (used with Max)
Lim	1 + last in a sequence or array
Max	maximum
First	first in a sequence (used with Last)
Last	last in a sequence
Prev	previous
Next	next
Ret	return value
In	input
Out	output
New	newly created object
Arg	method argument

-----------------

EXAMPLES

pf		pointer to boolean
cch		character count
ipassPrev	index of previous pass
pppass		pointer to a pointer to a pass
iislot		index to an index to a GrSlotState
vich		vector of character indices
prgchw		pointer to the start of a wide-char buffer
dislot		delta to apply to an index of a GrSlotState
m_ipass		index of pass (member variable)
ppassNew	pointer to a newly created pass
clrBack		background color
m_igbbFirst	index to the first glyph bounding box (member variable)
islotLim	1 + index of the last slot