add: scheme_register_extension_global (&scheme_date_type, sizeof (scheme_date_type));
context: Scheme_Object *scheme_initialize (Scheme_Env *env){  HRESULT hr;  Scheme_Object *mx_fun;  int i;  scheme_register_extension_global (&mx_omit_obj, sizeof (mx_omit_obj));  // should not be necessary, but sometimes  // this variable is not 0'd out - bug in VC++ or MzScheme?  memset (typeTable, 0, sizeof (typeTable));  // globals in mysterx.cxx  mx_name = scheme_intern_symbol (MXMAIN);  scheme_date_type = scheme_builtin_value ("struct:date");  mx_com_object_type = scheme_make_type ("<com-object>");  mx_com_type_type = scheme_make_type ("<com-type>");  mx_browser_type = scheme_make_type ("<mx-browser>");  mx_document_type = scheme_make_type ("<mx-document>");  mx_element_type = scheme_make_type ("<mx-element>");  mx_event_type = scheme_make_type ("<mx-event>");  mx_com_cy_type = scheme_make_type ("<com-currency>");  mx_com_date_type = scheme_make_type ("<com-date>");  mx_com_scode_type = scheme_make_type ("<com-scode>");  mx_com_iunknown_type = scheme_make_type ("<com-iunknown>");  mx_com_omit_type = scheme_make_type ("<com-omit>");  mx_com_typedesc_type = scheme_make_type ("<com-typedesc>");  hr = CoInitialize (NULL);  // S_OK means success, S_FALSE means COM already loaded  if (FAILED (hr) && hr != S_FALSE) {    return scheme_false;  }  Scheme_Object * arglist[1] = {scheme_false};  scheme_register_extension_global (&mx_unmarshal_strings_as_symbols, sizeof mx_unmarshal_strings_as_symbols);  scheme_register_extension_global (&mx_marshal_raw_scheme_objects, sizeof mx_marshal_raw_scheme_objects);  mx_unmarshal_strings_as_symbols = scheme_apply (scheme_builtin_value ("make-parameter"), 1, arglist);  mx_marshal_raw_scheme_objects = scheme_apply (scheme_builtin_value ("make-parameter"), 1, arglist);  // export prims + omit value  env = scheme_primitive_module (mx_name, env);  for (i = 0; i < sizeray (mxPrims); i++) {    mx_fun = scheme_make_prim_w_arity (mxPrims[i].c_fun,				      mxPrims[i].name,				      mxPrims[i].minargs,				      mxPrims[i].maxargs);    scheme_add_global (mxPrims[i].name, mx_fun, env);  }  mx_omit_obj = (Scheme_Object *)scheme_malloc (sizeof (MX_OMIT));  mx_omit_obj->type = mx_com_omit_type;  scheme_add_global ("com-omit", mx_omit_obj, env);  scheme_finish_primitive_module (env);  initEventNames();  initMysSinkTable();  if (isatty (fileno (stdin))) {    fprintf (stderr,	    "MysterX extension for PLT Scheme, "	    "Copyright (c) 1999-2003 PLT (Paul Steckler)\n");  }  scheme_add_atexit_closer (mx_exit_closer);  atexit (mx_cleanup);  return scheme_void;}