Listing 1: Checking function parameters, index ranges, and order of function invocation

void AddCode( void *CodeLoc, unsigned CodeSize )
{
  assert( CodeLoc != NULL );
  ...
  int CodeOffset = Add( CodeLoc, CodeSize );
  ...
}


void MarkSelector( char* SelectorName )
{
  unsigned SelectorIndex = LookupSelector( SelectorName );
  assert( SelectorIndex < NumSelectors );
  SelectorArray[ SelectorIndex ].Mark = 1;
}


class CodeSection
{
  bool ContentComputed;
  long ContentSize;
  ...
  CodeSection( void )  { ContentComputed = false;  };
  void SetContentSize( long Size )
  {
    ContentSize = Size;
    ContentComputed = true;
  }
  long GetContentSize( void )
  {
    assert( ContentComputed );
    return ContentSize;
  }
}
//End of File