← Back to team overview

zorba-coders team mailing list archive

[Merge] lp:~zorba-coders/zorba/serializer into lp:zorba

 

Markos Zaharioudakis has proposed merging lp:~zorba-coders/zorba/serializer into lp:zorba.

Requested reviews:
  Markos Zaharioudakis (markos-za)

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/serializer/+merge/94695

serializer restructuring

-- 
https://code.launchpad.net/~zorba-coders/zorba/serializer/+merge/94695
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'src/zorbaserialization/archiver.cpp'
--- src/zorbaserialization/archiver.cpp	2012-02-02 09:56:52 +0000
+++ src/zorbaserialization/archiver.cpp	2012-02-26 21:58:26 +0000
@@ -35,93 +35,121 @@
 {
 
 
-/////////////////////////////////////////
-//////////////////////////////////////////////////////
+/*******************************************************************************
 
-archive_field::archive_field(const char *type, bool is_simple, bool is_class,
-              const void *value, const void *assoc_ptr,
-              int version, enum ArchiveFieldTreat  field_treat,
-              archive_field *refered,
-              int only_for_eval,
-              ENUM_ALLOW_DELAY allow_delay,
-              unsigned int level)
+********************************************************************************/
+archive_field::archive_field(
+    const char* type,
+    bool is_simple,
+    bool is_class,
+    const void* value,
+    const void* assoc_ptr,
+    int version,
+    enum ArchiveFieldKind  kind,
+    archive_field* refered,
+    int only_for_eval,
+    ENUM_ALLOW_DELAY allow_delay,
+    unsigned int level)
 {
-  this->type = strdup(type);
-  this->type_str_pos_in_pool = 0;//initialy is the number of references to this field
-  this->is_simple = is_simple;
-  this->is_class = is_class;
-  if(value)
-  {
-    this->value = strdup((char*)value);
-  }
+  theKind = kind;
+
+  theIsSimple = is_simple;
+  theIsClass = is_class;
+
+  theClassVersion = version;
+
+  theTypeName = strdup(type);
+  theTypeNamePosInPool = 0;//initialy is the number of references to this field
+
+  if (value)
+    theValue = strdup((char*)value);
   else
-    this->value = NULL;
+    theValue = NULL;
+
   this->assoc_ptr = assoc_ptr;
-  this->version = version;
-  this->field_treat = field_treat;
-  this->referencing = refered ? refered->id : 0;
-
-  next = NULL;
-  first_child = NULL;
-  last_child = NULL;
-  parent = NULL;
-  this->refered = refered;
-
-  this->only_for_eval = only_for_eval;
-  this->allow_delay2 = allow_delay;
-
-  this->level = level;
+
+  theReferredField = refered;
+
+  this->referencing = refered ? refered->theId : 0;
+
+  theLevel = level;
+
+  theNextSibling = NULL;
+  theFirstChild = NULL;
+  theLastChild = NULL;
+  theParent = NULL;
+
+  theOnlyForEval = only_for_eval;
+
+  theAllowDelay2 = allow_delay;
+
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
-  bytes_saved = 0;
-  objects_saved = 0;
+  theBytesSaved = 0;
+  theObjectsSaved = 0;
 #endif
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 archive_field::~archive_field()
 {
-  free(type);
-  if(value)
-    free((void*)value);
-  archive_field *temp1;
-  archive_field *temp2;
-  temp1 = first_child;
+  free(theTypeName);
+
+  if (theValue)
+    free((void*)theValue);
+
+  archive_field* temp1 = theFirstChild;
+  archive_field* temp2;
+
   while(temp1)
   {
-    temp2 = temp1->next;
+    temp2 = temp1->theNextSibling;
     delete temp1;
     temp1 = temp2;
   }
 }
 
-/////////////////////////////////////////
-//////////////////////////////////////////////////////
-
+
+/*******************************************************************************
+
+********************************************************************************/
 Archiver::Archiver(bool is_serializing_out, bool internal_archive)
-  : serializing_out(is_serializing_out),
-    serialize_base_class(false),
-    all_reference_list(0),
-    archive_version(g_zorba_classes_version),
-    out_fields(0),
-    current_compound_field(0),
-    simple_hashout_fields(0),
-    hash_out_fields(0),
-    nr_ids(0),
-    current_class_version(0),
-    read_optional(false),
-    is_temp_field(0),
-    //is_temp_field_one_level(false),
-    current_level(0),
-    internal_archive(internal_archive),
-    theUserCallback(0),
-    //compiler_cb(0),
-    dont_allow_delay_for_plan_sctx(false)
+  :
+  theSerializingOut(is_serializing_out),
+  serialize_base_class(false),
+  all_reference_list(0),
+  theArchiveVersion(g_zorba_classes_version),
+  theRootField(0),
+  current_compound_field(0),
+  simple_hashout_fields(0),
+  hash_out_fields(0),
+  nr_ids(0),
+  current_class_version(0),
+  read_optional(false),
+  theIsTempField(0),
+  theCurrentLevel(0),
+  internal_archive(internal_archive),
+  theUserCallback(0),
+  dont_allow_delay_for_plan_sctx(false)
 {
-
-  if(is_serializing_out)
+  if (theSerializingOut)
   {
     //create the top most field
-    out_fields = new archive_field("", false, false, NULL, NULL, 0, ARCHIVE_FIELD_NORMAL, NULL, false, ALLOW_DELAY, 0);
-    current_compound_field = out_fields;
+    theRootField = new archive_field("",
+                                   false,
+                                   false,
+                                   NULL,
+                                   NULL,
+                                   0,
+                                   ARCHIVE_FIELD_NORMAL,
+                                   NULL,
+                                   false,
+                                   ALLOW_DELAY,
+                                   0);
+
+    current_compound_field = theRootField;
   }
 
   if (!internal_archive)
@@ -130,7 +158,7 @@
     nr_ids = har->get_nr_ids();
   }
 
-  if(is_serializing_out)
+  if (theSerializingOut)
   {
     simple_hashout_fields = new HashMap<SIMPLE_HASHOUT_FIELD, archive_field*,
                                         SimpleHashoutFieldCompare>(1000, false);
@@ -138,168 +166,226 @@
   }
 
 
-  this->only_for_eval = 0;
-  this->serialize_everything = false;
+  theOnlyForEval = 0;
+  theSerializeEverything = false;
   loading_hardcoded_objects = false;
-  allow_delay2 = ALLOW_DELAY;
+  theAllowDelay2 = ALLOW_DELAY;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 Archiver::~Archiver()
 {
-  delete out_fields;
-  delete []all_reference_list;
+  delete theRootField;
+  delete [] all_reference_list;
   delete simple_hashout_fields;
   delete hash_out_fields;
 
-  std::list<fwd_ref>::iterator    it;
-  for(it = fwd_reference_list.begin(); it != fwd_reference_list.end(); it++)
+  std::list<fwd_ref>::iterator it;
+  for (it = fwd_reference_list.begin(); it != fwd_reference_list.end(); it++)
   {
-    if((*it).class_name)
+    if ((*it).class_name)
       free((*it).class_name);
   }
 
   std::vector<archive_field*>::const_iterator orphan_it;
-  for(orphan_it = orphan_fields.begin(); orphan_it != orphan_fields.end(); orphan_it++)
+  for (orphan_it = orphan_fields.begin(); orphan_it != orphan_fields.end(); orphan_it++)
   {
     delete (*orphan_it);
   }
 }
 
 
-void Archiver::create_archive(const char *archive_name,
-                            const char *archive_info,
-                            int archive_version)
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::create_archive(
+    const char* archive_name,
+    const char* archive_info,
+    int archive_version)
 {
-  this->archive_name = strdup(archive_name);
-  this->archive_info = strdup(archive_info);
-  this->archive_version = archive_version;
+  theArchiveName = strdup(archive_name);
+  theArchiveInfo = strdup(archive_info);
+  theArchiveVersion = archive_version;
 }
 
-//return true if field is not referencing
-bool Archiver::add_simple_field(const char *type,
-                            const char *value,
-                            const void *orig_ptr,
-                            enum ArchiveFieldTreat field_treat
-                            )
+
+/*******************************************************************************
+  return true if field is not referencing
+********************************************************************************/
+bool Archiver::add_simple_field(
+    const char* type,
+    const char* value,
+    const void* orig_ptr,
+    enum ArchiveFieldKind field_treat)
 {
-  current_level++;
-  archive_field  *new_field;
-  archive_field  *ref_field = NULL;
-  bool      exch_fields = false;
+  theCurrentLevel++;
+  archive_field* new_field;
+  archive_field* ref_field = NULL;
+  bool exch_fields = false;
   //int id = 0;
   if(!orig_ptr)
   {
     field_treat = ARCHIVE_FIELD_IS_NULL;
   }
-  else if((field_treat != ARCHIVE_FIELD_IS_BASECLASS) && orig_ptr &&
-    !get_is_temp_field() && (!get_is_temp_field_one_level() || ((field_treat == ARCHIVE_FIELD_IS_PTR) && !get_is_temp_field_also_for_ptr())))
+  else if (field_treat != ARCHIVE_FIELD_IS_BASECLASS &&
+           orig_ptr &&
+           !get_is_temp_field() &&
+           (!get_is_temp_field_one_level() ||
+            (field_treat == ARCHIVE_FIELD_IS_PTR && !get_is_temp_field_also_for_ptr())))
+  {
     ref_field = check_nonclass_pointer(type, orig_ptr);
-  if(ref_field)
+  }
+
+  if (ref_field)
   {
-    assert((field_treat != ARCHIVE_FIELD_NORMAL) || (ref_field->field_treat != ARCHIVE_FIELD_NORMAL));
-    if(get_is_temp_field_one_level() && (field_treat == ARCHIVE_FIELD_IS_PTR) && (allow_delay2 == ALLOW_DELAY))
-      allow_delay2 = DONT_ALLOW_DELAY;
-    if(field_treat == ARCHIVE_FIELD_NORMAL)
+    assert(field_treat != ARCHIVE_FIELD_NORMAL ||
+           ref_field->theKind != ARCHIVE_FIELD_NORMAL);
+
+    if (get_is_temp_field_one_level() &&
+        field_treat == ARCHIVE_FIELD_IS_PTR &&
+        theAllowDelay2 == ALLOW_DELAY)
+      theAllowDelay2 = DONT_ALLOW_DELAY;
+
+    if (field_treat == ARCHIVE_FIELD_NORMAL)
     {
       //special case
       //move the prev field into this one
       exch_fields = true;
     }
+
     field_treat = ARCHIVE_FIELD_IS_REFERENCING;
     value = NULL;
     orig_ptr = NULL;
   }
 
-
-  new_field = new archive_field(type, true, false, value, orig_ptr, 0, field_treat, ref_field, get_serialize_only_for_eval(), allow_delay2, current_level);
-  allow_delay2 = ALLOW_DELAY;
-  if(!ref_field && (field_treat != ARCHIVE_FIELD_IS_BASECLASS) && orig_ptr &&
-    !get_is_temp_field() && (!get_is_temp_field_one_level() || ((field_treat == ARCHIVE_FIELD_IS_PTR) && !get_is_temp_field_also_for_ptr())))
+  new_field = new archive_field(type,
+                                true,
+                                false,
+                                value,
+                                orig_ptr,
+                                0,
+                                field_treat,
+                                ref_field,
+                                get_serialize_only_for_eval(),
+                                theAllowDelay2,
+                                theCurrentLevel);
+
+  theAllowDelay2 = ALLOW_DELAY;
+
+  if (!ref_field &&
+      field_treat != ARCHIVE_FIELD_IS_BASECLASS &&
+      orig_ptr &&
+      !get_is_temp_field() &&
+      (!get_is_temp_field_one_level() ||
+       (field_treat == ARCHIVE_FIELD_IS_PTR && !get_is_temp_field_also_for_ptr())))
   {
-    SIMPLE_HASHOUT_FIELD  f(type, orig_ptr);
+    SIMPLE_HASHOUT_FIELD f(type, orig_ptr);
     simple_hashout_fields->insert(f, new_field);
   }
-  if(!exch_fields)
+
+  if (!exch_fields)
   {
-    new_field->parent = current_compound_field;
-    new_field->id = ++nr_ids;
-    new_field->order = new_field->id;
-    if(current_compound_field->last_child)
-      current_compound_field->last_child->next = new_field;
+    new_field->theParent = current_compound_field;
+    new_field->theId = ++nr_ids;
+    new_field->theOrder = new_field->theId;
+
+    if (current_compound_field->theLastChild)
+      current_compound_field->theLastChild->theNextSibling = new_field;
     else
-      current_compound_field->first_child = new_field;
-    current_compound_field->last_child = new_field;
+      current_compound_field->theFirstChild = new_field;
+
+    current_compound_field->theLastChild = new_field;
   }
   else
   {
     exchange_fields(new_field, ref_field);
   }
-  current_level--;
+  theCurrentLevel--;
   return ref_field != NULL;
 }
 
-void Archiver::replace_field(archive_field  *new_field, archive_field  *ref_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::replace_field(archive_field* new_field, archive_field* ref_field)
 {
-  archive_field  *ref_field_parent = ref_field->parent;
-  archive_field  *ref_field_prev = ref_field_parent->first_child;
-  if(ref_field_prev == ref_field)//is first child
+  archive_field* ref_field_parent = ref_field->theParent;
+  archive_field* ref_field_prev = ref_field_parent->theFirstChild;
+
+  if (ref_field_prev == ref_field)//is first child
   {
-    ref_field_parent->first_child = new_field;
-    new_field->next = ref_field->next;
+    ref_field_parent->theFirstChild = new_field;
+    new_field->theNextSibling = ref_field->theNextSibling;
   }
   else
   {
-    while(ref_field_prev->next != ref_field)
-      ref_field_prev = ref_field_prev->next;
-    ref_field_prev->next = new_field;
-    new_field->next = ref_field->next;
+    while (ref_field_prev->theNextSibling != ref_field)
+      ref_field_prev = ref_field_prev->theNextSibling;
+
+    ref_field_prev->theNextSibling = new_field;
+    new_field->theNextSibling = ref_field->theNextSibling;
   }
-  new_field->parent = ref_field_parent;
-  if(ref_field_parent->last_child == ref_field)
-    ref_field_parent->last_child = new_field;
-  new_field->order = ref_field->order;
+
+  new_field->theParent = ref_field_parent;
+
+  if (ref_field_parent->theLastChild == ref_field)
+    ref_field_parent->theLastChild = new_field;
+
+  new_field->theOrder = ref_field->theOrder;
 }
 
-void Archiver::exchange_fields(archive_field  *new_field, archive_field  *ref_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::exchange_fields(archive_field* new_field, archive_field* ref_field)
 {
-  new_field->field_treat = ARCHIVE_FIELD_IS_REFERENCING;
-  ref_field->field_treat = ARCHIVE_FIELD_NORMAL;
-//  new_field->id = ref_field->id;
-//  ref_field->id = ++nr_ids;
-  new_field->id = ++nr_ids;
-  new_field->referencing = ref_field->id;
+  new_field->theKind = ARCHIVE_FIELD_IS_REFERENCING;
+  ref_field->theKind = ARCHIVE_FIELD_NORMAL;
+//  new_field->theId = ref_field->theId;
+//  ref_field->theId = ++nr_ids;
+  new_field->theId = ++nr_ids;
+  new_field->referencing = ref_field->theId;
 
   replace_field(new_field, ref_field);
 
-  ref_field->parent = current_compound_field;
-  if(current_compound_field->last_child)
-    current_compound_field->last_child->next = ref_field;
+  ref_field->theParent = current_compound_field;
+  if(current_compound_field->theLastChild)
+    current_compound_field->theLastChild->theNextSibling = ref_field;
   else
-    current_compound_field->first_child = ref_field;
-  ref_field->next = NULL;
-  current_compound_field->last_child = ref_field;
-  ref_field->order = nr_ids;
+    current_compound_field->theFirstChild = ref_field;
+  ref_field->theNextSibling = NULL;
+  current_compound_field->theLastChild = ref_field;
+  ref_field->theOrder = nr_ids;
 
-  new_field->allow_delay2 = ref_field->allow_delay2;
+  new_field->theAllowDelay2 = ref_field->theAllowDelay2;
 }
 
-bool Archiver::add_compound_field(const char *type,
-                              int version,
-                              bool is_class,
-                              const void *info,
-                              const void *ptr,//for classes, pointer to SerializeBaseClass
-                              enum ArchiveFieldTreat field_treat
-                              )
+
+/*******************************************************************************
+
+********************************************************************************/
+bool Archiver::add_compound_field(
+    const char* type,
+    int version,
+    bool is_class,
+    const void* info,
+    const void* ptr,//for classes, pointer to SerializeBaseClass
+    enum ArchiveFieldKind field_treat)
 {
-  current_level++;
-  archive_field  *new_field;
-  archive_field  *ref_field = NULL;
-  bool      exch_fields = false;
-  //int id = 0;
+  theCurrentLevel++;
+  archive_field* new_field;
+  archive_field* ref_field = NULL;
+  bool exch_fields = false;
+
   if(!ptr)
   {
     field_treat = ARCHIVE_FIELD_IS_NULL;
-    current_level--;
+    theCurrentLevel--;
   }
   else if((field_treat != ARCHIVE_FIELD_IS_BASECLASS) && ptr &&
     !get_is_temp_field() && (!get_is_temp_field_one_level() || ((field_treat == ARCHIVE_FIELD_IS_PTR) && !get_is_temp_field_also_for_ptr())))
@@ -311,9 +397,9 @@
   }
   if(ref_field)
   {
-    assert((field_treat != ARCHIVE_FIELD_NORMAL) || (ref_field->field_treat != ARCHIVE_FIELD_NORMAL));
-    if(get_is_temp_field_one_level() && (field_treat == ARCHIVE_FIELD_IS_PTR) && (allow_delay2 == ALLOW_DELAY))
-      allow_delay2 = DONT_ALLOW_DELAY;
+    assert((field_treat != ARCHIVE_FIELD_NORMAL) || (ref_field->theKind != ARCHIVE_FIELD_NORMAL));
+    if(get_is_temp_field_one_level() && (field_treat == ARCHIVE_FIELD_IS_PTR) && (theAllowDelay2 == ALLOW_DELAY))
+      theAllowDelay2 = DONT_ALLOW_DELAY;
     if(field_treat == ARCHIVE_FIELD_NORMAL)
     {
       //special case
@@ -324,8 +410,8 @@
     ptr = NULL;
   }
 
-  new_field = new archive_field(type, false, is_class, info, ptr, version, field_treat, ref_field, get_serialize_only_for_eval(), allow_delay2, current_level);
-  allow_delay2 = ALLOW_DELAY;
+  new_field = new archive_field(type, false, is_class, info, ptr, version, field_treat, ref_field, get_serialize_only_for_eval(), theAllowDelay2, theCurrentLevel);
+  theAllowDelay2 = ALLOW_DELAY;
   if(!ref_field && (field_treat != ARCHIVE_FIELD_IS_BASECLASS) && ptr &&
       !get_is_temp_field() && (!get_is_temp_field_one_level() || ((field_treat == ARCHIVE_FIELD_IS_PTR) && !get_is_temp_field_also_for_ptr())))
   {
@@ -341,14 +427,14 @@
   }
   if(!exch_fields)
   {
-    new_field->parent = current_compound_field;
-    new_field->id = ++nr_ids;
-    new_field->order = new_field->id;
-    if(current_compound_field->last_child)
-      current_compound_field->last_child->next = new_field;
+    new_field->theParent = current_compound_field;
+    new_field->theId = ++nr_ids;
+    new_field->theOrder = new_field->theId;
+    if(current_compound_field->theLastChild)
+      current_compound_field->theLastChild->theNextSibling = new_field;
     else
-      current_compound_field->first_child = new_field;
-    current_compound_field->last_child = new_field;
+      current_compound_field->theFirstChild = new_field;
+    current_compound_field->theLastChild = new_field;
     if(!ref_field && ptr)
       current_compound_field = new_field;
   }
@@ -357,23 +443,35 @@
     exchange_fields(new_field, ref_field);
   }
   if(ref_field)
-    current_level--;
+    theCurrentLevel--;
   return ref_field != NULL;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::add_end_compound_field()
 {
-  current_compound_field = current_compound_field->parent;
-  current_level--;
+  current_compound_field = current_compound_field->theParent;
+  theCurrentLevel--;
 }
 
-void Archiver::set_class_type(const char *class_name)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::set_class_type(const char* class_name)
 {
-  free(current_compound_field->type);
-  current_compound_field->type = strdup(class_name);
+  free(current_compound_field->theTypeName);
+  current_compound_field->theTypeName = strdup(class_name);
 }
 
-archive_field* Archiver::check_nonclass_pointer(const char *type, const void *ptr)
+
+/*******************************************************************************
+
+********************************************************************************/
+archive_field* Archiver::check_nonclass_pointer(const char* type, const void* ptr)
 {
   if(!ptr)
     return NULL;
@@ -391,28 +489,12 @@
   }
   return duplicate_field;
 }
-/*
-archive_field* Archiver::check_nonclass_pointer_internal(const void *ptr, archive_field *fields)
-{
-  archive_field *child;
-  child = fields->first_child;
-  while(child)
-  {
-    if(child->is_simple || !child->is_class)
-      if(child->assoc_ptr == ptr)
-        return child;
-    if(!child->is_simple)
-    {
-      archive_field* ref_field = check_nonclass_pointer_internal(ptr, child);
-      if(ref_field)
-        return ref_field;
-    }
-    child = child->next;
-  }
-  return 0;
-}
-*/
-archive_field* Archiver::check_class_pointer(const SerializeBaseClass *ptr)
+
+
+/*******************************************************************************
+
+********************************************************************************/
+archive_field* Archiver::check_class_pointer(const SerializeBaseClass* ptr)
 {
   if(!ptr)
     return NULL;
@@ -427,174 +509,173 @@
   }
   return duplicate_field;
 }
-/*
-archive_field* Archiver::check_class_pointer_internal(const SerializeBaseClass *ptr, archive_field *fields)
-{
-
-  archive_field *child;
-  child = fields->first_child;
-  while(child)
-  {
-    if(child->is_class)
-      if(child->assoc_class_ptr == ptr)
-        return child;
-    if(!child->is_simple)
-    {
-      archive_field* ref_field = check_class_pointer_internal(ptr, child);
-      if(ref_field)
-        return ref_field;
-    }
-    child = child->next;
-  }
-  return 0;
-}
-*/
-
-bool Archiver::read_next_field( char **type,
-                              std::string *value,
-                              int *id,
-                              int *version,
-                              bool *is_simple,
-                              bool *is_class,
-                              enum ArchiveFieldTreat *field_treat,
-                              int *referencing)
+
+
+/*******************************************************************************
+
+********************************************************************************/
+bool Archiver::read_next_field(
+    char** type,
+    std::string* value,
+    int* id,
+    int* version,
+    bool* is_simple,
+    bool* is_class,
+    enum ArchiveFieldKind* field_treat,
+    int* referencing)
 {
   bool retval = read_next_field_impl(type, value, id, version, is_simple, is_class, field_treat, referencing);
   if(retval && !*is_simple && (*field_treat != ARCHIVE_FIELD_IS_REFERENCING))
-    current_level++;
+    theCurrentLevel++;
   return retval;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::read_end_current_level()
 {
-  current_level--;
+  theCurrentLevel--;
   read_end_current_level_impl();
 }
 
 
-void Archiver::check_simple_field(bool retval,
-                                  const char *type,
-                                  const char *required_type,
-                                  bool is_simple,
-                                  enum ArchiveFieldTreat  field_treat,
-                                  enum ArchiveFieldTreat  required_field_treat,
-                                  int id)
-{
-  if(!retval)
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0001_NONEXISTENT_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#ifndef NDEBUG
-  if(!is_simple)
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#endif
-  if(field_treat == ARCHIVE_FIELD_IS_NULL)
-    return;
-#ifndef NDEBUG
-  if(strcmp(type, required_type))
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#endif
-  if((required_field_treat != (enum ArchiveFieldTreat)-1) && (field_treat != required_field_treat))
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-}
-
-void Archiver::check_nonclass_field(bool retval,
-                                  const char *type,
-                                  const char *required_type,
-                                  bool is_simple,
-                                  bool is_class,
-                                  enum ArchiveFieldTreat  field_treat,
-                                  enum ArchiveFieldTreat  required_field_treat,
-                                  int id)
-{
-  if(!retval)
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0001_NONEXISTENT_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#ifndef NDEBUG
-  if(is_simple || is_class)
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#endif
-  if(field_treat == ARCHIVE_FIELD_IS_NULL)
-    return;
-#ifndef NDEBUG
-  if(strcmp(type, required_type))
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#endif
-  if((required_field_treat != (enum ArchiveFieldTreat)-1) && (field_treat != required_field_treat))
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-}
-
-void Archiver::check_class_field(bool retval,
-                                  const char *type,
-                                  const char *required_type,
-                                  bool is_simple,
-                                  bool is_class,
-                                  enum ArchiveFieldTreat  field_treat,
-                                  enum ArchiveFieldTreat  required_field_treat,
-                                  int id)
-{
-  if(!retval)
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0001_NONEXISTENT_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#ifndef NDEBUG
-  if(is_simple || !is_class)
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#endif
-  if(field_treat == ARCHIVE_FIELD_IS_NULL)
-    return;
-#ifndef NDEBUG
-  if(strcmp(type, required_type))
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-#endif
-  if((required_field_treat != (enum ArchiveFieldTreat)-1) && (field_treat != required_field_treat))
-  {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS( id )
-    );
-  }
-}
-
-void Archiver::register_reference(int id, enum ArchiveFieldTreat field_treat, const void *ptr)
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::check_simple_field(
+    bool retval,
+    const char* type,
+    const char* required_type,
+    bool is_simple,
+    enum ArchiveFieldKind field_treat,
+    enum ArchiveFieldKind required_field_treat,
+    int id)
+{
+  if (!retval)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0001_NONEXISTENT_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+
+#ifndef NDEBUG
+  if (!is_simple)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+#endif
+
+  if(field_treat == ARCHIVE_FIELD_IS_NULL)
+    return;
+
+#ifndef NDEBUG
+  if (strcmp(type, required_type))
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+#endif
+
+  if ((required_field_treat != (enum ArchiveFieldKind)-1) &&
+      field_treat != required_field_treat)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+}
+
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::check_nonclass_field(
+    bool retval,
+    const char* type,
+    const char* required_type,
+    bool is_simple,
+    bool is_class,
+    enum ArchiveFieldKind field_treat,
+    enum ArchiveFieldKind required_field_treat,
+    int id)
+{
+  if (!retval)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0001_NONEXISTENT_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+
+#ifndef NDEBUG
+  if (is_simple || is_class)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+#endif
+
+  if (field_treat == ARCHIVE_FIELD_IS_NULL)
+    return;
+
+#ifndef NDEBUG
+  if (strcmp(type, required_type))
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+#endif
+
+  if ((required_field_treat != (enum ArchiveFieldKind)-1) &&
+      field_treat != required_field_treat)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+}
+
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::check_class_field(
+    bool retval,
+    const char* type,
+    const char* required_type,
+    bool is_simple,
+    bool is_class,
+    enum ArchiveFieldKind field_treat,
+    enum ArchiveFieldKind required_field_treat,
+    int id)
+{
+  if (!retval)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0001_NONEXISTENT_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+
+#ifndef NDEBUG
+  if (is_simple || !is_class)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+#endif
+
+  if (field_treat == ARCHIVE_FIELD_IS_NULL)
+    return;
+
+#ifndef NDEBUG
+  if (strcmp(type, required_type))
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+#endif
+
+  if ((required_field_treat != (enum ArchiveFieldKind)-1) && 
+     field_treat != required_field_treat)
+  {
+    throw ZORBA_EXCEPTION(zerr::ZCSE0002_INCOMPATIBLE_INPUT_FIELD, ERROR_PARAMS(id));
+  }
+}
+
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::register_reference(
+    int id,
+    enum ArchiveFieldKind field_treat,
+    const void* ptr)
 {
   if(get_is_temp_field())// && (field_treat != ARCHIVE_FIELD_IS_PTR))
     return;
@@ -605,16 +686,26 @@
   all_reference_list[id] = (void*)ptr;
 
 }
+
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::register_item(store::Item* i)
 {
   if(i)
     registered_items.push_back(i);
 }
 
-void Archiver::register_delay_reference(void **ptr,
-                                        bool is_class,
-                                        const char *class_name,
-                                        int referencing)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::register_delay_reference(
+    void** ptr,
+    bool is_class,
+    const char* class_name,
+    int referencing)
 {
   struct fwd_ref    fid;
   fid.referencing = referencing;
@@ -630,7 +721,14 @@
   fwd_reference_list.push_back(fid);
 }
 
-void Archiver::reconf_last_delayed_rcobject(void **last_obj, void **new_last_obj, bool to_add_ref)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::reconf_last_delayed_rcobject(
+    void** last_obj,
+    void** new_last_obj,
+    bool to_add_ref)
 {
   if(fwd_reference_list.size() > 0)
   {
@@ -644,45 +742,58 @@
   }
 }
 
-void Archiver::register_pointers_internal(archive_field *fields)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::register_pointers_internal(archive_field* fields)
 {
-  archive_field *child;
-  child = fields->first_child;
+  archive_field* child;
+  child = fields->theFirstChild;
   while(child)
   {
-    register_reference(child->id, child->field_treat, child->assoc_ptr);
-    if(!child->is_simple)
+    register_reference(child->theId, child->theKind, child->assoc_ptr);
+    if(!child->theIsSimple)
     {
       register_pointers_internal(child);
     }
-    child = child->next;
+    child = child->theNextSibling;
   }
 }
 
-void *Archiver::get_reference_value(int refid)
+
+/*******************************************************************************
+
+********************************************************************************/
+void* Archiver::get_reference_value(int refid)
 {
   if(internal_archive && !all_reference_list)
   {
     //construct all_reference_list
     root_tag_is_read();
-    register_pointers_internal(out_fields);
+    register_pointers_internal(theRootField);
   }
-  void *assoc_ptr = NULL;
+
+  void* assoc_ptr = NULL;
   //if(!all_reference_list->get((uint32_t)refid, assoc_ptr))
-  if(!(assoc_ptr=all_reference_list[refid]))
+  if(!(assoc_ptr = all_reference_list[refid]))
   {
-    Archiver *har = ::zorba::serialization::ClassSerializer::getInstance()->getArchiverForHardcodedObjects();
+    Archiver* har = ::zorba::serialization::ClassSerializer::getInstance()->getArchiverForHardcodedObjects();
     if(har != this)
       assoc_ptr = har->get_reference_value(refid);
   }
   return assoc_ptr;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::finalize_input_serialization()
 {
-  std::list<fwd_ref>::iterator    it;
-  void  *ptr;
-  for(it = fwd_reference_list.begin(); it != fwd_reference_list.end(); it++)
+  std::list<fwd_ref>::iterator it;
+  void* ptr;
+  for (it = fwd_reference_list.begin(); it != fwd_reference_list.end(); it++)
   {
     ptr = get_reference_value((*it).referencing);
     if(!ptr)
@@ -755,58 +866,88 @@
   }
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 int Archiver::get_class_version()
 {
   return current_class_version;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::set_class_version(int new_class_version)
 {
   current_class_version = new_class_version;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::root_tag_is_read()
 {
-  if(archive_version != g_zorba_classes_version)
+  if (theArchiveVersion != g_zorba_classes_version)
   {
-    throw ZORBA_EXCEPTION(
-      zerr::ZCSE0012_INCOMPATIBLE_ARCHIVE_VERSION,
-      ERROR_PARAMS( archive_version, g_zorba_classes_version )
-    );
+    throw ZORBA_EXCEPTION(zerr::ZCSE0012_INCOMPATIBLE_ARCHIVE_VERSION,
+    ERROR_PARAMS(theArchiveVersion, g_zorba_classes_version));
   }
-  //all_reference_list = new hash32map<void*>(nr_ids*2, 0.6f);
+
   all_reference_list = new void*[nr_ids+1];
   memset(all_reference_list, 0, sizeof(void*)*(nr_ids+1));
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 int Archiver::get_nr_ids()
 {
   return nr_ids;
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 void Archiver::prepare_serialize_out()
 {
-  if(!is_serialize_everything())
+  if (!is_serialize_everything())
   {
-    check_compound_fields(out_fields);
+    check_compound_fields(theRootField);
   }
-  while(check_allowed_delays(out_fields))
-  {}
 
+  while(check_allowed_delays(theRootField))
+  {
+  }
 }
 
-archive_field* Archiver::replace_with_null(archive_field *current_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+archive_field* Archiver::replace_with_null(archive_field* current_field)
 {
-  if(current_field->parent)
+  if (current_field->theParent)
   {
-    archive_field   *null_field = new archive_field("NULL",
-                                                    current_field->is_simple,
-                                                    current_field->is_class, "", NULL, 0,
-                                                    ARCHIVE_FIELD_IS_NULL, NULL, false, ALLOW_DELAY, current_field->level);
-    null_field->id = ++nr_ids;
+    archive_field* null_field = new archive_field("NULL",
+                                                  current_field->theIsSimple,
+                                                  current_field->theIsClass,
+                                                  "",
+                                                  NULL,
+                                                  0,
+                                                  ARCHIVE_FIELD_IS_NULL,
+                                                  NULL,
+                                                  false,
+                                                  ALLOW_DELAY,
+                                                  current_field->theLevel);
+    null_field->theId = ++nr_ids;
     replace_field(null_field, current_field);
-    current_field->parent = NULL;
-    current_field->next = NULL;
+    current_field->theParent = NULL;
+    current_field->theNextSibling = NULL;
 
     return null_field;
   }
@@ -814,59 +955,71 @@
   return NULL;
 }
 
-int Archiver::compute_field_depth(archive_field *field)
+
+/*******************************************************************************
+
+********************************************************************************/
+int Archiver::compute_field_depth(archive_field* field)
 {
   archive_field *temp;
   int i=0;
-  temp = field->parent;
+  temp = field->theParent;
   while(temp)
   {
-    temp = temp->parent;
+    temp = temp->theParent;
     i++;
   }
   return i;
 }
 
-int Archiver::get_only_for_eval(archive_field *field)
+
+/*******************************************************************************
+
+********************************************************************************/
+int Archiver::get_only_for_eval(archive_field* field)
 {
-  if(field->only_for_eval)
-    return field->only_for_eval;
+  if(field->theOnlyForEval)
+    return field->theOnlyForEval;
   archive_field *child;
-  for(child = field->first_child; child; child = child->next)
+  for(child = field->theFirstChild; child; child = child->theNextSibling)
   {
-    if(child->only_for_eval)
-      return child->only_for_eval;
+    if(child->theOnlyForEval)
+      return child->theOnlyForEval;
   }
   return 0;
 }
 
-archive_field* Archiver::find_top_most_eval_only_field(archive_field *parent_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+archive_field* Archiver::find_top_most_eval_only_field(archive_field* parent_field)
 {
   int ref_depth = -1;
   archive_field *refering_field = NULL;
   archive_field *child;
-  child = parent_field->first_child;
+  child = parent_field->theFirstChild;
   while(child)
   {
-    if(child->only_for_eval)
+    if(child->theOnlyForEval)
     {
     }
-    else if((child->field_treat == ARCHIVE_FIELD_IS_REFERENCING) &&
-        get_only_for_eval(child->refered))
+    else if((child->theKind == ARCHIVE_FIELD_IS_REFERENCING) &&
+        get_only_for_eval(child->theReferredField))
     {
-      int new_depth = compute_field_depth(child->refered);
+      int new_depth = compute_field_depth(child->theReferredField);
       if(!refering_field || (ref_depth > new_depth))
       {
         ref_depth = new_depth;
         refering_field = child;
       }
     }
-    else if(!child->is_simple && !child->refered)
+    else if(!child->theIsSimple && !child->theReferredField)
     {
       archive_field *new_refering = find_top_most_eval_only_field(child);
       if(new_refering)
       {
-        int new_depth = compute_field_depth(new_refering->refered);
+        int new_depth = compute_field_depth(new_refering->theReferredField);
         if(!refering_field || (ref_depth > new_depth))
         {
           ref_depth = new_depth;
@@ -874,49 +1027,57 @@
         }
       }
     }
-    child = child->next;
+    child = child->theNextSibling;
   }
   return refering_field;
 }
 
-void Archiver::exchange_mature_fields(archive_field *field1, archive_field *field2)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::exchange_mature_fields(archive_field* field1, archive_field* field2)
 {
   archive_field *field1_prev = get_prev(field1);
-  archive_field *field1_next = field1->next;
-  archive_field *field1_parent = field1->parent;
+  archive_field *field1_next = field1->theNextSibling;
+  archive_field *field1_parent = field1->theParent;
   archive_field *field2_prev = get_prev(field2);
-  archive_field *field2_parent = field2->parent;
-  archive_field *field2_next = field2->next;
+  archive_field *field2_parent = field2->theParent;
+  archive_field *field2_next = field2->theNextSibling;
   //move field2
   if(field1_prev)
-    field1_prev->next = field2;
+    field1_prev->theNextSibling = field2;
   else
-    field1_parent->first_child = field2;
-  field2->next = field1_next;
+    field1_parent->theFirstChild = field2;
+  field2->theNextSibling = field1_next;
   if(!field1_next)
-    field1_parent->last_child = field2;
-  field2->parent = field1_parent;
+    field1_parent->theLastChild = field2;
+  field2->theParent = field1_parent;
   //move field1
   if(field2_prev)
-    field2_prev->next = field1;
+    field2_prev->theNextSibling = field1;
   else
-    field2_parent->first_child = field1;
-  field1->next = field2_next;
+    field2_parent->theFirstChild = field1;
+  field1->theNextSibling = field2_next;
   if(!field2_next)
-    field2_parent->last_child = field1;
-  field1->parent = field2_parent;
+    field2_parent->theLastChild = field1;
+  field1->theParent = field2_parent;
 
-  ENUM_ALLOW_DELAY temp_delay = field1->allow_delay2;
-  field1->allow_delay2 = field2->allow_delay2;
-  field2->allow_delay2 = temp_delay;
+  ENUM_ALLOW_DELAY temp_delay = field1->theAllowDelay2;
+  field1->theAllowDelay2 = field2->theAllowDelay2;
+  field2->theAllowDelay2 = temp_delay;
 
   unsigned int  temp_order;
-  temp_order = field1->order;
-  field1->order = field2->order;
-  field2->order = temp_order;
+  temp_order = field1->theOrder;
+  field1->theOrder = field2->theOrder;
+  field2->theOrder = temp_order;
 }
 
-void Archiver::check_compound_fields(archive_field *parent_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::check_compound_fields(archive_field* parent_field)
 {
   //resolve all references first
   //iterate: find the reference to the top most eval_only field and resolve it
@@ -927,75 +1088,83 @@
     if(!refering_field)
       break;
 
-    if((refering_field->refered->allow_delay2 != ALLOW_DELAY) ||
-      (refering_field->refered->field_treat == ARCHIVE_FIELD_NORMAL) ||
-      !refering_field->refered->only_for_eval)
+    if((refering_field->theReferredField->theAllowDelay2 != ALLOW_DELAY) ||
+      (refering_field->theReferredField->theKind == ARCHIVE_FIELD_NORMAL) ||
+      !refering_field->theReferredField->theOnlyForEval)
     {
       //must preserve this serialization
-      archive_field *temp_field = refering_field->refered->parent;
+      archive_field *temp_field = refering_field->theReferredField->theParent;
       while(temp_field)
       {
-        temp_field->only_for_eval = 0;
-        temp_field = temp_field->parent;
+        temp_field->theOnlyForEval = 0;
+        temp_field = temp_field->theParent;
       }
     }
     else
     {
-      exchange_mature_fields(refering_field, refering_field->refered);
-      refering_field->only_for_eval = refering_field->refered->only_for_eval;
+      exchange_mature_fields(refering_field, refering_field->theReferredField);
+      refering_field->theOnlyForEval = refering_field->theReferredField->theOnlyForEval;
     }
-    clean_only_for_eval(refering_field->refered, get_only_for_eval(refering_field->refered));
+    clean_only_for_eval(refering_field->theReferredField, get_only_for_eval(refering_field->theReferredField));
   }
   while(check_only_for_eval_nondelay_referencing(parent_field))
   {}
   replace_only_for_eval_with_null(parent_field);
 }
 
-bool Archiver::check_only_for_eval_nondelay_referencing(archive_field   *parent_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+bool Archiver::check_only_for_eval_nondelay_referencing(archive_field* parent_field)
 {
-  archive_field   *current_field = parent_field->first_child;
+  archive_field   *current_field = parent_field->theFirstChild;
   while(current_field)
   {
-    if(current_field->only_for_eval && (current_field->field_treat != ARCHIVE_FIELD_NORMAL))
+    if(current_field->theOnlyForEval && (current_field->theKind != ARCHIVE_FIELD_NORMAL))
     {
-      if((current_field->field_treat == ARCHIVE_FIELD_IS_REFERENCING) &&
-        (current_field->allow_delay2 != ALLOW_DELAY) &&
-        (!current_field->refered->only_for_eval))
+      if((current_field->theKind == ARCHIVE_FIELD_IS_REFERENCING) &&
+        (current_field->theAllowDelay2 != ALLOW_DELAY) &&
+        (!current_field->theReferredField->theOnlyForEval))
       {
         //exchange fields
-      //  exchange_mature_fields(current_field, current_field->refered);
-      //  current_field->only_for_eval = false;
+      //  exchange_mature_fields(current_field, current_field->theReferredField);
+      //  current_field->theOnlyForEval = false;
 
         //must preserve this serialization
-        archive_field *temp_field = current_field->parent;
+        archive_field *temp_field = current_field->theParent;
         while(temp_field)
         {
-          temp_field->only_for_eval = 0;
-          temp_field = temp_field->parent;
+          temp_field->theOnlyForEval = 0;
+          temp_field = temp_field->theParent;
         }
-        clean_only_for_eval(current_field, current_field->only_for_eval);
+        clean_only_for_eval(current_field, current_field->theOnlyForEval);
         return true;
       }
     }
 
-    if(!current_field->is_simple)
+    if(!current_field->theIsSimple)
     {
       if(check_only_for_eval_nondelay_referencing(current_field))
         return true;
     }
-    current_field = current_field->next;
+    current_field = current_field->theNextSibling;
   }
   return false;
 }
 
-void Archiver::replace_only_for_eval_with_null(archive_field   *parent_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::replace_only_for_eval_with_null(archive_field* parent_field)
 {
-  archive_field   *current_field = parent_field->first_child;
+  archive_field   *current_field = parent_field->theFirstChild;
   while(current_field)
   {
-    if(current_field->only_for_eval &&
-      (current_field->field_treat != ARCHIVE_FIELD_NORMAL) &&
-      (current_field->field_treat != ARCHIVE_FIELD_IS_BASECLASS))
+    if(current_field->theOnlyForEval &&
+      (current_field->theKind != ARCHIVE_FIELD_NORMAL) &&
+      (current_field->theKind != ARCHIVE_FIELD_IS_BASECLASS))
     {
     //don't save it, replace it with NULL if possible
       archive_field *null_field = replace_with_null(current_field);
@@ -1004,50 +1173,57 @@
       current_field = null_field;
     }
 
-    if(!current_field->is_simple)
+    if(!current_field->theIsSimple)
     {
       replace_only_for_eval_with_null(current_field);
     }
-    current_field = current_field->next;
+    current_field = current_field->theNextSibling;
   }
 }
 
-void Archiver::clean_only_for_eval(archive_field *field, int substract_value)
+
+/*******************************************************************************
+
+********************************************************************************/
+void Archiver::clean_only_for_eval(archive_field* field, int substract_value)
 {
-  if(field->only_for_eval >= substract_value)
-    field->only_for_eval -= substract_value;
+  if(field->theOnlyForEval >= substract_value)
+    field->theOnlyForEval -= substract_value;
   else
-    field->only_for_eval = 0;
-  if(!field->is_simple)
+    field->theOnlyForEval = 0;
+  if(!field->theIsSimple)
   {
-    archive_field   *child = field->first_child;
+    archive_field   *child = field->theFirstChild;
     while(child)
     {
       clean_only_for_eval(child, substract_value);
-      child = child->next;
+      child = child->theNextSibling;
     }
   }
 }
-/*
+
+
+/*******************************************************************************
   return 0 if not found
   return -1 if field1 is before field2
   return 1  if field1 is after field2
-*/
-int Archiver::check_order(archive_field *parent_field,
-                           archive_field *field1,
-                           archive_field *field2)
+********************************************************************************/
+int Archiver::check_order(
+    archive_field* parent_field,
+    archive_field* field1,
+    archive_field* field2)
 {
 
-  if(field1->order < field2->order)
+  if(field1->theOrder < field2->theOrder)
     return -1;
-  else if(field1->order == field2->order)
+  else if(field1->theOrder == field2->theOrder)
     return 0;
   else
     return 1;
 /*
   archive_field *child;
   int check_ret;
-  child = parent_field->first_child;
+  child = parent_field->theFirstChild;
   while(child)
   {
     if(child == field1)
@@ -1060,61 +1236,79 @@
       if(check_ret)
         return check_ret;
     }
-    child = child->next;
+    child = child->theNextSibling;
   }
   return 0;
 */
 }
 
+
+/*******************************************************************************
+
+********************************************************************************/
 archive_field* Archiver::get_prev(archive_field* field)
 {
-  archive_field *temp;
-  temp = field->parent->first_child;
-  if(temp == field)
+  archive_field* temp;
+  temp = field->theParent->theFirstChild;
+
+  if (temp == field)
     return NULL;
-  while(temp)
+
+  while (temp)
   {
-    if(temp->next == field)
+    if (temp->theNextSibling == field)
       return temp;
-    temp = temp->next;
+
+    temp = temp->theNextSibling;
   }
+
   assert(false);//unreachable
   return NULL;
 }
 
-bool Archiver::check_allowed_delays(archive_field *parent_field)
+
+/*******************************************************************************
+
+********************************************************************************/
+bool Archiver::check_allowed_delays(archive_field* parent_field)
 {
   //check all fields with dont_allow_delay and see if they are delayed
   //exchange field with the reference then
-  archive_field   *child;
-  child = parent_field->first_child;
-  while(child)
+  archive_field* child;
+  child = parent_field->theFirstChild;
+
+  while (child)
   {
-    if((child->field_treat == ARCHIVE_FIELD_IS_REFERENCING) &&
-       (((child->allow_delay2 == DONT_ALLOW_DELAY) && (check_order(out_fields, child, child->refered) < 1) && (child->allow_delay2 == DONT_ALLOW_DELAY)) ||
-       (child->allow_delay2 == SERIALIZE_NOW)))
+    if (child->theKind == ARCHIVE_FIELD_IS_REFERENCING &&
+       ((child->theAllowDelay2 == DONT_ALLOW_DELAY &&
+         check_order(theRootField, child, child->theReferredField) < 1 &&
+         child->theAllowDelay2 == DONT_ALLOW_DELAY) ||
+        child->theAllowDelay2 == SERIALIZE_NOW))
     {
-      if(child->allow_delay2 == SERIALIZE_NOW)
+      if (child->theAllowDelay2 == SERIALIZE_NOW)
       {
       }
-      if((child->refered->field_treat == ARCHIVE_FIELD_NORMAL) ||
-        (child->refered->allow_delay2 == SERIALIZE_NOW))
+
+      if (child->theReferredField->theKind == ARCHIVE_FIELD_NORMAL ||
+          child->theReferredField->theAllowDelay2 == SERIALIZE_NOW)
       {
         //impossible to solve situation
         //need to change the serialization order somewhere
         throw ZORBA_EXCEPTION(zerr::ZCSE0014_INFINITE_CIRCULAR_DEPENDENCIES);
       }
       //exchange fields
-      exchange_mature_fields(child, child->refered);
+      exchange_mature_fields(child, child->theReferredField);
 
-    //  child->refered->allow_delay2 = ALLOW_DELAY;
-      child = child->refered;
+      //  child->theReferredField->theAllowDelay2 = ALLOW_DELAY;
+      child = child->theReferredField;
 
       return true;
     }
-    if(check_allowed_delays(child))
+
+    if (check_allowed_delays(child))
       return true;
-    child = child->next;
+
+    child = child->theNextSibling;
   }
 
   return false;

=== modified file 'src/zorbaserialization/archiver.h'
--- src/zorbaserialization/archiver.h	2012-02-02 09:56:52 +0000
+++ src/zorbaserialization/archiver.h	2012-02-26 21:58:26 +0000
@@ -18,13 +18,13 @@
 #define ZORBA_BINARY_SERIALIZATION_ARCHIVER
 
 #include "util/hashmap32.h"
-//#include "zorbautils/hashmap.h"
 #include <stack>
 
 #include "zorbaserialization/class_serializer.h"
 #include "zorbaserialization/plan_settings.h"
 
-namespace zorba{
+namespace zorba
+{
 
 namespace store
 {
@@ -46,18 +46,44 @@
 /*
   Archiver is working with fields. One archive contains a sequence of fields.
   They can be simple fields or combo fields.
+
   Simple fields: have values of simple types.
   Combo fields: contain a sequence of fields. Are like list, vector, class etc.
   
   Each field has a unique id.
 
-  Special field is a field that points to a previous field. This is to resolve serialization 
-  of pointers to the same object.
+  Special field is a field that points to a previous field. This is to resolve
+  serialization of pointers to the same object.
 */
 
 class ClassSerializer;
 
-enum ArchiveFieldTreat
+
+/*******************************************************************************
+
+  ARCHIVE_FIELD_IS_REFERENCING :
+  ------------------------------
+  A field A that references another field B, where both A and B represent the
+  "same" object.
+
+  ARCHIVE_FIELD_IS_BASECLASS :
+  ----------------------------
+  A field representing a "partial" class object: If an obj O belong to a class C
+  and C is a subclass of a base class B, then a field of ARCHIVE_FIELD_IS_BASECLASS
+  kind is created to represent the serialization of the data members of B.
+
+  ARCHIVE_FIELD_IS_PTR :
+  ----------------------
+
+  ARCHIVE_FIELD_IS_NULL :
+  -----------------------
+  A field representing a NULL pointer.
+
+  ARCHIVE_FIELD_NORMAL :
+  ----------------------
+
+********************************************************************************/
+enum ArchiveFieldKind
 {
   ARCHIVE_FIELD_NORMAL,
   ARCHIVE_FIELD_IS_PTR,
@@ -66,6 +92,21 @@
   ARCHIVE_FIELD_IS_REFERENCING
 };
 
+
+/*******************************************************************************
+
+********************************************************************************/
+enum ENUM_ALLOW_DELAY  
+{
+  ALLOW_DELAY,
+  DONT_ALLOW_DELAY,
+  SERIALIZE_NOW
+};
+
+
+/*******************************************************************************
+
+********************************************************************************/
 struct fwd_ref
 {
   int referencing;
@@ -76,66 +117,185 @@
   bool to_add_ref;
 };
 
-enum ENUM_ALLOW_DELAY  
-{
-  ALLOW_DELAY,
-  DONT_ALLOW_DELAY,
-  SERIALIZE_NOW
-};
-
+
+/*******************************************************************************
+  theId :
+  -------
+  The unique id of the field. Not initialized by constructor.
+
+  theIsSimple:
+  ------------
+  Whether this field represents a "simple" obj or a "compound" obj. 
+
+  theIsClass:
+  -----------
+  Whether this field represents a class obj or not. Class objs are always 
+  considered as "compound", so if theIsClass is true, theIsSimple is false. 
+  However, the reverse is not true: a non-class obj may be simple or compound.
+
+  theClassVersion:
+  ----------------
+  If this field represents a class obj, the class version of that obj.
+
+  theKind:
+  --------
+  The kind of the field. See ArchiveFieldKind enum above.
+
+  theTypeName:
+  ------------
+
+  theTypeNamePosInPool:
+  ---------------------
+
+  theValue:
+  ---------
+  For simple fields
+
+  theValuePosInPool:
+  ------------------
+  Not initialized by constructor.
+
+  thePtr :
+  --------
+  Pointer to the obj represented by this field. NULL if this field is referencing
+  another field that represents the same obj.
+
+  theReferredField:
+  -----------------
+
+  referencing:
+  ------------
+
+  theOrder:
+  ---------
+  Order in the tree. Not initialized by constructor.
+
+  theLevel:
+  ---------
+  The level of this field, i.e., the nuber of fields in the paths from this
+  field to the root. The root is at level 0.
+
+  theNextSibling:
+  ---------------
+
+  theFirstChild:
+  --------------
+
+  theLastChild:
+  -------------
+
+  theParent:
+  ----------
+
+  theOnlyForEval:
+  ---------------
+
+  theAllowDelay2:
+  ---------------
+
+  theBytesSaved:
+  --------------
+
+  theObjectsSaved:
+  ----------------
+
+  The following data members are serialized:
+
+  1. theTypeName  : only if theKind is PTR
+  2. theValue     : except if theKind is REFERENCING
+  3. theReferedId : only if theKind is REFERENCING
+  4. theKind
+  5. theId
+********************************************************************************/
 class archive_field
 {
 public:
-  char  *type;
-  unsigned int   type_str_pos_in_pool;
-  bool  is_simple;
-  unsigned int   version;//for classes
-  enum ArchiveFieldTreat  field_treat;
-  unsigned int   referencing;
-  unsigned int   id;
-  unsigned int   order;///order in the tree
-  unsigned int   level;
-  bool  is_class;
-  const char  *value;//for simple fields
-  unsigned int   value_str_pos_in_pool;
-  union{
-    const SerializeBaseClass  *assoc_class_ptr;
-    const void  *assoc_ptr;
+  unsigned int                 theId;
+
+  bool                         theIsSimple;
+  bool                         theIsClass;
+  unsigned int                 theClassVersion;
+
+  enum ArchiveFieldKind        theKind;
+
+  char                       * theTypeName;
+  unsigned int                 theTypeNamePosInPool;
+
+  const char                 * theValue;
+  unsigned int                 theValuePosInPool;
+
+  union
+  {
+    const SerializeBaseClass * assoc_class_ptr;
+    const void               * assoc_ptr;
   };
 
-  class archive_field  *next;
-  class archive_field  *first_child;
-  class archive_field  *last_child;
-  class archive_field  *parent;
-  class archive_field  *refered;
-
-  int  only_for_eval;
-  ENUM_ALLOW_DELAY  allow_delay2;
+  class archive_field        * theReferredField;
+  unsigned int                 referencing;
+
+  unsigned int                 theOrder;
+
+  unsigned int                 theLevel;
+
+  class archive_field        * theNextSibling;
+  class archive_field        * theFirstChild;
+  class archive_field        * theLastChild;
+  class archive_field        * theParent;
+
+  int                          theOnlyForEval;
+
+  ENUM_ALLOW_DELAY             theAllowDelay2;
+
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
-  unsigned int    bytes_saved;
-  unsigned int    objects_saved;
+  unsigned int                 theBytesSaved;
+  unsigned int                 theObjectsSaved;
 #endif
+
 public:
-  archive_field(const char *type, bool is_simple, bool is_class, 
-                const void *value, const void *assoc_ptr,
-                int version, enum ArchiveFieldTreat  field_treat,
-                archive_field *refered,
-                int only_for_eval,
-                ENUM_ALLOW_DELAY allow_delay,
-                unsigned int level);
+  archive_field(
+      const char* type,
+      bool is_simple,
+      bool is_class, 
+      const void* value,
+      const void* assoc_ptr,
+      int version, 
+      enum ArchiveFieldKind  field_treat,
+      archive_field* refered,
+      int only_for_eval,
+      ENUM_ALLOW_DELAY allow_delay,
+      unsigned int level);
+
   ~archive_field();
 };
 
-//base class
+
+/*******************************************************************************
+
+  theSerializingOut :
+  -------------------
+  Whether the archiver is used to serialize or deserialize a plan.
+
+  theRootField :
+  --------------
+  The root of the fields tree.
+
+  theCCB :
+  --------
+  to workaround user defined function compile-at-runtime.
+
+********************************************************************************/
 class Archiver
 {
   friend class ClassSerializer;
+
   struct SIMPLE_HASHOUT_FIELD
   {
     std::string   type;
-    const void *  ptr;
+    const void   * ptr;
+
     SIMPLE_HASHOUT_FIELD() {}
-    SIMPLE_HASHOUT_FIELD(const char *typestr, const void *ptrptr)
+
+    SIMPLE_HASHOUT_FIELD(const char* typestr, const void* ptrptr)
     {
       type = typestr;
       if(type[type.length()-1] == '*')
@@ -144,6 +304,7 @@
 
     }
   };
+
   class SimpleHashoutFieldCompare
   {
   public: 
@@ -162,285 +323,364 @@
         return false;
     }
   };
+
+  typedef HashMap<SIMPLE_HASHOUT_FIELD, 
+                  archive_field*,
+                  SimpleHashoutFieldCompare> SimpleFieldMap;
+
 protected:
-  bool  serializing_out;
-  //ClassSerializer *ser;
-
-  int  serialize_base_class;
-
-  //std::list<struct field_ptr_vs_id>   all_reference_list;
-  //hash32map<void*>       *all_reference_list;//key is id, value is assoc_ptr
-  void*                      *all_reference_list;
+  bool                          theSerializingOut;
+
+  int                           serialize_base_class;
+
+  void                       ** all_reference_list;
   
-  std::list<struct fwd_ref>   fwd_reference_list;
-
-  std::string archive_name;
-  std::string archive_info;
-  unsigned long       archive_version;
-
-  class archive_field  *out_fields;
-  class archive_field  *current_compound_field;
-  HashMap<SIMPLE_HASHOUT_FIELD, archive_field*, SimpleHashoutFieldCompare> *simple_hashout_fields;//for simple types
-  hash64map<archive_field*>       *hash_out_fields;//key is ptr, value is archive_field*, for non-simple types
-  std::vector<archive_field*>     orphan_fields;
-
-  int   nr_ids;
-  int   current_class_version;
-
-  bool  read_optional;
-  int   is_temp_field;
-  //bool  is_temp_field_one_level;
-  unsigned int   current_level;
+  std::list<struct fwd_ref>     fwd_reference_list;
+
+  std::string                   theArchiveName;
+  std::string                   theArchiveInfo;
+  unsigned long                 theArchiveVersion;
+
+  archive_field               * theRootField;
+
+  archive_field               * current_compound_field;
+
+  SimpleFieldMap              * simple_hashout_fields;//for simple types
+
+  hash64map<archive_field*>   * hash_out_fields;//key is ptr, value is archive_field*, for non-simple types
+  std::vector<archive_field*>   orphan_fields;
+
+  int                           nr_ids;
+
+  int                           current_class_version;
+
+  bool                          read_optional;
+
+  int                           theIsTempField;
+
+  unsigned int                  theCurrentLevel;
+
   std::stack< std::pair<unsigned int, bool> >   limit_temp_level_stack;
-  bool  internal_archive;
-  int   only_for_eval;
-  bool  serialize_everything;
-  bool  loading_hardcoded_objects;
-  ENUM_ALLOW_DELAY  allow_delay2;
-
-  std::vector<store::Item*>   registered_items;
-  SerializationCallback*      theUserCallback;
+
+  bool                          internal_archive;
+
+  int                           theOnlyForEval;
+
+  bool                          theSerializeEverything;
+
+  bool                          loading_hardcoded_objects;
+
+  ENUM_ALLOW_DELAY              theAllowDelay2;
+
+  std::vector<store::Item*>     registered_items;
+
+  SerializationCallback       * theUserCallback;
 
 public:
-  //CompilerCB  *compiler_cb;///to workaround user defined function compile-at-runtime
-  bool        dont_allow_delay_for_plan_sctx;
+  bool                          dont_allow_delay_for_plan_sctx;
+
 public:
   Archiver(bool is_serializing_out, bool internal_archive=false);
+
   virtual ~Archiver();
 
-public:
-  SerializationCallback*
-  getUserCallback() const { return theUserCallback; }
-
-  void
-  setUserCallback(SerializationCallback* aCallback) { theUserCallback = aCallback; }
-
-public:
-  bool add_simple_field( const char *type, 
-                        const char *value,
-                        const void *orig_ptr,
-                        enum ArchiveFieldTreat field_treat);
-
-  bool add_compound_field( const char *type,
-                          int version,
-                          bool is_class,
-                          const void *info,
-                          const void *ptr,//for classes, pointer to SerializeBaseClass
-                          enum ArchiveFieldTreat field_treat
-                          );
+  SerializationCallback* getUserCallback() const { return theUserCallback; }
+
+  void setUserCallback(SerializationCallback* aCallback) { theUserCallback = aCallback; }
+
+  bool add_simple_field( 
+      const char* type, 
+      const char* value,
+      const void* orig_ptr,
+      enum ArchiveFieldKind field_treat);
+
+  bool add_compound_field( 
+      const char* type,
+      int version,
+      bool is_class,
+      const void* info,
+      const void* ptr,//for classes, pointer to SerializeBaseClass
+      enum ArchiveFieldKind field_treat);
 
   void add_end_compound_field();
 
-  void set_class_type(const char *class_name);
+  void set_class_type(const char* class_name);
 
   //return the id of previous object if it is the same
-  archive_field* check_nonclass_pointer(const char *type, const void *ptr);
-  archive_field* check_class_pointer(const SerializeBaseClass *ptr);
+  archive_field* check_nonclass_pointer(const char* type, const void* ptr);
+
+  archive_field* check_class_pointer(const SerializeBaseClass* ptr);
   
 
-  bool read_next_field( char **type, 
-                        std::string *value,
-                        int *id, 
-                        int *version, 
-                        bool *is_simple, 
-                        bool *is_class,
-                        enum ArchiveFieldTreat *field_treat,
-                        int *referencing);
+  bool read_next_field( 
+      char** type, 
+      std::string* value,
+      int* id, 
+      int* version, 
+      bool* is_simple, 
+      bool* is_class,
+      enum ArchiveFieldKind* field_treat,
+      int* referencing);
 
   void read_end_current_level();
 
-  virtual bool read_next_field_impl( char **type, 
-                                std::string *value,
-                                int *id, 
-                                int *version, 
-                                bool *is_simple, 
-                                bool *is_class,
-                                enum ArchiveFieldTreat *field_treat,
-                                int *referencing) = 0;
+  virtual bool read_next_field_impl(
+      char** type, 
+      std::string* value,
+      int* id, 
+      int* version, 
+      bool* is_simple, 
+      bool* is_class,
+      enum ArchiveFieldKind* field_treat,
+      int* referencing) = 0;
 
   virtual void read_end_current_level_impl() = 0;
 
 
 protected:
 
-  virtual void create_archive(const char *archive_name, 
-                              const char *archive_info,
-                              int archive_version);
+  virtual void create_archive(
+      const char* archive_name, 
+      const char* archive_info,
+      int archive_version);
 
   virtual void serialize_out() = 0;
 
-  virtual void read_archive_description(std::string *archive_name,
-                                        std::string *archive_info,
-                                        int *archive_version, 
-                                        int *nr_ids)
+  virtual void read_archive_description(
+      std::string* archive_name,
+      std::string* archive_info,
+      int* archive_version, 
+      int* nr_ids)
   {
-    *archive_name = this->archive_name;
-    *archive_info = this->archive_info;
-    *archive_version = this->archive_version;
+    *archive_name = theArchiveName;
+    *archive_info = theArchiveInfo;
+    *archive_version = theArchiveVersion;
     *nr_ids = this->nr_ids;
   }
 
 
 protected:
-  archive_field* check_nonclass_pointer_internal(const void *ptr, archive_field *fields);
-  archive_field* check_class_pointer_internal(const SerializeBaseClass *ptr, archive_field *fields);
-  void replace_field(archive_field  *new_field, archive_field  *ref_field);
-  void exchange_fields(archive_field  *new_field, archive_field  *ref_field);
+  archive_field* check_nonclass_pointer_internal(
+      const void* ptr,
+      archive_field* fields);
+
+  archive_field* check_class_pointer_internal(
+      const SerializeBaseClass* ptr,
+      archive_field* fields);
+
+  void replace_field(archive_field* new_field, archive_field* ref_field);
+
+  void exchange_fields(archive_field* new_field, archive_field* ref_field);
 
   void root_tag_is_read();
-  void register_pointers_internal(archive_field *fields);
+
+  void register_pointers_internal(archive_field* fields);
+
   void prepare_serialize_out();
-  archive_field* replace_with_null(archive_field *current_field);
-  int compute_field_depth(archive_field *field);
-  int get_only_for_eval(archive_field *field);
-  archive_field* find_top_most_eval_only_field(archive_field *parent_field);
-  void check_compound_fields(archive_field   *parent_field);
-  bool check_only_for_eval_nondelay_referencing(archive_field   *parent_field);
-  void replace_only_for_eval_with_null(archive_field   *parent_field);
-  void clean_only_for_eval(archive_field *field, int substract_value);
-  void exchange_mature_fields(archive_field *field1, archive_field *field2);
+
+  archive_field* replace_with_null(archive_field* current_field);
+
+  int compute_field_depth(archive_field* field);
+
+  int get_only_for_eval(archive_field* field);
+
+  archive_field* find_top_most_eval_only_field(archive_field* parent_field);
+
+  void check_compound_fields(archive_field* parent_field);
+
+  bool check_only_for_eval_nondelay_referencing(archive_field* parent_field);
+
+  void replace_only_for_eval_with_null(archive_field* parent_field);
+
+  void clean_only_for_eval(archive_field* field, int substract_value);
+
+  void exchange_mature_fields(archive_field* field1, archive_field* field2);
+
   archive_field* get_prev(archive_field* field);
-  int check_order(archive_field *parent_field,
-                  archive_field *field1,
-                  archive_field *field2);
-  bool check_allowed_delays(archive_field *parent_field);
+
+  int check_order(
+      archive_field* parent_field,
+      archive_field* field1,
+      archive_field* field2);
+
+  bool check_allowed_delays(archive_field* parent_field);
 
 public:
-  void check_simple_field(bool retval, 
-                                  const char *type,
-                                  const char *required_type, 
-                                  bool is_simple, 
-                                  enum ArchiveFieldTreat  field_treat,
-                                  enum ArchiveFieldTreat  required_field_treat,
-                                  int id);
-  void check_nonclass_field(bool retval, 
-                                  const char *type,
-                                  const char *required_type, 
-                                  bool is_simple, 
-                                  bool is_class, 
-                                  enum ArchiveFieldTreat  field_treat,
-                                  enum ArchiveFieldTreat  required_field_treat,
-                                  int id);
-  void check_class_field(bool retval, 
-                                  const char *type,
-                                  const char *required_type, 
-                                  bool is_simple, 
-                                  bool is_class, 
-                                  enum ArchiveFieldTreat  field_treat,
-                                  enum ArchiveFieldTreat  required_field_treat,
-                                  int id);
-  void register_reference(int id, enum ArchiveFieldTreat field_treat, const void *ptr);
-  void register_delay_reference(void **ptr, bool is_class, const char *class_name, int referencing);
-  void reconf_last_delayed_rcobject(void **last_obj, void **new_last_obj, bool to_add_ref);
+  void check_simple_field(
+      bool retval, 
+      const char* type,
+      const char* required_type, 
+      bool is_simple, 
+      enum ArchiveFieldKind field_treat,
+      enum ArchiveFieldKind required_field_treat,
+      int id);
+
+  void check_nonclass_field(
+      bool retval, 
+      const char* type,
+      const char* required_type, 
+      bool is_simple, 
+      bool is_class, 
+      enum ArchiveFieldKind field_treat,
+      enum ArchiveFieldKind required_field_treat,
+      int id);
+
+  void check_class_field(
+      bool retval, 
+      const char* type,
+      const char* required_type, 
+      bool is_simple, 
+      bool is_class, 
+      enum ArchiveFieldKind field_treat,
+      enum ArchiveFieldKind required_field_treat,
+      int id);
+
+  void register_reference(
+      int id, 
+      enum ArchiveFieldKind field_treat,
+      const void* ptr);
+
+  void register_delay_reference(
+      void** ptr,
+      bool is_class,
+      const char* class_name,
+      int referencing);
+
+  void reconf_last_delayed_rcobject(
+      void** last_obj, 
+      void** new_last_obj,
+      bool to_add_ref);
+
   void register_item(store::Item* i);
 
   int get_class_version();
+
   void set_class_version(int new_class_version);
 
-
   //to help check class name at runtime
-  void    set_serialize_base_class(bool s)
+  void  set_serialize_base_class(bool s)
   {
     if(s)
       serialize_base_class++;
     else
       serialize_base_class--;
+
     assert(serialize_base_class >= 0);
     assert(serialize_base_class <= 1);
   }
-  bool    is_serialize_base_class()
+
+  bool is_serialize_base_class()
   {
     return serialize_base_class > 0;
   }
-  bool  is_serializing_out()//true out, false in
+
+  bool is_serializing_out()
   {
-    return serializing_out;
+    return theSerializingOut;
   }
-//  ClassSerializer*  get_serializer()
-//  {
-//    return ser;
-//  }
-  void *get_reference_value(int refid);
+
+  void* get_reference_value(int refid);
+
   void finalize_input_serialization();
 
   void set_read_optional_field(bool activate_optional)
   {
     this->read_optional = activate_optional;
   }
+
   bool get_read_optional_field() { return this->read_optional; }
+
   void set_is_temp_field(bool is_temp)
   {
-    if(is_temp)
-      this->is_temp_field++;
+    if (is_temp)
+      theIsTempField++;
     else
-      this->is_temp_field--;
-    assert(is_temp_field >= 0);
+      theIsTempField--;
+
+    assert(theIsTempField >= 0);
   }
-  bool get_is_temp_field() { return (this->is_temp_field > 0); }
+
+  bool get_is_temp_field() { return (theIsTempField > 0); }
+
   void set_is_temp_field_one_level(bool is_temp, bool also_for_ptr = false)
   {
-    if(is_temp)
-      limit_temp_level_stack.push(std::pair<int, bool>(current_level + 1, also_for_ptr));
+    if (is_temp)
+      limit_temp_level_stack.push(std::pair<int, bool>(theCurrentLevel + 1,
+                                                       also_for_ptr));
     else
       limit_temp_level_stack.pop();
   }
+
   bool get_is_temp_field_one_level() 
   {
-    //if(get_is_temp_field()) return true;
-    if(limit_temp_level_stack.empty())
+    if (limit_temp_level_stack.empty())
+    {
       return false;
-    else if(limit_temp_level_stack.top().first == current_level)
+    }
+    else if (limit_temp_level_stack.top().first == theCurrentLevel)
+    {
       return true;
+    }
     else
     {
-      unsigned int   lastlevel = limit_temp_level_stack.top().first;
-      archive_field   *temp_field = current_compound_field;
-      while(temp_field && (temp_field->level >= lastlevel))
+      unsigned int lastlevel = limit_temp_level_stack.top().first;
+      archive_field* temp_field = current_compound_field;
+
+      while (temp_field && (temp_field->theLevel >= lastlevel))
       {
-        if((temp_field->field_treat == ARCHIVE_FIELD_IS_PTR) ||
-           (temp_field->field_treat == ARCHIVE_FIELD_IS_REFERENCING))
+        if (temp_field->theKind == ARCHIVE_FIELD_IS_PTR ||
+            temp_field->theKind == ARCHIVE_FIELD_IS_REFERENCING)
            return false;
-        temp_field = temp_field->parent;
+
+        temp_field = temp_field->theParent;
       }
-      if(temp_field)
+
+      if (temp_field)
         return true;
       else
         return false;
     }
   } 
-  bool get_is_temp_field_also_for_ptr() {return (limit_temp_level_stack.top().first == current_level) && limit_temp_level_stack.top().second;} 
+
+  bool get_is_temp_field_also_for_ptr() 
+  {
+    return (limit_temp_level_stack.top().first == theCurrentLevel &&
+            limit_temp_level_stack.top().second);
+  } 
 
   int get_nr_ids();
 
-  bool is_serialize_everything() {return this->serialize_everything;}
-  void set_serialize_everything() {this->serialize_everything = true;}
-
-  int get_serialize_only_for_eval() {return only_for_eval;}
+  bool is_serialize_everything() { return theSerializeEverything; }
+
+  void set_serialize_everything() { theSerializeEverything = true; }
+
+  int get_serialize_only_for_eval() { return theOnlyForEval; }
+
   void set_serialize_only_for_eval(bool evalonly)
   {
-    if(evalonly)
-      only_for_eval++;
+    if (evalonly)
+      theOnlyForEval++;
     else
-      only_for_eval--;
-    assert(only_for_eval >= 0);
+      theOnlyForEval--;
+
+    assert(theOnlyForEval >= 0);
   }
+
   void set_loading_hardcoded_objects(bool set_hardcoded)
   {
     this->loading_hardcoded_objects = set_hardcoded;
   }
-  bool is_loading_hardcoded_objects()
-  {
-    return loading_hardcoded_objects;
-  }
+
+  bool is_loading_hardcoded_objects() { return loading_hardcoded_objects; }
+
   void dont_allow_delay(ENUM_ALLOW_DELAY d = DONT_ALLOW_DELAY)
   {
-    this->allow_delay2 = d;
-  }
-  void reset_allow_delay()
-  {
-    this->allow_delay2 = ALLOW_DELAY;
-  }
-  ENUM_ALLOW_DELAY get_allow_delay() {return this->allow_delay2;}
+    theAllowDelay2 = d;
+  }
+
+  void reset_allow_delay() { theAllowDelay2 = ALLOW_DELAY; }
+
+  ENUM_ALLOW_DELAY get_allow_delay() { return theAllowDelay2; }
 };
 
   

=== modified file 'src/zorbaserialization/bin_archiver.cpp'
--- src/zorbaserialization/bin_archiver.cpp	2011-06-14 17:26:33 +0000
+++ src/zorbaserialization/bin_archiver.cpp	2012-02-26 21:58:26 +0000
@@ -19,13 +19,16 @@
 #include "diagnostics/xquery_diagnostics.h"
 #include <fstream>
 
-namespace zorba{
-  namespace serialization{
+namespace zorba
+{
+
+namespace serialization
+{
 
 #define ZORBA_BIN_SERIALIZED_PLAN_STRING    "ZORBA-XQUERY BINARY SERIALIZED PLAN"
 #define BUFFER_SEGMENT_SIZE  2*1024*1024
 
-BinArchiver::BinArchiver(std::istream *is) : Archiver(false)
+BinArchiver::BinArchiver(std::istream* is) : Archiver(false)
 {
   //open archiver for input
   this->is = is;
@@ -68,9 +71,9 @@
   }
   in_current = in_buffer;
 
-  read_string(archive_name);
-  read_string(archive_info);
-  archive_version = read_int();
+  read_string(theArchiveName);
+  read_string(theArchiveInfo);
+  theArchiveVersion = read_int();
   nr_ids = read_int();
   unsigned int is_release = read_int();
 #ifndef NDEBUG
@@ -88,10 +91,12 @@
   read_string_pool();
 
   root_tag_is_read();
-
 }
 
-BinArchiver::BinArchiver(std::ostream *os) : Archiver(true)
+
+BinArchiver::BinArchiver(std::ostream* os)
+  :
+  Archiver(true)
 {
   //open archiver for output
   this->is = NULL;
@@ -103,12 +108,14 @@
   in_buffer = NULL;
 }
 
+
 BinArchiver::~BinArchiver()
 {
   if(in_buffer)
     free(in_buffer);
 }
 
+
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
 void add_indentation(std::ostream &os, unsigned int indent)
 {
@@ -118,7 +125,8 @@
   }
 }
 
-void write_xml_name(std::ostream &os, const char *type)
+
+void write_xml_name(std::ostream& os, const char* type)
 {
   if(!type || !*type)
   {
@@ -135,29 +143,33 @@
   }
 }
 
-void output_statistics_archive_field(std::ostream &os, unsigned int indent, archive_field *parent)
+
+void output_statistics_archive_field(
+    std::ostream& os,
+    unsigned int indent,
+    archive_field* parent)
 {
   add_indentation(os, indent);
   os << "<";
-  write_xml_name(os, parent->type);
+  write_xml_name(os, parent->theTypeName);
   os << " n=\"" << parent->objects_saved << "\"";
-  os << " s=\"" << parent->bytes_saved << "\"";
-  if(parent->field_treat == ARCHIVE_FIELD_IS_REFERENCING)
+  os << " s=\"" << parent->thebytesSaved << "\"";
+  if(parent->theKind == ARCHIVE_FIELD_IS_REFERENCING)
       os << " t=\"ref\"";
-  else if(parent->field_treat == ARCHIVE_FIELD_IS_PTR)
+  else if(parent->theKind == ARCHIVE_FIELD_IS_PTR)
       os << " t=\"ptr\"";
-  if((!parent->is_simple) && (parent->field_treat != ARCHIVE_FIELD_IS_REFERENCING))
+  if((!parent->theIsSimple) && (parent->theKind != ARCHIVE_FIELD_IS_REFERENCING))
   {
     os << ">" << std::endl;
     archive_field   *current_field = parent->first_child;
     while(current_field)
     {
       output_statistics_archive_field(os, indent+2, current_field);
-      current_field = current_field->next;
+      current_field = current_field->theNextSibling;
     }
     add_indentation(os, indent);
     os << "</";
-    write_xml_name(os, parent->type);
+    write_xml_name(os, parent->theTypeName);
     os << ">" << std::endl;
   }
   else
@@ -167,9 +179,10 @@
 }
 #endif
 
+
 void BinArchiver::serialize_out()
 {
-  if(!os)
+  if (!os)
   {
     throw ZORBA_EXCEPTION(zerr::ZCSE0007_INPUT_ARCHIVE_USED_FOR_OUT_SERIALIZATION);
   }
@@ -185,9 +198,9 @@
 
   os->write(ZORBA_BIN_SERIALIZED_PLAN_STRING, sizeof(ZORBA_BIN_SERIALIZED_PLAN_STRING));
 
-  os->write(archive_name.c_str(), (std::streamsize)archive_name.length()+1);
-  os->write(archive_info.c_str(), (std::streamsize)archive_info.length()+1);
-  write_int(archive_version);
+  os->write(theArchiveName.c_str(), (std::streamsize)theArchiveName.length()+1);
+  os->write(theArchiveInfo.c_str(), (std::streamsize)theArchiveInfo.length()+1);
+  write_int(theArchiveVersion);
   write_int(nr_ids);
 #ifndef NDEBUG
   write_int(0);//for debug
@@ -196,13 +209,13 @@
 #endif
 
   //first gather all strings in a string pool
-  collect_strings(out_fields);
+  collect_strings(theRootField);
   //now serialize the string pool
   serialize_out_string_pool();
 
   //now serialize the fields
-  serialize_compound_fields(out_fields);
-  if(bitfill)
+  serialize_compound_fields(theRootField);
+  if (bitfill)
   {
     current_byte <<= (8-bitfill);
     os->write((char*)&current_byte, 1);
@@ -210,6 +223,7 @@
     bytes_saved++;
 #endif
   }
+
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
   std::ofstream   plan_xml("plan.xml");
   plan_xml << "<plan objects_saved=\"" << objects_saved << "\""
@@ -229,6 +243,7 @@
 #endif
 }
 
+
 int BinArchiver::add_to_string_pool(const char *str)
 {
   if(!str)
@@ -252,42 +267,46 @@
   return str_pos;
 }
 
-void BinArchiver::collect_strings(archive_field   *parent_field)
+
+void BinArchiver::collect_strings(archive_field* parent_field)
 {
-  archive_field   *current_field = parent_field->first_child;
-  while(current_field)
+  archive_field* current_field = parent_field->theFirstChild;
+  while (current_field)
   {
-    if(current_field->field_treat != ARCHIVE_FIELD_IS_NULL)
+    if(current_field->theKind != ARCHIVE_FIELD_IS_NULL)
     {
 #ifdef NDEBUG
-      if(current_field->is_class && (current_field->field_treat == ARCHIVE_FIELD_IS_PTR))
+      if(current_field->theIsClass && (current_field->theKind == ARCHIVE_FIELD_IS_PTR))
 #endif
-        current_field->type_str_pos_in_pool = add_to_string_pool(current_field->type);
-      if(current_field->field_treat != ARCHIVE_FIELD_IS_REFERENCING)
+        current_field->theTypeNamePosInPool = add_to_string_pool(current_field->theTypeName);
+      if(current_field->theKind != ARCHIVE_FIELD_IS_REFERENCING)
       {
-        current_field->value_str_pos_in_pool = add_to_string_pool(current_field->value);
+        current_field->theValuePosInPool = add_to_string_pool(current_field->theValue);
       }
     }
-    if(!current_field->is_simple)
+
+    if(!current_field->theIsSimple)
     {
-      if(current_field->field_treat != ARCHIVE_FIELD_IS_REFERENCING)
+      if(current_field->theKind != ARCHIVE_FIELD_IS_REFERENCING)
       {
         collect_strings(current_field);
       }
     }
-    current_field = current_field->next;
+
+    current_field = current_field->theNextSibling;
   }
 }
 
-void   BinArchiver::serialize_out_string_pool()
+
+void BinArchiver::serialize_out_string_pool()
 {
   //sort strings based on use count
   unsigned int i,j;
-  for(i=0;i<strings_pos.size();i++)
+  for (i = 0; i < strings_pos.size(); i++)
   {
-    for(j=i+1;j<strings_pos.size();j++)
+    for (j = i+1; j < strings_pos.size(); j++)
     {
-      if(strings.at(strings_pos[i]).count < strings.at(strings_pos[j]).count)
+      if (strings.at(strings_pos[i]).count < strings.at(strings_pos[j]).count)
       {
         unsigned int temp;
         temp = strings_pos[i];
@@ -317,27 +336,29 @@
   }
 }
 
+
 void BinArchiver::serialize_compound_fields(archive_field   *parent_field)
 {
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
   unsigned int    bytes_saved1 = bytes_saved;
   unsigned int    objects_saved1 = objects_saved;
 #endif
-  archive_field   *current_field = parent_field->first_child;
+  archive_field* current_field = parent_field->theFirstChild;
+
   while(current_field)
   {
 #ifndef NDEBUG
     unsigned char tempbyte;
     tempbyte = 0;
-    tempbyte |= current_field->is_simple ? 1 : 0;
-    tempbyte |= current_field->is_class ? 1<<1 : 0;
-    tempbyte |= (current_field->field_treat&0x0F)<<4;
+    tempbyte |= current_field->theIsSimple ? 1 : 0;
+    tempbyte |= current_field->theIsClass ? 1<<1 : 0;
+    tempbyte |= (current_field->theKind&0x0F)<<4;
     write_bits(tempbyte, 8);
 #else
-    //write_bit(current_field->is_class ? 1 : 0);
-    //write_bits(current_field->field_treat, 3);
+    //write_bit(current_field->theIsClass ? 1 : 0);
+    //write_bits(current_field->theKind, 3);
     unsigned char small_treat = 0;
-    switch(current_field->field_treat)
+    switch(current_field->theKind)
     {
     case ARCHIVE_FIELD_IS_NULL:          small_treat = 1;break;
     case ARCHIVE_FIELD_IS_REFERENCING:   small_treat = 2;break;
@@ -345,41 +366,41 @@
     }
     write_bits(small_treat, 2);
 #endif
-    if(current_field->field_treat != ARCHIVE_FIELD_IS_NULL)
+    if(current_field->theKind != ARCHIVE_FIELD_IS_NULL)
     {
 #ifdef NDEBUG
-      if(current_field->is_class && (current_field->field_treat == ARCHIVE_FIELD_IS_PTR))
+      if(current_field->theIsClass && (current_field->theKind == ARCHIVE_FIELD_IS_PTR))
 #endif
       {
-        if(!current_field->type)
+        if(!current_field->theTypeName)
           write_int_exp2(0);
         else
-          write_int_exp2(strings.at(current_field->type_str_pos_in_pool-1).final_pos);
+          write_int_exp2(strings.at(current_field->theTypeNamePosInPool-1).final_pos);
       }
-      write_int_exp(current_field->id - this->last_id);
-      last_id = current_field->id;
-      if(current_field->field_treat != ARCHIVE_FIELD_IS_REFERENCING)
+      write_int_exp(current_field->theId - this->last_id);
+      last_id = current_field->theId;
+      if(current_field->theKind != ARCHIVE_FIELD_IS_REFERENCING)
       {
 #ifndef NDEBUG
-        write_int(current_field->version);
+        write_int(current_field->theClassVersion);
 #endif
-        if(!current_field->value_str_pos_in_pool)
-          write_int_exp2(current_field->value_str_pos_in_pool);
+        if(!current_field->theValuePosInPool)
+          write_int_exp2(current_field->theValuePosInPool);
         else
-          write_int_exp2(strings.at(current_field->value_str_pos_in_pool-1).final_pos);
+          write_int_exp2(strings.at(current_field->theValuePosInPool-1).final_pos);
       }
       else
         write_int(current_field->referencing);
     }
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
     objects_saved++;
-    if(current_field->field_treat == ARCHIVE_FIELD_IS_PTR)
+    if(current_field->theKind == ARCHIVE_FIELD_IS_PTR)
       nr_ptrs++;
 #endif
 
-    if(!current_field->is_simple)
+    if(!current_field->theIsSimple)
     {
-      if(current_field->field_treat != ARCHIVE_FIELD_IS_REFERENCING)
+      if(current_field->theKind != ARCHIVE_FIELD_IS_REFERENCING)
       {
         serialize_compound_fields(current_field);
 #ifndef NDEBUG
@@ -389,16 +410,17 @@
 #endif
       }
     }
-    current_field = current_field->next;
+    current_field = current_field->theNextSibling;
   }
 
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
   //gather statistics for this node
-  parent_field->bytes_saved = bytes_saved - bytes_saved1;
-  parent_field->objects_saved = objects_saved - objects_saved1;
+  parent_field->thebytesSaved = bytes_saved - bytes_saved1;
+  parent_field->theObjectsSaved = objects_saved - objects_saved1;
 #endif
 }
 
+
 void BinArchiver::write_string(const char *str)
 {
   os->write(str, (std::streamsize)strlen(str)+1);
@@ -407,6 +429,7 @@
 #endif
 }
 
+
 void BinArchiver::write_bit(unsigned char bit)
 {
   current_byte <<= 1;
@@ -423,6 +446,7 @@
   }
 }
 
+
 void BinArchiver::write_bits(unsigned int value, unsigned int bits)
 {
   while(bits)
@@ -432,6 +456,7 @@
   }
 }
 
+
 void BinArchiver::write_int(unsigned int intval)
 {
   //write 7 bits per byte, only significant bits
@@ -448,9 +473,9 @@
   tmp = (intval & 0x7F) | 0x80;
   //os->write((char*)&tmp, 1);
   write_bits(tmp, 8);
-
 }
 
+
 void BinArchiver::write_int_exp(unsigned int intval)
 {
   if(intval == 1)
@@ -479,6 +504,7 @@
   }
 }
 
+
 void BinArchiver::write_int_exp2(unsigned int intval)
 {
   if(intval < (1<<4))
@@ -533,6 +559,7 @@
   in_current++;
 }
 
+
 void BinArchiver::read_string(char* str)
 {
   //char c;
@@ -560,6 +587,7 @@
   in_current++;
 }
 
+
 unsigned char BinArchiver::read_bit()
 {
   if(bitfill == 0)
@@ -574,6 +602,7 @@
   return result;
 }
 
+
 unsigned int BinArchiver::read_bits(unsigned int bits)
 {
   unsigned int result = 0;
@@ -607,6 +636,7 @@
   return result;
 }
 
+
 unsigned int BinArchiver::read_int()
 {
   unsigned int outval = 0;
@@ -623,6 +653,7 @@
   return outval;
 }
 
+
 unsigned int BinArchiver::read_int_exp()
 {
   unsigned char bit;
@@ -641,6 +672,7 @@
     return read_bits(32);
 }
 
+
 unsigned int BinArchiver::read_int_exp2()
 {
   unsigned char bit;
@@ -660,6 +692,7 @@
 
 }
 
+
 void BinArchiver::read_string_pool()
 {
   strings.clear();
@@ -681,13 +714,14 @@
   bitfill = 8;
 }
 
+
 bool BinArchiver::read_next_field_impl( char **type, 
                               std::string *value,
                               int *id, 
                               int *version, 
                               bool *is_simple, 
                               bool *is_class,
-                              enum ArchiveFieldTreat *field_treat,
+                              enum ArchiveFieldKind *field_treat,
                               int *referencing)
 {
   if(!is)
@@ -701,7 +735,7 @@
 #ifndef NDEBUG 
   *is_simple = false; 
   *is_class = false;
-  *field_treat = (enum ArchiveFieldTreat)-1;
+  *field_treat = (enum ArchiveFieldKind)-1;
 #endif
   *referencing = -1;
 
@@ -713,10 +747,10 @@
     return false;
   *is_simple = tempbyte & 0x01 ? true : false;
   *is_class = tempbyte & 0x02 ? true : false;
-  *field_treat = (enum ArchiveFieldTreat)((tempbyte>>4)&0x0F);
+  *field_treat = (enum ArchiveFieldKind)((tempbyte>>4)&0x0F);
 #else
   //*is_class = read_bit();
-  //*field_treat = (enum ArchiveFieldTreat)read_bits(3);
+  //*field_treat = (enum ArchiveFieldKind)read_bits(3);
   unsigned char small_treat = read_bits(2);
   switch(small_treat)
   {
@@ -760,8 +794,6 @@
 }
 
 
-
-
 void BinArchiver::read_end_current_level_impl()
 {
 #ifndef NDEBUG

=== modified file 'src/zorbaserialization/bin_archiver.h'
--- src/zorbaserialization/bin_archiver.h	2011-06-14 17:26:33 +0000
+++ src/zorbaserialization/bin_archiver.h	2012-02-26 21:58:26 +0000
@@ -29,83 +29,98 @@
 
 class BinArchiver : public Archiver
 {
-  std::istream *is;
-  std::ostream *os;
-
-//  int   read_tag_level;
-//  char  field_type[1000];
-  bool  has_attributes;
-  bool  is_compound_field_without_children;
-
-  HashCharPtrObj<int>    string_pool;
+  std::istream             * is;
+
+  std::ostream             * os;
+
+  bool                       has_attributes;
+  bool                       is_compound_field_without_children;
+
+  HashCharPtrObj<int>        string_pool;
+
   typedef struct
   {
     std::string   str;
     unsigned int  count;
     unsigned int  final_pos;//1 based
-  }STRING_POS;
+  } STRING_POS;
+
   std::vector<STRING_POS>    strings;
   std::vector<unsigned int>  strings_pos;
 
-  unsigned int last_id;
-  unsigned char current_byte;
-  unsigned char bitfill;
+  unsigned int               last_id;
+  unsigned char              current_byte;
+  unsigned char              bitfill;
 
-  unsigned char *in_buffer;
-  unsigned char *in_current;
-  size_t        size_read;
+  unsigned char            * in_buffer;
+  unsigned char            * in_current;
+  size_t                     size_read;
 
 #ifdef ZORBA_PLAN_SERIALIZER_STATISTICS
-  unsigned int    bytes_saved;
-  unsigned int    objects_saved;
-  unsigned int    nr_ptrs;
-  unsigned int    strings_saved;
+  unsigned int               bytes_saved;
+  unsigned int               objects_saved;
+  unsigned int               nr_ptrs;
+  unsigned int               strings_saved;
 #endif
 
 public:
-  BinArchiver(std::istream *is);
-  BinArchiver(std::ostream *os);
+  BinArchiver(std::istream* is);
+
+  BinArchiver(std::ostream* os);
+
   virtual ~BinArchiver();
 
-  virtual bool read_next_field_impl( char **type, 
-                                std::string *value,
-                                int *id, 
-                                int *version, 
-                                bool *is_simple, 
-                                bool *is_class,
-                                enum ArchiveFieldTreat *field_treat,
-                                int *referencing);
+  virtual bool read_next_field_impl( 
+      char** type, 
+      std::string* value,
+      int* id, 
+      int* version, 
+      bool* is_simple, 
+      bool* is_class,
+      enum ArchiveFieldKind* field_treat,
+      int* referencing);
 
   virtual void read_end_current_level_impl();
 
-
-///////////////////////////////////
   virtual void serialize_out();
 
-
 protected:
   //writing
-  int add_to_string_pool(const char *str);
-  void collect_strings(archive_field   *parent_field);
+  int add_to_string_pool(const char* str);
+
+  void collect_strings(archive_field* parent_field);
+
   void serialize_out_string_pool();
-  void serialize_compound_fields(archive_field   *parent_field);
-  //void encode_string(const char *value);
-  //const char *get_field_treat_string(enum ArchiveFieldTreat field_treat);
-  void write_string(const char *str);
+
+  void serialize_compound_fields(archive_field* parent_field);
+
+  void write_string(const char* str);
+
   void write_bit(unsigned char bit);
+
   void write_bits(unsigned int value, unsigned int bits);
+
   void write_int(unsigned int intval);
+
   void write_int_exp(unsigned int intval);
+
   void write_int_exp2(unsigned int intval);
 
   //reading
-  void read_string(std::string &str);
+  void read_string(std::string& str);
+
   void read_string(char* str);
+
   unsigned char read_bit();
-  unsigned int  read_bits(unsigned int bits);
-  unsigned int  read_int();
-  unsigned int  read_int_exp();
-  unsigned int  read_int_exp2();
+
+  unsigned int read_bits(unsigned int bits);
+
+  unsigned int read_int();
+
+  unsigned int read_int_exp();
+
+  unsigned int read_int_exp2();
+
   void read_string_pool();
 };
 

=== modified file 'src/zorbaserialization/class_serializer.cpp'
--- src/zorbaserialization/class_serializer.cpp	2011-10-03 09:18:49 +0000
+++ src/zorbaserialization/class_serializer.cpp	2012-02-26 21:58:26 +0000
@@ -189,7 +189,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -220,7 +220,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -250,7 +250,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -280,7 +280,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -310,7 +310,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -340,7 +340,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -370,7 +370,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -400,7 +400,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -430,7 +430,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -462,7 +462,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -494,7 +494,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -532,7 +532,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -569,7 +569,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -598,7 +598,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -638,7 +638,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -667,7 +667,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -698,13 +698,13 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_simple_field(retval, type, "std::string*", is_simple, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_simple_field(retval, type, "std::string*", is_simple, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       obj = NULL;
@@ -741,13 +741,13 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_simple_field(retval, type, "char*", is_simple, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_simple_field(retval, type, "char*", is_simple, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       obj = NULL;
@@ -787,7 +787,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);

=== modified file 'src/zorbaserialization/mem_archiver.cpp'
--- src/zorbaserialization/mem_archiver.cpp	2011-06-14 17:26:33 +0000
+++ src/zorbaserialization/mem_archiver.cpp	2012-02-26 21:58:26 +0000
@@ -17,60 +17,68 @@
 
 #include "zorbaserialization/mem_archiver.h"
 
-namespace zorba{
-  namespace serialization{
+namespace zorba
+{
+
+namespace serialization
+{
 
 void MemArchiver::reset_serialize_in()
 {
-  serializing_out = false;
-  current_level = 0;
+  theSerializingOut = false;
+  theCurrentLevel = 0;
 
-  current_field = out_fields->first_child;
+  current_field = theRootField->theFirstChild;
   root_tag_is_read();
 }
 
-bool MemArchiver::read_next_field_impl( char **type, 
-                      std::string *value,
-                      int *id, 
-                      int *version, 
-                      bool *is_simple, 
-                      bool *is_class,
-                      enum ArchiveFieldTreat *field_treat,
-                      int *referencing)
+
+bool MemArchiver::read_next_field_impl( 
+    char** type, 
+    std::string* value,
+    int* id, 
+    int* version, 
+    bool* is_simple, 
+    bool* is_class,
+    enum ArchiveFieldKind* field_treat,
+    int* referencing)
 {
-  if((current_field == NULL) || is_after_last)
+  if (current_field == NULL || is_after_last)
     return false;
-  *type = current_field->type;
-  *value = current_field->value;
-  *id = current_field->id;
-  *version = current_field->version;
-  *is_simple = current_field->is_simple;
-  *is_class = current_field->is_class;
-  *field_treat = current_field->field_treat;
+
+  *type = current_field->theTypeName;
+  *value = current_field->theValue;
+  *id = current_field->theId;
+  *version = current_field->theClassVersion;
+  *is_simple = current_field->theIsSimple;
+  *is_class = current_field->theIsClass;
+  *field_treat = current_field->theKind;
   *referencing = current_field->referencing;
 
   is_after_last = false;
-  if(current_field->first_child)
-    current_field = current_field->first_child;
+  if(current_field->theFirstChild)
+    current_field = current_field->theFirstChild;
   else if(!*is_simple && ((*field_treat == ARCHIVE_FIELD_IS_BASECLASS) || (*field_treat == ARCHIVE_FIELD_IS_PTR)))
   {
     //class without childs
-    temp_field.parent = current_field;
+    temp_field.theParent = current_field;
     current_field = &temp_field;//prepare for read_end_current_level()
   }
-  else if(current_field->next)
-    current_field = current_field->next;
+  else if(current_field->theNextSibling)
+    current_field = current_field->theNextSibling;
   else
     is_after_last = true;
   return true;
 }
 
+
 void MemArchiver::read_end_current_level_impl()
 {
   is_after_last = false;
-  current_field = current_field->parent;
-  if(current_field->next)
-    current_field = current_field->next;
+  current_field = current_field->theParent;
+
+  if(current_field->theNextSibling)
+    current_field = current_field->theNextSibling;
   else
     is_after_last = true;
 }

=== modified file 'src/zorbaserialization/mem_archiver.h'
--- src/zorbaserialization/mem_archiver.h	2011-06-14 17:26:33 +0000
+++ src/zorbaserialization/mem_archiver.h	2012-02-26 21:58:26 +0000
@@ -41,7 +41,7 @@
                                 int *version, 
                                 bool *is_simple, 
                                 bool *is_class,
-                                enum ArchiveFieldTreat *field_treat,
+                                enum ArchiveFieldKind *field_treat,
                                 int *referencing);
 
   virtual void read_end_current_level_impl();

=== modified file 'src/zorbaserialization/template_serializer.h'
--- src/zorbaserialization/template_serializer.h	2011-08-27 14:57:52 +0000
+++ src/zorbaserialization/template_serializer.h	2012-02-26 21:58:26 +0000
@@ -74,7 +74,7 @@
       int   version;
       bool  is_simple = true;
       bool  is_class = false;
-      enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+      enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
       int   referencing;
       bool  retval;
       retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -143,7 +143,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -196,7 +196,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -260,13 +260,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_nonclass_field(retval, type, "std::vector<T>*", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_nonclass_field(retval, type, "std::vector<T>*", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       obj = NULL;
@@ -349,7 +349,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -393,7 +393,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -442,13 +442,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_nonclass_field(retval, type, "std::pair<T1, T2>", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_nonclass_field(retval, type, "std::pair<T1, T2>", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       obj = NULL;
@@ -533,13 +533,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_nonclass_field(retval, type, "std::map<T1, T2>", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_nonclass_field(retval, type, "std::map<T1, T2>", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       obj = NULL;
@@ -634,7 +634,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -688,7 +688,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = true;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -795,13 +795,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = true;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_class_field(retval, "", "", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_class_field(retval, "", "", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       assert(!ar.is_serialize_base_class());

=== modified file 'src/zorbaserialization/xml_archiver.cpp'
--- src/zorbaserialization/xml_archiver.cpp	2011-06-14 17:26:33 +0000
+++ src/zorbaserialization/xml_archiver.cpp	2012-02-26 21:58:26 +0000
@@ -18,10 +18,16 @@
 #include "zorbaserialization/xml_archiver.h"
 #include "diagnostics/xquery_diagnostics.h"
 
-namespace zorba{
-  namespace serialization{
-
-XmlArchiver::XmlArchiver(std::istream *is) : Archiver(false)
+namespace zorba
+{
+
+namespace serialization
+{
+
+
+XmlArchiver::XmlArchiver(std::istream* is) 
+  :
+  Archiver(false)
 {
   //open archiver for input
   this->is = is;
@@ -60,6 +66,7 @@
   read_tag_level++;
 }
 
+
 XmlArchiver::XmlArchiver(std::ostream *os) : Archiver(true)
 {
   //open archiver for output
@@ -71,6 +78,7 @@
   indent_off = sizeof(indent_spaces)-1;
 }
 
+
 void XmlArchiver::serialize_out()
 {
   if(!os)
@@ -82,56 +90,56 @@
 
   write_string("<?xml version=\"1.0\"?>\n");
   write_string("<zorba_archive archive_name=\"");
-  encode_string(archive_name.c_str());
+  encode_string(theArchiveName.c_str());
   write_string("\" ");
   write_string("archive_info=\"");
-  encode_string(archive_info.c_str());
+  encode_string(theArchiveInfo.c_str());
   write_string("\" ");
-  *os << "archive_version=\"" << archive_version << "\" ";
+  *os << "archive_version=\"" << theArchiveVersion << "\" ";
   *os << "nr_ids=\"" << nr_ids << "\" >" << std::endl;
-  serialize_compound_fields(out_fields);
+  serialize_compound_fields(theRootField);
   write_string("</zorba_archive>\n");
-
 }
 
+
 void XmlArchiver::serialize_compound_fields(archive_field   *parent_field)
 {
-  archive_field   *current_field = parent_field->first_child;
+  archive_field   *current_field = parent_field->theFirstChild;
   char strtemp[100];
   while(current_field)
   {
     write_string(indent_off >= 0 ? indent_spaces+indent_off : indent_spaces);
     write_string("<obj_field is_simple=\"");
-    write_string(current_field->is_simple ? "true" : "false");
+    write_string(current_field->theIsSimple ? "true" : "false");
     write_string("\" ");
     write_string("type=\"");
-    write_string(current_field->type);
+    write_string(current_field->theTypeName);
     write_string("\" ");
     write_string("version=\"");
-    sprintf(strtemp, "%d", current_field->version);
+    sprintf(strtemp, "%d", current_field->theClassVersion);
     write_string(strtemp);
     write_string("\" ");
     write_string("field_treat=\"");
-    write_string(get_field_treat_string(current_field->field_treat));
+    write_string(get_field_treat_string(current_field->theKind));
     write_string("\" ");
     write_string("referencing=\"");
     sprintf(strtemp, "%d", current_field->referencing);
     write_string(strtemp);
     write_string("\" ");
     write_string("id=\"");
-    sprintf(strtemp, "%d", current_field->id);
+    sprintf(strtemp, "%d", current_field->theId);
     write_string(strtemp);
     write_string("\" ");
     write_string("is_class=\"");
-    write_string(current_field->is_class ? "true" : "false");
+    write_string(current_field->theIsClass ? "true" : "false");
     write_string("\" ");
     write_string("value=\"");
-    encode_string(current_field->value);
+    encode_string(current_field->theValue);
     write_string("\" ");
 
-    if(current_field->is_simple || 
-      (current_field->field_treat == ARCHIVE_FIELD_IS_REFERENCING) ||
-      (current_field->first_child == NULL))
+    if(current_field->theIsSimple || 
+      (current_field->theKind == ARCHIVE_FIELD_IS_REFERENCING) ||
+      (current_field->theFirstChild == NULL))
     {
       write_string("/>\n");
     }
@@ -144,10 +152,11 @@
       write_string(indent_off >= 0 ? indent_spaces+indent_off : indent_spaces);
       write_string("</obj_field>\n");
     }
-    current_field = current_field->next;
+    current_field = current_field->theNextSibling;
   }
 }
 
+
 void XmlArchiver::encode_string(const char *value)
 {
   if(!value)
@@ -164,12 +173,14 @@
   }
 }
 
+
 void XmlArchiver::write_string(const char *str)
 {
   os->write(str, (std::streamsize)strlen(str));
 }
 
-const char *XmlArchiver::get_field_treat_string(enum ArchiveFieldTreat field_treat)
+
+const char *XmlArchiver::get_field_treat_string(enum ArchiveFieldKind field_treat)
 {
   switch(field_treat)
   {
@@ -185,14 +196,15 @@
 
 ////////////reading archive
 
-bool XmlArchiver::read_next_field_impl( char **type, 
-                              std::string *value,
-                              int *id, 
-                              int *version, 
-                              bool *is_simple, 
-                              bool *is_class,
-                              enum ArchiveFieldTreat *field_treat,
-                              int *referencing)
+bool XmlArchiver::read_next_field_impl(
+    char **type, 
+    std::string *value,
+    int *id, 
+    int *version, 
+    bool *is_simple, 
+    bool *is_class,
+    enum ArchiveFieldKind *field_treat,
+    int *referencing)
 {
   if(!is)
   {
@@ -204,7 +216,7 @@
   *version = -1; 
   *is_simple = false; 
   *is_class = false,
-  *field_treat = (enum ArchiveFieldTreat)-1;
+  *field_treat = (enum ArchiveFieldKind)-1;
   *referencing = -1;
 
   if(is_compound_field_without_children)
@@ -253,14 +265,14 @@
 
   while(read_attrib_name(attrib_name))
   {
-//    write_string("<obj_field is_simple=\"" << (current_field->is_simple ? "true" : "false") << "\" "
-//        <<"type=\"" << current_field->type << "\" "
+//    write_string("<obj_field is_simple=\"" << (current_field->theIsSimple ? "true" : "false") << "\" "
+//        <<"type=\"" << current_field->theTypeName << "\" "
 //        <<"version=\"" << current_field->version << "\" "
-//        <<"field_treat=\"" << get_field_treat_string(current_field->field_treat) << "\" "
+//        <<"field_treat=\"" << get_field_treat_string(current_field->theKind) << "\" "
 //        <<"referencing=\"" << current_field->referencing << "\" "
 //        <<"id=\"" << current_field->id << "\" "
-//        <<"is_class=\"" << current_field->is_class << "\" "
-//        <<"value=\"" ;//<< current_field->value ? current_field->value : "" << "\" ";
+//        <<"is_class=\"" << current_field->theIsClass << "\" "
+//        <<"value=\"" ;//<< current_field->theValue ? current_field->theValue : "" << "\" ";
 process_attr:
     switch(attr_index)
     {
@@ -378,7 +390,6 @@
 }
 
 
-
 bool XmlArchiver::read_root_tag(char c)
 {
   if(!match_string(c, "zorba_archive"))
@@ -400,16 +411,16 @@
   {
     if(!strcmp(attrib_name, "archive_name"))
     {
-      read_attrib_value(&archive_name);
+      read_attrib_value(&theArchiveName);
     }
     else if(!strcmp(attrib_name, "archive_info"))
     {
-      read_attrib_value(&archive_info);
+      read_attrib_value(&theArchiveInfo);
     }
     else if(!strcmp(attrib_name, "archive_version"))
     {
       read_attrib_value(attrib_value);
-      archive_version = atoi(attrib_value);
+      theArchiveVersion = atoi(attrib_value);
     }
     else if(!strcmp(attrib_name, "nr_ids"))
     {
@@ -421,6 +432,7 @@
   return true;
 }
 
+
 void XmlArchiver::read_end_current_level_impl()
 {
   if(is_compound_field_without_children)
@@ -470,6 +482,7 @@
   return;
 }
 
+
 bool XmlArchiver::match_string(char c, const char *match)
 {
   if(match[0] != c)
@@ -490,6 +503,7 @@
   return true;
 }
 
+
 bool XmlArchiver::read_attrib_name(char *attrib_name)
 {
   char c;
@@ -540,6 +554,7 @@
   return true;
 }
 
+
 void XmlArchiver::read_attrib_value(char *attrib_value)
 {
   char c = 0;
@@ -651,6 +666,7 @@
   *attrib_value = 0;
 }
 
+
 void XmlArchiver::read_attrib_value(std::string *attrib_value)
 {
   char c = 0;
@@ -755,6 +771,7 @@
   }
 }
 
+
 void XmlArchiver::skip_tag()
 {
   std::string   temp_val;
@@ -778,6 +795,7 @@
   }
 }
 
+
 void XmlArchiver::skip_comment_tag()
 {
   char c;

=== modified file 'src/zorbaserialization/xml_archiver.h'
--- src/zorbaserialization/xml_archiver.h	2011-06-14 17:26:33 +0000
+++ src/zorbaserialization/xml_archiver.h	2012-02-26 21:58:26 +0000
@@ -45,7 +45,7 @@
                                 int *version, 
                                 bool *is_simple, 
                                 bool *is_class,
-                                enum ArchiveFieldTreat *field_treat,
+                                enum ArchiveFieldKind *field_treat,
                                 int *referencing);
 
   virtual void read_end_current_level_impl();
@@ -59,7 +59,7 @@
   //writing
   void serialize_compound_fields(archive_field   *parent_field);
   void encode_string(const char *value);
-  const char *get_field_treat_string(enum ArchiveFieldTreat field_treat);
+  const char *get_field_treat_string(enum ArchiveFieldKind field_treat);
   void write_string(const char *str);
 
   //reading

=== modified file 'src/zorbaserialization/zorba_class_serializer.cpp'
--- src/zorbaserialization/zorba_class_serializer.cpp	2012-02-22 04:03:16 +0000
+++ src/zorbaserialization/zorba_class_serializer.cpp	2012-02-26 21:58:26 +0000
@@ -130,7 +130,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -191,7 +191,7 @@
     int   version;
     bool  is_simple = true;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -317,7 +317,7 @@
   int  is_function = 0;
   
   int   id;
-  enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+  enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
   int   referencing;
 
   if(ar.is_serializing_out())
@@ -358,7 +358,7 @@
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_class_field(retval, type, "store::Item*", is_simple, is_class, field_treat, (enum  ArchiveFieldTreat)-1, id);
+    ar.check_class_field(retval, type, "store::Item*", is_simple, is_class, field_treat, (enum  ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       obj = NULL;
@@ -826,7 +826,7 @@
   }
   ar.set_is_temp_field(false);
   int   id;
-  enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+  enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
   int   referencing;
   bool is_ref;
   if(ar.is_serializing_out())
@@ -861,7 +861,7 @@
       ar.set_is_temp_field(true);
       return;
     }
-    ar.check_class_field(retval, type, "store::Item*", is_simple, is_class, field_treat, (enum  ArchiveFieldTreat)-1, id);
+    ar.check_class_field(retval, type, "store::Item*", is_simple, is_class, field_treat, (enum  ArchiveFieldKind)-1, id);
     //ar.register_reference(id, &obj);
     if((field_treat != ARCHIVE_FIELD_IS_PTR) && (field_treat != ARCHIVE_FIELD_IS_REFERENCING))
     {
@@ -1072,13 +1072,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_nonclass_field(retval, type, "Diagnostic*", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_nonclass_field(retval, type, "Diagnostic*", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       assert(!ar.is_serialize_base_class());
@@ -1178,13 +1178,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_nonclass_field(retval, type, "ZorbaException*", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_nonclass_field(retval, type, "ZorbaException*", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       assert(!ar.is_serialize_base_class());
@@ -1269,7 +1269,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -1310,7 +1310,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -1347,7 +1347,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -1390,7 +1390,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);

=== modified file 'src/zorbaserialization/zorba_class_serializer.h'
--- src/zorbaserialization/zorba_class_serializer.h	2012-02-02 09:56:52 +0000
+++ src/zorbaserialization/zorba_class_serializer.h	2012-02-26 21:58:26 +0000
@@ -118,7 +118,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -180,7 +180,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -253,7 +253,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -328,7 +328,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
@@ -417,13 +417,13 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_IS_PTR;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_IS_PTR;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);
     if(!retval && ar.get_read_optional_field())
       return;
-    ar.check_nonclass_field(retval, type, "rchandle<T>", is_simple, is_class, field_treat, (ArchiveFieldTreat)-1, id);
+    ar.check_nonclass_field(retval, type, "rchandle<T>", is_simple, is_class, field_treat, (ArchiveFieldKind)-1, id);
     if(field_treat == ARCHIVE_FIELD_IS_NULL)
     {
       assert(!ar.is_serialize_base_class());
@@ -541,7 +541,7 @@
     int   version;
     bool  is_simple = false;
     bool  is_class = false;
-    enum  ArchiveFieldTreat field_treat = ARCHIVE_FIELD_NORMAL;
+    enum  ArchiveFieldKind field_treat = ARCHIVE_FIELD_NORMAL;
     int   referencing;
     bool  retval;
     retval = ar.read_next_field(&type, &value, &id, &version, &is_simple, &is_class, &field_treat, &referencing);

=== modified file 'test/rbkt/testdriver.cpp'
--- test/rbkt/testdriver.cpp	2012-02-13 21:49:40 +0000
+++ test/rbkt/testdriver.cpp	2012-02-26 21:58:26 +0000
@@ -26,7 +26,7 @@
 #include <time.h>
 #endif
 
-//#define ZORBA_TEST_PLAN_SERIALIZATION
+#define ZORBA_TEST_PLAN_SERIALIZATION
 
 #include "testdriverconfig.h" // SRC and BIN dir definitions
 #include "specification.h" // parsing spec files


Follow ups