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