template<class T>
inline void serialize(const T & value, FILE *fp)
  {
    fwrite(&value, sizeof(T), 1, fp);
  }

struct Object {
  int param1;
  int param2;
  int param3;
  int param4;

  // C++ Style
  inline void SaveCPP(FILE *fp) const
    {
      serialize(param1, fp);
      serialize(param2, fp);
      serialize(param3, fp);
      serialize(param4, fp);
    }

  // C Style
  inline void SaveC(FILE *fp) const
    {
      fwrite(this, sizeof(Object), 1, fp);
    }
};