The following sample codes (IDL and C files) serves as an example of how to use the Save/Restore methods. In this example, class X, a subclass of WPDataFile, introduces two pieces of persistent instance data.

include wpdataf.idl

interface X : WPDataFile
{
  .
  .
  .

  implementation
  {

    ULONG ulA;     //# Persistent instance data introduced by class X
    PSZ   pszB;

    wpSaveState: override;    //# To save your data
    wpRestoreState: override; //# To restore your data
    wpInitData: override;     //# To supply default values for your data
  };
};

The following sample code shows the source code for X:

BOOL SOMLINK x_wpSaveState(X * somSelf)
{
  _wpSaveLong(somSelf, "X", 1, _ulA);
  _wpSaveString(somSelf, "X", 2, _pszB);   // Key is X and 1 for _ulA
  return parent_wpSaveState(somSelf);      // Key is X and 2 for _pszB
}
  .
  .
  .

BOOL SOMLINK x_wpRestoreState(X * somSelf, ULONG ulReserved)
{
  ULONG ulSize;

  // Key is X and 1 for _ulA
  _wpRestoreLong(somSelf, "X", 1, &_ulA);

  // Key is X and 2 for _pszB
  _wpRestoreString(somSelf, "X", 2, &_pszB, &ulSize);
  return parent_wpRestoreState(somSelf, ulReserved);
}
  .
  .
  .

BOOL SOMLINK x_wpInitData(X * somSelf)
{
  BOOL rc;
  rc    = parent_wpInitData(somSelf);
  _ulA  = 1001;
  _pszB = "hello";
  return rc;
}

Note: Some of the save and restore methods are used in a complete program that is illustrated in Sample Code for Setup/Cleanup Methods.