From c9572507577219ffe937874bdc9db7522e9425ca Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Fri, 23 May 2014 11:19:32 -0700 Subject: [PATCH 01/32] Update tutorial.html Fixed a typo. Changed "implemenations" to "implementations". --- doc/tutorial.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tutorial.html b/doc/tutorial.html index eded26e7..834108c2 100644 --- a/doc/tutorial.html +++ b/doc/tutorial.html @@ -569,7 +569,7 @@ anywhere in the program - a memory leak. There are couple of ways of fixing this. One way is to explicitly manage the bus stops. However, a more robust and transparent is to use shared_ptr rather than raw pointers. Along -with serialization implemenations for the Standard Library, the serialization library +with serialization implementations for the Standard Library, the serialization library includes implementation of serialization for boost::shared ptr. Given this, it should be easy to alter any of these examples to eliminate the memory leak. This is left From 3c6c241bd7ab39e1b6013f659faab051b5b29065 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Fri, 23 May 2014 11:27:39 -0700 Subject: [PATCH 02/32] Update archives.html Fixed a typo. Changed "thier" to "their". --- doc/archives.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/archives.html b/doc/archives.html index 0dae69b4..a6c0779a 100644 --- a/doc/archives.html +++ b/doc/archives.html @@ -399,7 +399,7 @@ above.
Destructor for an archive. This should be called before the stream is -closed. It restores any altered stream facets to thier state before the +closed. It restores any altered stream facets to their state before the the archive was opened.
From a58d8352919ff6b26120a948351e84ead41b2fa4 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Fri, 23 May 2014 11:56:25 -0700 Subject: [PATCH 03/32] Update serialization.html Fixing typos. --- doc/serialization.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/serialization.html b/doc/serialization.html index 15569a83..3378c288 100644 --- a/doc/serialization.html +++ b/doc/serialization.html @@ -136,7 +136,7 @@ be made accessible to the serialization library by including: friend class boost::serialization::access; in the class definition. This latter method should be preferred over the option -of making member function public. This will prevent serialization functions from +of making the member function public. This will prevent serialization functions from being called from outside the library. This is almost certainly an error. Unfortunately, it may appear to function but fail in a way that is very difficult to find.

@@ -196,7 +196,7 @@ templates can be in any of the following namespaces: Note that, at first glance, this suggestion may seem to be wrong for compilers which implement two phase lookup. In fact, the serialization library used a perhaps overly clever method to support this rule even for such compilers. Those with an interest in studying -this furter will find more information in +this further will find more information in serialization.hpp

Serialization of Class Members

@@ -262,7 +262,7 @@ the question about what const means in of serialization.

Templates

-Implementation serialization for templates is exactly the same process +Implementation of serialization for templates is exactly the same process as for normal classes and requires no additional considerations. Among other things, this implies that serialization of compositions of templates are automatically generated when required if serialization of the @@ -273,7 +273,7 @@ class my_t, then serialization for std::list< boost::shared_ptr< my_t> > is already available for use.

-See for an example that shows how this idea might be implemented for your own +For an example that shows how this idea might be implemented for your own class templates, see demo_auto_ptr.cpp. @@ -434,7 +434,7 @@ is preferred. The key to the serialization implementation is that objects are s and loaded in exactly the same sequence. Using the & operator and serialize function guarantees that this is always the case and will minimize the -occurence of hard to find errors related to synchronization of +occurrence of hard to find errors related to synchronization of save and load functions.

@@ -482,7 +482,7 @@ Loading a pointer:

  1. read a tag from the archive.
  2. determine the type of object to be created -
  3. if the object has already been loaded, return it's address. +
  4. if the object has already been loaded, return its address.
  5. otherwise, create a new instance of the object
  6. read the data back in using the operators described above
  7. return the address of the newly created object. @@ -496,7 +496,7 @@ and >> operators
  8. Loading the same pointer object multiple times results in only one object being created, thereby replicating the original pointer configuration. -
  9. Structures such as collections of polymorphic pointers, +
  10. Structures, such as collections of polymorphic pointers, are handled with no special effort on the part of users of this library. Serialization of pointers of derived types through a pointer to the @@ -907,11 +907,11 @@ rather than
    
     #include <list>
     
    -Since the former includes the latter, this all that is necessary. +Since the former includes the latter, this is all that is necessary. The same holds true for all STL collections as well as templates required to support them (e.g. std::pair).

    -As of this writing, the library contains serialization of the following boost clases: +As of this writing, the library contains serialization of the following boost classes:

    • optional
    • variant From c74430bbc70583143803b0f934c8d471aa41406c Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Fri, 23 May 2014 22:53:53 -0700 Subject: [PATCH 04/32] Update traits.html Fixing typos. --- doc/traits.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/traits.html b/doc/traits.html index 64d6c53e..7928e724 100644 --- a/doc/traits.html +++ b/doc/traits.html @@ -38,7 +38,7 @@ http://www.boost.org/LICENSE_1_0.txt)
      Compile Time Warnings and Errors Serialization of data depends on the type of the data. For example, for -primitive types such as an int, it wouldn't make sense to save +primitive types such as int, it wouldn't make sense to save a version number in the archive. Likewise, for a data type that is never serialized through a pointer, it would (almost) never make sense to track the address of objects saved to/loaded from the archive as it will never @@ -232,12 +232,12 @@ statisfactory for our purposes for the following reasons:
    • There might be classes locally defined in different code modules that have the same name.
    • There might be classes with different names that we want to - consider equivalent for purposes of of serialization. + consider equivalent for purposes of serialization.

    So in the serialization library, this is addressed by invoking BOOST_CLASS_EXPORT_KEY2(my_class, "my_class_external_identifier") -in the header file which declares he class. +in the header file which declares the class. In a large majority of applications, the class name works just fine for the external identifier string so the following short cut is defined - @@ -248,7 +248,7 @@ programs which do not use DLLS, one can specify BOOST_CLASS_EXPORT(my_class) or BOOST_CLASS_EXPORT_GUID(my_class, "my_class_external_identifier") -in either he declaration header or definition. These macros +in either the declaration header or definition. These macros expand to invocation of the of both of the macros described above. (GUID stands for Globally Unique IDentfier.)

    From d34508689ec8f357ea6b4e0c457c5428e95dae12 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sat, 24 May 2014 07:14:21 -0700 Subject: [PATCH 05/32] Update traits.html Fixing typos. --- doc/traits.html | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/traits.html b/doc/traits.html index 7928e724..72cceb97 100644 --- a/doc/traits.html +++ b/doc/traits.html @@ -249,7 +249,7 @@ programs which do not use DLLS, one can specify or BOOST_CLASS_EXPORT_GUID(my_class, "my_class_external_identifier") in either the declaration header or definition. These macros -expand to invocation of the of both of the macros described above. +expand to invocation of both of the macros described above. (GUID stands for Globally Unique IDentfier.)

    (Elsewhere @@ -267,7 +267,7 @@ in more than one module (or DLL).

    Abstract

    When serializing an object through a pointer to its base class, -the library needs to determine whether or not the bas is abstract +the library needs to determine whether or not the base is abstract (i.e. has at least one virtual function). The library uses the type trait macro BOOST_IS_ABSTRACT(T) to do this. Not all compilers support this type trait and corresponding @@ -335,8 +335,8 @@ certain special cases. version.hpp.

    Wrappers

    -Archives need to treat wrappers diffently from other types since, for example, -they usually are non-const object while output archives require that any +Archives need to treat wrappers differently from other types since, for example, +they usually are non-const objects while output archives require that any serialized object (with the exception of a wrapper) be const. This header file wrapper.hpp @@ -471,7 +471,7 @@ struct tracking_level<nvp<T> > #endif This can be problematic when one wants to make his code and archives -portable to other platforms. It means the she objects will be serialized differently +portable to other platforms. It means the objects will be serialized differently depending on the platform used. This implies that objects saved from one platform won't be loaded properly on another. In other words, archives won't be portable.

    @@ -517,13 +517,13 @@ and template parameters should be assigned according to the following table: Some serialization traits can conflict with other ones. Sometimes these conflicts will result in erroneous behavior (E.G. creating of archives which could not be read) and other times they represent a probable misconception on the part of the -library user which could result in suprising behavior. The extent possible, +library user which could result in suprising behavior. To the extent possible, these conflicts are detected at compile time and errors (BOOST_STATIC_ASSERT) -or warnings (BOOST_STATIC_WARNING) are generated. The are generated in a -compiler dependent way manner which should show an chain of instantiation +or warnings (BOOST_STATIC_WARNING) are generated. They are generated in a +compiler dependent manner which should show a chain of instantiation to the point where the error/warning is detected. Without this capability, it would be very hard to track down errors or unexpected behavior in library -usage. Here is list of the conflicts trapped: +usage. Here is a list of the conflicts trapped:

    object_level - error

    @@ -632,9 +632,9 @@ class K { discovered that when loading the archives made in the last month (reading the log). Things don't work. The second log entry is always the same as the first. After a series of very long and increasingly acrimonius email exchanges, -its discovered - that programmer (3) accidently broke programmer(2)'s code .This is because by - serializing via a pointer, the "log" object now being tracked. This is because +it's discovered + that programmer(3) accidently broke programmer(2)'s code .This is because by + serializing via a pointer, the "log" object is now being tracked. This is because the default tracking behavior is "track_selectively". This means that class instances are tracked only if they are serialized through pointers anywhere in the program. Now multiple saves from the same address result in only the first one @@ -642,11 +642,11 @@ its discovered data might have been changed. When it comes time to load the data, all instances of the log record show the same data. In this way, the behavior of a functioning piece of code is changed due the side effect of a change in an otherwise disjoint module. - Worse yet, the data has been lost and cannot not be now recovered from the archives. + Worse yet, the data has been lost and cannot be recovered from the archives. People are really upset and disappointed with boost (at least the serialization system).

  11. - After a lot of investigation, it's discovered what the source of the problem + After a lot of investigation, it's discovered what the source of the problem is and class construct_from is marked "track_never" by including:
     BOOST_CLASS_TRACKING(construct_from, track_never) 
    @@ -660,7 +660,7 @@ have its own distinct raw pointer. This will break
     shared_ptr and cause a memory leak.  Again,
     The cause of this problem is very far removed from the point of discovery.  It could 
     well be that the problem is not even discovered until after the archives are loaded.
    -Now we not only have difficult to find and fix program bug, but we have a bunch of
    +Now we not only have a difficult to find and fix program bug, but we have a bunch of
     invalid archives and lost data.
     
@@ -673,7 +673,7 @@ invalid archives and lost data. ar << x;

-

  • The programmer curses (another %^&*&* hoop to jump through). If he's in a +
  • The programmer curses (another %^&*&* hoop to jump through). He's in a hurry (and who isn't) and would prefer not to const_cast - because it looks bad. So he'll just make the following change an move on.
    @@ -697,8 +697,8 @@ ar << x
       

    He's mildly annoyed now he tries the following:

      -
    • He considers making f() a const - but presumable that shifts the const - error to somewhere else. And his doesn't want to fiddle with "his" code to +
    • He considers making f() a const - but presumably that shifts the const + error to somewhere else. And he doesn't want to fiddle with "his" code to work around a quirk in the serializaition system

    • He removes the const @@ -748,7 +748,7 @@ Note that in this second scenario It's true that these messages may sometimes flag code that is currently correct and that this may be annoying to some programmers. However, this example illustrates -my view that these messages are useful and that any such annoyance is small price to +my view that these messages are useful and that any such annoyance is a small price to pay to avoid particularly vexing programming errors. @@ -765,7 +765,7 @@ level <= object_serializable. in this case, indication that an object is tracked is not stored in the archive itself - see level == object_serializable. Since class information is not saved in the archive, the existence -or absense of the operation ar << T * anywhere else in the +or absence of the operation ar << T * anywhere else in the program is used to infer that an object of this type should be tracked.

      A problem arises when a program which reads an archive From 7c35aa79d08f4f2117644a2c43262f7365083277 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sat, 24 May 2014 07:46:15 -0700 Subject: [PATCH 06/32] Update traits.html This line either needs to be deleted or it needs to be a link to version.hpp. --- doc/traits.html | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/traits.html b/doc/traits.html index 72cceb97..da2e2f9c 100644 --- a/doc/traits.html +++ b/doc/traits.html @@ -333,7 +333,6 @@ This is illustrated by the test program Other implementations are possible and might be necessary for certain special cases. -version.hpp.

      Wrappers

      Archives need to treat wrappers differently from other types since, for example, they usually are non-const objects while output archives require that any From 21ec29f991bdd9a24dd34526a54da2f920ca0969 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sat, 24 May 2014 07:58:21 -0700 Subject: [PATCH 07/32] Update wrappers.html Fixing typos. --- doc/wrappers.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/wrappers.html b/doc/wrappers.html index 79107ac4..2919991f 100644 --- a/doc/wrappers.html +++ b/doc/wrappers.html @@ -43,7 +43,7 @@ the is_wrapper trait for these wrapper classes is set to true.

      Binary Objects

      -A binary object is just an sequence of bytes stored as raw +A binary object is just a sequence of bytes stored as raw binary data. This would most likely be used for a large amount of "light weight" data such as a pixel map or embedded binary file. The header file @@ -59,7 +59,7 @@ which will construct a temporary binary object that can be serialized just like Its default serialization is to use archive class primitives save_binary and load_binary. Note that it doesn't allocated any storage or create any objects. -Its sole purpose is to pass the data size and address as pair to the archive class. +Its sole purpose is to pass the data size and address as a pair to the archive class.

      Arrays

      @@ -91,7 +91,7 @@ public: };
    that can be serialized just like any other object. -Its default serialization is to use serialize each array element. +Its default serialization is to serialize each array element. Note that it doesn't allocated any storage or create any objects. Its sole purpose is to pass the data type, size and address to the archive class. @@ -171,7 +171,7 @@ xml_oarchive & operator&(const boost::serialization::nvp & t) } The most obvious and convient name to assign to as the XML data item name -is - surpise! - the name of the C++ class data member. So our serialization +is - surprise! - the name of the C++ class data member. So our serialization code will look like:
    
     ar & make_nvp("my_variable", my_variable);
    
    From d5d9a3a5a36052b88d03cb7b6e16675f6628664c Mon Sep 17 00:00:00 2001
    From: insideoutclub 
    Date: Sun, 25 May 2014 11:41:48 -0700
    Subject: [PATCH 08/32] Update special.html
    
    Fixing typos.
    ---
     doc/special.html | 58 ++++++++++++++++++++++++------------------------
     1 file changed, 29 insertions(+), 29 deletions(-)
    
    diff --git a/doc/special.html b/doc/special.html
    index 0e2b1396..1387c58a 100644
    --- a/doc/special.html
    +++ b/doc/special.html
    @@ -97,7 +97,7 @@ and a likely source of very subtle bugs.
     Unfortunately, implementation issues currently prevent the detection of this kind of
     error when the data item is wrapped as a name-value pair.
     

    -A similar problem can occur when different objects are loaded to and address +A similar problem can occur when different objects are loaded to an address which is different from the final location:

    
     template<class Archive>
    @@ -112,7 +112,7 @@ void load(boost::basic_oarchive  & ar, const unsigned int version) const
     
    In this case, the address of x is the one that is tracked rather than the address of the new item added to the set. Left unaddressed -this will break the features that depend on tracking such as loading object through a pointer. +this will break the features that depend on tracking such as loading an object through a pointer. Subtle bugs will be introduced into the program. This can be addressed by altering the above code thusly: @@ -137,7 +137,7 @@ values are duplicated, overhead associated with object tracking can be eliminated by setting the object tracking class serialization trait appropriately.

    -By default, data types designated primitive by +By default, data types designated primitive by the Implementation Level class serialization trait are never tracked. If it is desired to track a shared primitive object through a pointer (e.g. a @@ -236,7 +236,7 @@ in this manner comes at a cost. Once archives are released to users, the class serialization traits cannot be changed without invalidating the old archives. Including the class information in the archive assures us that they will be readable in the future even if the class definition -is revised. A light weight structure such as display pixel might be +is revised. A light weight structure such as a display pixel might be declared in a header like this:

    
    @@ -264,14 +264,14 @@ BOOST_CLASS_TRACKING(pixel, boost::serialization::track_never)
     

    Archive Portability

    -Several archive classes create their data in the form of text or portable a binary format. -It should be possible to save such an of such a class on one platform and load it on another. +Several archive classes create their data in the form of text or a portable binary format. +It should be possible to save such a class on one platform and load it on another. This is subject to a couple of conditions.

    Numerics

    The architecture of the machine reading the archive must be able hold the data saved. For example, the gcc compiler reserves 4 bytes to store a variable of type wchar_t while other compilers reserve only 2 bytes. -So its possible that a value could be written that couldn't be represented by the loading program. This is a +So it's possible that a value could be written that couldn't be represented by the loading program. This is a fairly obvious situation and easily handled by using the numeric types in <boost/cstdint.hpp>

    @@ -356,7 +356,7 @@ not wrapped in a in a name-value pai be trapped at compile time. The system is implemented in such a way that for other archive classes, just the value portion of the data is serialized. The name portion is discarded during compilation. So by always using name-value pairs, it will -be guarenteed that all data can be serialized to all archive classes with maximum efficiency. +be guaranteed that all data can be serialized to all archive classes with maximum efficiency.

    Exporting Class Serialization

    Elsewhere in this manual, we have described @@ -371,7 +371,7 @@ requirement. In C++, usage of code not explicitly referred to is implemented via virtual functions. Hence, the need for export is implied by the usage of a derived class that is manipulated via a pointer or -reference to it's base class. +reference to its base class.

    BOOST_CLASS_EXPORT in the same @@ -383,7 +383,7 @@ archive class headers are included, then no code will be instantiated.

    Note that the implemenation of this functionality requires that the BOOST_CLASS_EXPORT -macro appear after and the inclusion of any archive +macro appear after the inclusion of any archive class headers for which code is to be instantiated. So, code that uses BOOST_CLASS_EXPORT will look like the following: @@ -396,7 +396,7 @@ will look like the following: BOOST_CLASS_EXPORT(a) ... // other class headers and exports

    -This will be true regardless of whether the is part +This will be true regardless of whether the code is part of a stand alone executable, a static library or a dyanmic or shared library.

    @@ -425,14 +425,14 @@ one can include headers for just the

    Strictly speaking, export should not be necessary if all pointer serialization occurs through the most derived class. However, in order to detect -what would be catastophic error, the library traps ALL serializations through -a pointer to a polymorphic which are not exported or otherwise registered. +what would be a catastophic error, the library traps ALL serializations through +a pointer to a polymorphic class which are not exported or otherwise registered. So, in practice, be prepared to register or export all classes with one or more virtual functions which are serialized through a pointer.

    Note that the implementation of this functionality depends upon vendor -specific extensions to the C++ language. So, there is no guarenteed portability +specific extensions to the C++ language. So, there is no guaranteed portability of programs which use this facility. However, all C++ compilers which are tested with boost provide the required extensions. The library includes the extra declarations required by each of these compilers. @@ -442,7 +442,7 @@ these extensions or something equivalent.

    Static Libraries and Serialization

    Code for serialization of data types can be saved in libraries just as it can for the rest of the type implementation. -This works well, and can save huge amount of compilation time. +This works well, and can save a huge amount of compilation time.
    • Only compile serialization definitions in the library.
    • Explicitly instantiate serialization code for ALL @@ -518,9 +518,9 @@ guidelines:
    • Don't include inline code in classes used in DLLS. This will generate duplicate code in the DLLS and mainline. This needlessly duplicates code. Worse, it makes is possible for -different versions of the same code exist simultaneously. This +different versions of the same code to exist simultaneously. This type of error turns out to be excruciatingly difficult to debug. -Finally, it opens the possibility that module being referred to +Finally, it opens the possibility that a module being referred to might be explictly unloaded which would (hopefully) result in a runtime error. This is another bug that is not always reproducible or easy to find. For class member templates use something like @@ -547,16 +547,16 @@ template myclass::serialize(boost::archive::text_iarchive & ar, const unsigned i in the implementation file. This will result in generation of all code required in only one place. The library does not detect this type of error for you. -
    • If DLLS are to be loaded an unloaded explicitly (e.g. using dlopen in *nix or +
    • If DLLS are to be loaded and unloaded explicitly (e.g. using dlopen in *nix or LoadLibrary in Windows). Try to arrange that they are unloaded in the reverse -sequence. This should guarentee that problems are avoided even if the -above guidline hasn't been followed. +sequence. This should guarantee that problems are avoided even if the +above guideline hasn't been followed.

    Plugins

    In order to implement the library, various facilities for runtime -manipulation of types are runtime were required. These +manipulation of types at runtime were required. These are extended_type_info for associating classes with external identifying strings (GUID) and void_cast @@ -586,33 +586,33 @@ BOOST_CLASS_EXPORT(a) ... // other class headers and exports -With this in place, one can construct, serialize and destroy -about which only is know the GUID and a base class. +With this in place, one can construct, serialize and destroy a class +about which is known only the GUID and a base class.

    Multi-Threading

    The fundamental purpose of serialization would conflict with multiple -thread concurrently writing/reading from/to a single open archive instance. -The library implementation presumes that the application avoids such an situtation. +threads concurrently writing/reading from/to a single open archive instance. +The library implementation presumes that the application avoids such a situtation.

    However, Writing/Reading different archives simultaneously in different tasks is permitted as each archive instance is (almost) completely independent from any other archive instance. The only shared -information are some type tables which have been implemented using a +information is some type tables which have been implemented using a lock-free thread-safe singleton described elsewhere in this documentation.

    -This singleton implementation guarentees that all of this shared +This singleton implementation guarantees that all of this shared information is initialized when the code module which contains -them is loaded. The serialization library takes care to +it is loaded. The serialization library takes care to ensure that these data structures are not subsequently modified. The only time there could be a problem would be if code is loaded/unloaded while another task is serializing data. This could only occur for types whose -serialization is implemented in a dynamically loaded/unload DLL +serialization is implemented in a dynamically loaded/unloaded DLL or shared library. So if the following is avoided:

    • Accessing the same archive instance from different tasks. From 256e8dd7943f70bc90e0a526bcf9da6f084a164c Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sun, 25 May 2014 11:53:39 -0700 Subject: [PATCH 09/32] Update exceptions.html Fixing typos. --- doc/exceptions.html | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/exceptions.html b/doc/exceptions.html index c5d6635e..cf3007be 100644 --- a/doc/exceptions.html +++ b/doc/exceptions.html @@ -57,7 +57,7 @@ class archive_exception : public std::exception { public: typedef enum { - unregistered_class, // attempt to serialize a pointer of an + unregistered_class, // attempt to serialize a pointer of // an unregistered class invalid_signature, // first line of archive does not contain // expected string @@ -66,8 +66,8 @@ public: pointer_conflict // an attempt has been made to directly serialize // an object after having already serialized the same // object through a pointer. Were this permitted, - // it the archive load would result in the creation - // of extraneous object. + // the archive load would result in the creation + // of an extraneous object. incompatible_native_format, // attempt to read native binary format // on incompatible platform array_size_too_short, // array being loaded doesn't fit in array allocated @@ -109,7 +109,7 @@ public:

      unregistered_class

      An attempt has been made to serialize a polymorphic class through a pointer without either registering it or associating it with an export key. This can also occur -when using a new archive how class name has not been added to the system with the +when using a new archive whose class name has not been added to the system with the BOOST_ARCHIVE_CUSTOM_ARCHIVE_TYPES macro.

      invalid_signature

      @@ -121,7 +121,7 @@ exception is thrown. This system records the current library version number to all archives created. Note that this is in no way related to version number of classes used by application programs. This refers to the version of the serialization system used to create the archive. Future versions -of this serialization system will be able to identify archives created under previous +of this serialization system will be able to identify archives created under a previous (i.e. this) system and alter the loading procedure accordingly. Hence, future enhancements to this serialization system should not obsolete any existing archive files. It is only necessary to increment this version number when the newer system creates archives @@ -225,7 +225,7 @@ This, in turn, can result in the throwing of this exception.

      invalid_class_name

      Class name length greater than the maximum permitted. Most likely cause is a corrupted -archive or an attempt to insert virus via buffer overrun method. +archive or an attempt to insert a virus via the buffer overrun method.

      unregistered_cast

      In order to support casting between pointers of base and derived classes @@ -239,7 +239,7 @@ whose relationship has not been registered,

      multiple_code_instantiation

      This exception is thrown when it is detected that the serialization of the same type -has been instantiated more that once. This might occur when +has been instantiated more than once. This might occur when serialization code is instantiated in both the mainline and one or more DLLS.

      xml_archive_parsing_error

      @@ -250,8 +250,8 @@ to the loading serialization and this exception might be thrown. This might occur for one of the following reasons:
      • The archive has been edited outside the serialization system. This might -be possible if only the data is changed and not the XML attributes and nesting -structure is left unaltered. But any other editing is likely to render the +be possible if only the data is changed and the XML attributes and nesting +structure are left unaltered. But any other editing is likely to render the archive unreadable by the serialization library.
      • The serialization has been altered and an archive generated by the old code is being read. That is, versioning has not been properly employed to @@ -259,7 +259,7 @@ properly deserialize previously created archives.

      xml_archive_tag_mismatch

      -This exception will be thrown if the start or end tag of and XML element doesn't match +This exception will be thrown if the start or end tag of an XML element doesn't match the name specified for the object in the program.

      xml_archive_tag_name_error

      From 99696d9c188dbba4a44172fe42028264c3751556 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sun, 25 May 2014 12:03:19 -0700 Subject: [PATCH 10/32] Update archive_exception.hpp Fixing typos. --- include/boost/archive/archive_exception.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/archive/archive_exception.hpp b/include/boost/archive/archive_exception.hpp index da987da3..ffb430c6 100644 --- a/include/boost/archive/archive_exception.hpp +++ b/include/boost/archive/archive_exception.hpp @@ -49,7 +49,7 @@ public: typedef enum { no_exception, // initialized without code other_exception, // any excepton not listed below - unregistered_class, // attempt to serialize a pointer of an + unregistered_class, // attempt to serialize a pointer of // an unregistered class invalid_signature, // first line of archive does not contain // expected string @@ -57,8 +57,8 @@ public: // subsequent to this one pointer_conflict, // an attempt has been made to directly // serialize an object which has - // already been serialzed through a pointer. - // Were this permited, the archive load would result + // already been serialized through a pointer. + // Were this permitted, the archive load would result // in the creation of an extra copy of the obect. incompatible_native_format, // attempt to read native binary format // on incompatible platform @@ -70,7 +70,7 @@ public: unregistered_cast, // base - derived relationship not registered with // void_cast_register unsupported_class_version, // type saved with a version # greater than the - // one used by the program. This indicates that the proggram + // one used by the program. This indicates that the program // needs to be rebuilt. multiple_code_instantiation, // code for implementing serialization for some // type has been instantiated in more than one module. From 68fcb21365163608640599d331c41634bb2d1113 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sun, 25 May 2014 12:27:26 -0700 Subject: [PATCH 11/32] Update exception_safety.html Fixing typos. --- doc/exception_safety.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/exception_safety.html b/doc/exception_safety.html index fcee95f1..728cabc0 100644 --- a/doc/exception_safety.html +++ b/doc/exception_safety.html @@ -70,7 +70,7 @@ an invalid pointer, or creating a memory leak. If an exception occurs, referenced pointers will not need to be deleted so there will be no memory leaks. The destructor of this class won't attempt to delete these pointers so there will be no problem with dangling references. - owned pointers are handled exactly as described above. + Owned pointers are handled exactly as described above.

    • class contains referenced pointers which might be created by load

      If a referenced pointer is loaded before its corresponding owned @@ -81,7 +81,7 @@ an invalid pointer, or creating a memory leak.
    • Trap exceptions with a try/catch block.
    • Within the catch part, invoke the archive function delete_created_pointers() to delete any pointers - created by the class load. Without out other action, objects created in + created by the class load. Without other action, objects created in this way would end up as memory leaks as they are not considered owned pointers and hence aren't destroyed.
    • The object's destructor won't try From 1817cdfa4f86b4a877496425594f0858323f0d41 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Sun, 25 May 2014 22:26:40 -0700 Subject: [PATCH 12/32] Update archive_reference.html Fixing typos. --- doc/archive_reference.html | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/archive_reference.html b/doc/archive_reference.html index 72899986..c4551fae 100644 --- a/doc/archive_reference.html +++ b/doc/archive_reference.html @@ -35,7 +35,7 @@ http://www.boost.org/LICENSE_1_0.txt)

      Trivial Archive

      The Archive concept specifies the functions that a -class must implement to in order to be used to serialize +class must implement in order to be used to serialize Serializable types. Our discussion will focus on archives used for saving as the hierarchy is exactly analogous @@ -77,22 +77,22 @@ For an example see demo_trivial_archive.cpp. Of course this program won't produce any output as it is. But it provides -the starting point for a simple class which can be used to log formated +the starting point for a simple class which can be used to log formatted output. See the implementation of a simple log archive to how this has been done.

      More Useful Archive Classes

      The above example is fine as far as it goes. But it doesn't implement useful features such as serialization of pointers, class versioning -and others. This library implements a family of full featuared archive +and others. This library implements a family of full featured archive classes appropriate for a variety of purposes.

      -Our archives have been factored in to a tree of classes in order to minimize +Our archives have been factored into a tree of classes in order to minimize repetition of code. This is shown in the accompanying class diagram. -Any class which fullfills the following requirements will fit into +Any class which fulfills the following requirements will fit into this hierarchy and implement all the features we require. Deriving from the base class common_oarchive.hpp provides all features we desire which @@ -113,7 +113,7 @@ class complete_oarchive : friend class boost::archive::save_access; // member template for saving primitive types. - // Specialize for any types/templates that special treatment + // Specialize for any types/templates that require special treatment template<class T> void save(T & t); @@ -144,7 +144,7 @@ to help render the archive in a particular form.

      Default:Does nothing.
      Purpose:To inject/retrieve an object name into the archive. Used -by XML archive to inject "<name " before data. +by XML archive to inject "<name>" before data.

      @@ -161,12 +161,12 @@ by XML archive to inject "</name>" after data. Default:Does nothing.
      Purpose:Called each time user data is saved. It's not called when archive bookkeeping data is saved. This is used by XML archives -to determine when to inject a ">" character at end of XML header. XML output archives +to determine when to inject a ">" character at the end of an XML header. XML output archives keep their own internal flag indicating that data being written is header data. This internal flag is reset when an object start tag is written. When void end_preamble() is invoked and this internal flag is set a ">" character is appended to the output and the internal flag is reset. The default -implementation for void end_preamble() is a no-op there by permitting it +implementation for void end_preamble() is a no-op thereby permitting it to be optimised away for archive classes that don't use it.

      @@ -183,7 +183,7 @@ name-value pairs by overriding this function template for name-value pairs. This replaces the default name-value pair handling, which is just to throw away the name, with one appropriate for XML which writes out the start of an XML tag with the correct object name.

      -The second argument must be part of the function signature even this it is not used. +The second argument must be part of the function signature even though it is not used. Its purpose is to be sure that code is portable to compilers which fail to correctly implement partial function template ordering. For more information see this. @@ -242,7 +242,7 @@ One or more of the following issues may need to be addressed: example, XML archives need <name ... >...</name> surrounding all data objects.

    • Addressing any of the above may generate more issues to be addressed. -
    • The archives included with library are all templates which use a +
    • The archives included with the library are all templates which use a stream or streambuf as a template parameter rather than simple classes. @@ -281,7 +281,7 @@ exception. Exhaustive testing of the library requires testing the different aspects of object serialization with each archive. There are 46 different tests that can run with any archive. There are 5 "standard archives" included with the system. -(3 in systems don't support wide charactor i/o). +(3 in systems that don't support wide charactor i/o).

      In addition, there are 28 other tests which aren't related to any particular archive class.

      @@ -354,7 +354,7 @@ each time a new archive class is created.

    Implementation

    -The solution is the the pair polymorphic_oarchive +The solution is the pair polymorphic_oarchive and polymorphic_iarchive. They present a common interface of virtual functions - no templates - that is equivalent to the standard templated one. @@ -371,7 +371,7 @@ show how polymorphic archives are to be used. Note the following:
  • demo_polymorphic_A.hpp and demo_polymorphic_A.cpp contain no templates and no reference to any specific archive implementation. That is, they will -only have to be compiled once for all archive implementations. The even applies to archives classes +only have to be compiled once for all archive implementations. This even applies to archives classes created in the future.
  • The main program demo_polymorphic.cpp specifies a specific archive implementation. @@ -389,7 +389,7 @@ As these contain no code specific to the particular implementation archive, they a polymorphic archive implementation from any functioning templated archive implementation.

    As a convenience, small header files have been included which contain -typedef for polymorphic implementation for each corresponding +a typedef for a polymorphic implementation for each corresponding templated one. For example, the headers polymorphic_text_iarchive.hpp and @@ -410,8 +410,8 @@ dispatch table and there is no possibility for a compiler to BOOST_CLASS_IMPLEMENTATION(my_primitive_type, boost::serialization::primitive_type) @@ -422,7 +422,7 @@ serialize such a primitive type will result in a compilation error since the com interface is static and cannot instantiate code for a new type.

    -The main utility of polymorphic archives will be to permit the buiding of class DLLs that will +The main utility of polymorphic archives will be to permit the building of class DLLs that will include serialization code for all present and future archives with no redundant code.


    © Copyright Robert Ramey 2002-2004. From dda3b3431e7d32dade41e4ed0243ce6bd723d127 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 07:23:42 -0700 Subject: [PATCH 13/32] Update implementation.html Fixing typos. Line 257 still needs a cross-reference. --- doc/implementation.html | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/implementation.html b/doc/implementation.html index 241d15eb..5566d7e2 100644 --- a/doc/implementation.html +++ b/doc/implementation.html @@ -128,7 +128,7 @@ void serialize( The whole question of character encoding combined with wide characters is much more complicated than it would seem to be. The current library defines in 3 formats (text, binary, and XML), wide and narrow characters, -an attempts to be portable between compiler libraries. The results of +and attempts to be portable between compiler libraries. The results of a rather long consideration of all these factors has been to set default encoding according to the following rules.

      @@ -149,7 +149,7 @@ default encoding according to the following rules.
    This character encoding is implemented by changing the locale of the i/o stream used by an archive when the archive is constructed, the stream -local is changed back to its original value. This action can be overridden +locale is changed back to its original value. This action can be overridden by specifying boost::archive::no_codecvt when the archive is opened. In this case, the stream locale will not be changed by the serialization library. @@ -177,7 +177,7 @@ do the following. Naturally, the input process has to be symmetrical.

    Partial Template Specialization

    Compilers which fail to support partial template specialization will fail to compile -the following code. To make this compiler, the const has to be removed. +the following code. To make this compile, the const has to be removed.
    
     void f(A const* a, text_oarchive& oa)
     {
    @@ -259,12 +259,12 @@ This is due to the way that VC++ handles templated code with __decl(dllexport) a
     __decl(dllimport) specifications.  Basically, this compiler requires that all the
     instantiations have the same specification - even though they have different
     template arguments. The example 
    -demo_portable_iarchive.cpp would have to reformulated as a library or dll
    +demo_portable_iarchive.cpp would have to be reformulated as a library or dll
     similar to the pre-defined archives in order to function.
     

    This compiler does not have RTTI or exception handling turned on by default. Although they are not strictly necessary to use the serialization package, the example and test -program presume that they are enabled. So be sure your command line or IDE settings +programs presume that they are enabled. So be sure your command line or IDE settings enable these features if you want to build and run these programs.

    This compiler can treat wchar_t as either @@ -280,14 +280,14 @@ includes this switch by default. So if want to use the libraries that when you compile your own applications.

    Using the Visual C++ IDE
    The library includes a VC++ 7.1 "Solution" - BoostSerializationLibrary -along with of a set of project files - one for each demo and test. Consider the following if you -decided to use these configurations. +along with a set of project files - one for each demo and test. Consider the following if you +decide to use these configurations.
    • The projects assume that the tests have been built with bjam using the default locations. This will result in a bin subdirectory within one's main boost directory. Below this there is a whole structure which maintains object and library files according to the type of build. The easiest way to build this is to - invoke the runtest script which uses bjam. (see below) If the libraries are not in these locations, + invoke the runtest script which uses bjam (see below). If the libraries are not in these locations, the projects will have to be modified accordingly.
    • There are project configurations for all the combinations of build variants that boost supports. That is for release, debug, static, static multi-threading, etc.. @@ -348,7 +348,7 @@ all the above issues for Visual C++ 7.0 plus: still demonstrate this facility.
    • This compiler does not support wchar_t as a separate type. It defines wchar_t as an alias for short int. In general things will still - function. However certain customization, such as overloading archive operators for + function. However certain customizations, such as overloading archive operators for saving/loading wide character arrays would produce surprises in this environment.
    • Under certain circumstances, a program will fail to link with the message: LIN1179 - "invalid or corrupt file: duplicate comdat". According @@ -383,7 +383,7 @@ all the above issues for Visual C++ 7.0 plus: Conversion to/from integers will work around the problem.
    • If class serialize functions are not accessible either by making them public or by including friend declarations as described in - Class Serialization - Member Function, the + Class Serialization - Member Function, the code will compile but fail at runtime.
    • Tests using custom extended type which doesn't use RTTI fails. (5.64 only !).
    • Tests built in release mode fail. This seems to be an issue with the boost test system @@ -402,7 +402,7 @@ all the above issues for Visual C++ 7.0 plus:

      Code Warrior 9.x

        -
      • Some tests and demos demos fail - still under investigation +
      • Some tests and demos fail - still under investigation

      Code Warrior 8.3

      @@ -422,7 +422,7 @@ Several compilers, including Visual C++ 6.0, use an older dinkumware library. These platforms have several issues:
    -and we don't have to include a trival serializer for sp_counted_base +and we don't have to include a trival serializer for sp_counted_base.

    Finally we need to specify name-value pair wrappers if we want to be able to use this serialization with XML archives. @@ -219,9 +219,9 @@ shared pointers: BOOST_SHARED_POINTER_EXPORT(T) BOOST_SHARED_POINTER_EXPORT_GUID(T, K) -These are specialize versions of the macros used for exporting classes serialized through raw pointers. +These are specialized versions of the macros used for exporting classes serialized through raw pointers.

    -Clearly, complete, correct and exception safe serialization of smart pointers is going to +Clear, complete, correct and exception safe serialization of smart pointers is going to be a challenge. I hope that this implementation provides a useful starting point for such an effort.


    From 8353999a2e20a3b1c688e162655ae08370c7494f Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:04:58 -0700 Subject: [PATCH 16/32] Update pimpl.html Fixing typos. Line 48 still needs some work. --- doc/pimpl.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/pimpl.html b/doc/pimpl.html index 4a8ca9b3..93738fb5 100644 --- a/doc/pimpl.html +++ b/doc/pimpl.html @@ -31,7 +31,7 @@ the "Handle Body Idiom". Included in this library is a program called demo_pimpl.cpp which illustrates how this is used. The file demo_pimpl_A.hpp -contains the declaration of the a class that hides its implementation +contains the declaration of the A class that hides its implementation by including a pointer to struct B that is only defined as a pointer.
    
     // class whose declaration is hidden by a pointer
    @@ -90,7 +90,7 @@ void A::serialize(boost::archive::text_iarchive & ar, const unsigned int file_ve
     
    The problem is that when compiling the above code, there is no instantiation of the serialize template. -There can't be as its not "known" what types of archives +There can't be as it's not "known" what types of archives the serialization is going to be used with. So these functions are "missing" when an attempt to link is made. The solution is to explicitly instantiate serialization code for those archives which are going to be used. In this From 0f260d5d9bed010e9d1df6c3528c44621823f92c Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:07:21 -0700 Subject: [PATCH 17/32] Update simple_log.html Fixing typos. --- doc/simple_log.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/simple_log.html b/doc/simple_log.html index 1a6281ed..591c800e 100644 --- a/doc/simple_log.html +++ b/doc/simple_log.html @@ -25,7 +25,7 @@ http://www.boost.org/LICENSE_1_0.txt)
    -The purpose of this example help clarify the usage of the +The purpose of this example is to help clarify the usage of the Archive Concept so that one can implement his own archive classes. From f509e1dc6723e9705a048ab10e5db5be2e5f69a5 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:15:00 -0700 Subject: [PATCH 18/32] Update derivation.html Fixing typos. --- doc/derivation.html | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/doc/derivation.html b/doc/derivation.html index ccdd92e1..31a88192 100644 --- a/doc/derivation.html +++ b/doc/derivation.html @@ -47,7 +47,7 @@ The serialization library is implemented using the Curiously Recurring Template Pattern (CRTP). Also, all common code is factored out into separate modules to minimize code repetition. This makes derivation from -an existing archive less straight forward than it would otherwise be. +an existing archive less straightforward than it would otherwise be.

    This example illustrates several issues that have to be addressed when doing something like this @@ -84,13 +84,12 @@ the base classes.

  • Reread Archive Internals. This describes the class hierarchy so that you know what to override.
  • Note the usage of PFTO. Some compilers fail to provide support for -partial function template ordering. The serialization library works around by +partial function template ordering. The serialization library works around this by using Partial Function Template Ordering in several places. -In archive classes, this takes -. This is done +This is done in several places, including the archive classes themselves. -
  • Base class functions will usually need to be explicitly invoked +
  • Base class functions will usually need to be explicitly invoked. We commonly specialize the function name save_override for saving primitives. Usage of a function name in a derived class "hides" similarly named functions of the base class. That is, @@ -121,7 +120,7 @@ so it's what I use. for just this purpose. Failure to include required template definitions will result in undefined symbol errors when the program is linked. -
  • Without alteration, this class cannot be further derived from
    +
  • Without alteration, this class cannot be further derived from.
    Base classes using CRTP must be templates with a parameter corresponding to the most derived class. As presented here, this class doesn't qualify, so it cannot be used as a base class. In order to derive further from this class, @@ -136,7 +135,7 @@ class log_archive_impl : ... ); -// do not derived from this class !!! +// do not derive from this class !!! class log_archive : public log_archive_impl<log_archive> { From c5c15b15bd039ba99c00caecb0ca0fedbce1063a Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:31:27 -0700 Subject: [PATCH 19/32] Update extended_type_info.html Fixing typos. Line 225 needs review. --- doc/extended_type_info.html | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/extended_type_info.html b/doc/extended_type_info.html index bbcacb2b..6014c740 100644 --- a/doc/extended_type_info.html +++ b/doc/extended_type_info.html @@ -57,14 +57,14 @@ the following functions and operating systems. This makes it unusable for support of portable archives.
  • Even if the type name string could somehow be made portable, there is no - guarentee that class headers would be included in the same name space accross + guarantee that class headers would be included in the same namespace accross different applications. In fact, including different headers in different - name spaces is an accepted method used to avoid name space conflicts. + namespaces is an accepted method used to avoid namespace conflicts. Thus the namespace::class_name can't be used as a key.
  • There exists the possibility that different classes use different type id - mechanism. The class header might include this information. If we want to - import class headers accross applications, its convenient that the type id + mechanisms. The class header might include this information. If we want to + import class headers accross applications, it's convenient that the type id mechanism support inter-operability accross different type id systems.

    Features

    @@ -135,7 +135,7 @@ instance created for each type. However, this is enforced only at the executabl module level. That is, if a program includes some shared libraries or DLLS, there may be more than one instance of this class correponding to a particular type. For this reason the comparison functions below can't just compare the addresses of -this instance but rather must be programmed to compare the the actual information +this instance but rather must be programmed to compare the actual information the instances contain.
    @@ -193,7 +193,7 @@ bool operator==(const extended_type_info & rhs) const; bool operator!=(const extended_type_info & rhs) const;
    -These functions are used to compare 'wo +These functions are used to compare extended_type_info @@ -213,7 +213,7 @@ Construct a new instance of the type to which this extended_type_info -record corresponds. This function takes variable list of up to 4 arguments +record corresponds. This function takes a variable list of up to 4 arguments of any type. These arguments are passed to the type's constructor at runtime. In order to use the facility, one must declare a type sequence for the constructor arguments. @@ -223,8 +223,8 @@ This function permits one to create instances of any exported type given only the exported GUID assigned with BOOST_CLASS_EXPORT. If these types are defined in DLLS or shared libraries. When these modules -are loaded at runtime, these constructor can be called until the module -is unloaded. These modules are referred to as plugin. +are loaded at runtime, these constructors can be called until the module +is unloaded. These modules are referred to as plugins.
    @@ -245,7 +245,7 @@ object.
    -

    Requirements for and Implementation

    +

    Requirements for an Implementation

    In order to be used by the serialization library, an implementation of extended_type_info, (referred to as ETI here), must be derived from @@ -348,7 +348,7 @@ The test program extended_type_info API above to return the export key associated with the class. This requires that non-abstract types be exported. It also demonstrates the -inter-operability with between two different implementations of +inter-operability between two different implementations of extended_type_info.

    Requirements for Each Type

    From 4dd2f9ce0461903add91b399338a0280e8b4e3c0 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:34:09 -0700 Subject: [PATCH 20/32] Fixing typos. --- doc/void_cast.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/void_cast.html b/doc/void_cast.html index 51c0bae3..998c9817 100644 --- a/doc/void_cast.html +++ b/doc/void_cast.html @@ -29,7 +29,7 @@ http://www.boost.org/LICENSE_1_0.txt) C++ includes the operator dynamic_cast<T>(U * u) for casting a pointer at runtime between two related types. However, this can only be used for polymorphic classes. That is, it can only be used with related classes which have at least one virtual function. -Limiting the serializaton of pointers to only such class would diminish the applicability +Limiting the serializaton of pointers to only such classes would diminish the applicability of the library.

    Usage

    From ee4b0d4d1ec6e8615b145919fa538ca66572066e Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:37:06 -0700 Subject: [PATCH 21/32] Fixing typos. --- doc/codecvt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/codecvt.html b/doc/codecvt.html index 85e9e797..41f11c91 100644 --- a/doc/codecvt.html +++ b/doc/codecvt.html @@ -42,7 +42,7 @@ template<

    Rationale

    - UTF-8 is a method of encoding Unicode text in environments where + UTF-8 is a method of encoding Unicode text in environments where data is stored as 8-bit characters and some ascii characters are considered special (i.e. Unix filesystem filenames) and tend to appear more commonly than other characters. While @@ -88,7 +88,7 @@ template<

    Requirements

    utf8_codecvt_facet defaults to using char as - it's external data type and wchar_t as it's internal + its external data type and wchar_t as its internal datatype, but on some architectures wchar_t is not large enough to hold UCS-4 characters. In order to use another internal type.You must also specialize std::codecvt From 335424ca6ecbc43d808bad2e6f6b10fbb4d97396 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 08:39:34 -0700 Subject: [PATCH 22/32] Fixing typos. --- doc/strong_typedef.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/strong_typedef.html b/doc/strong_typedef.html index bc8f25d8..b9c10c71 100644 --- a/doc/strong_typedef.html +++ b/doc/strong_typedef.html @@ -78,7 +78,7 @@ type but still of distinct type.

    Implemenation

    BOOST_STRONG_TYPEDEF is a macro -which generates a class named "name" wraps and instance of its +which generates a class named "name" which wraps an instance of its primitive type and provides appropriate conversion operators in order to make the new type substitutable for the one that it wraps. From 806ed33010e1e8a0c0b3631bd038738044dabf6c Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 11:53:32 -0700 Subject: [PATCH 23/32] Fixing typos. --- doc/dataflow.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/dataflow.html b/doc/dataflow.html index 07685fcb..553cc38a 100644 --- a/doc/dataflow.html +++ b/doc/dataflow.html @@ -35,19 +35,19 @@ We would prefer the solution that is:
    • Decomposable. so we can code, test, verify and use each (simple) stage of the conversion independently. -
    • Composable. so we can used this composite as a new component somewhere else. +
    • Composable. so we can use this composite as a new component somewhere else.
    • Efficient, so we're not required to re-implement it again.
    • Scalable, so that it works well for short and arbitrarily long sequences.
    The approach that comes closest to meeting these requirements is that described and implemented with Iterator Adaptors. -The fundamental feature of an Iterator Adaptor template that makes in interesting to +The fundamental feature of an Iterator Adaptor template that makes it interesting to us is that it takes as a parameter a base iterator from which it derives its input. This suggests that something like the following might be possible.
    
     typedef 
         insert_linebreaks<         // insert line breaks every 76 characters
    -        base64_from_binary<    // convert binary values ot base64 characters
    +        base64_from_binary<    // convert binary values to base64 characters
                 transform_width<   // retrieve 6 bit integers from a sequence of 8 bit bytes
                     const char *,
                     6,
    @@ -71,12 +71,12 @@ included is iterator_adaptor which
    -fulfills as a small set of additional requirements.
    +fulfills a small set of additional requirements.
     
     

    Templated Constructors

    @@ -110,12 +110,12 @@ std::copy( The recursive application of this template is what automatically generates the constructor base64_text(const char *) in our example above. The original Iterator Adaptors include a make_xxx_iterator to fulfill this function. -However, I believe these are unwieldy to use compared to the above solution usiing +However, I believe these are unwieldy to use compared to the above solution using Templated constructors.

    Unfortunately, some systems which fail to properly support partial function template ordering cannot support the concept of a templated constructor as implemented above. -A special"wrapper" macro has been created to work around this problem. With this "wrapper" +A special "wrapper" macro has been created to work around this problem. With this "wrapper" the above example is modified to:

    
     std::copy(
    @@ -195,7 +195,7 @@ The standard stream iterators don't quite work for us.  On systems which impleme
     as unsigned short integers (E.G. VC 6) they didn't function as I expected. I also made some
     adjustments to be consistent with our concept of Dataflow Iterators.  Like the rest of our
     iterators, they are found in the namespace boost::archive::interators to avoid
    -conflict the standard library version.
    +conflicts with the standard library versions.
     
    istream_iterator
    From 60b9ab6a5a47551278804355bba9366489f9007d Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 11:59:20 -0700 Subject: [PATCH 24/32] Fixing typos. --- doc/smart_cast.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/smart_cast.html b/doc/smart_cast.html index 1d43e8ad..f438226a 100644 --- a/doc/smart_cast.html +++ b/doc/smart_cast.html @@ -33,9 +33,9 @@ operators:
    static_cast<T *<>(U *)
    static_cast<T &<>(U &)
      -
    • required if neither T nor U are not polymorphic +
    • required if neither T nor U are polymorphic
    • permitted in other cases. -
    • fails to detect erroneas casts of polymophic pointers/references at runtime. +
    • fails to detect erroneous casts of polymophic pointers/references at runtime.
    • does not permit "cross casting"
    • inline function calls can be optimized away during compile time.
    @@ -46,7 +46,7 @@ operators:
    • permitted if either T or U are polymorphic
    • prohibited in other cases. -
    • throws exception on detecting erroneas casts of polymorphic pointers/references +
    • throws exception on detecting erroneous casts of polymorphic pointers/references at runtime.
    • permits "cross casting"
    • cannot optimise inline virtual functions at compile time. @@ -91,14 +91,14 @@ template<class T> bool is_storable(T &t){ // what type of cast to use here? - // this fails at compiler time when T == base2 + // this fails at compile time when T == base2 // return static_cast<base1 &>(t).is_storable(); - // this fails at compiler time when T == top + // this fails at compile time when T == top // otherwise it works but cannot optimize inline function call // return dynamic_cast<base1 &>(t).is_storable(); - // this always works - and is guarenteed to generate the fastest code ! + // this always works - and is guaranteed to generate the fastest code ! return (boost::smart_cast_reference<base1 &>(t)).is_storable(); } @@ -121,7 +121,7 @@ The serialization library includes a mix of classes which use both static polymorphism (CRTP) and dynamic polymorphism via virtual functions. smart_cast was written to address the more problematic manifestations of the -situation exmplified above. +situation exemplified above.

      Usage

      The following syntax is supported: @@ -134,14 +134,14 @@ Note that the above syntax doesn't include
      
       smart_cast<Target & >(Source & s)
       
      -but the same functionality is supported the the following special syntax +but the same functionality is supported with the following special syntax
      
       smart_cast_reference<Target &>(Source & s)
       

      Requirements

      smart_cast can be used only on compilers that support partial -template specialization or on types for which have be specified with the +template specialization or on types for which the macro BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(<type>) has been applied. From b0e263e52a8c186130b5fae0ec0849e1808eb16d Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 12:11:43 -0700 Subject: [PATCH 25/32] Fixing typos. --- doc/singleton.html | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/doc/singleton.html b/doc/singleton.html index abf94429..4231ded2 100644 --- a/doc/singleton.html +++ b/doc/singleton.html @@ -42,10 +42,10 @@ names to types and tables which relate base classes to derived classes. Construction, destruction and usage of these variables requires consideration of the following issues:
        -
      • Some static data variables and constants entries refer to others. +
      • Some static data variable and constant entries refer to others. The sequence of initialization cannot be arbitrary but must be in proper sequence.
      • -
      • A number of static variables aren't referred explicitly and, without +
      • A number of static variables aren't referred to explicitly and, without special precautions, will be stripped by most code optimizers
      • Many of these variables are created by templates and special care must be taken to be sure that they are instantiated
      • @@ -61,7 +61,7 @@ This singleton implementation has the following features:
      • Any instance will be constructed before any attempt is made to access it.
      • - Any instance created with a template is guarenteed to be instantiated. + Any instance created with a template is guaranteed to be instantiated.
      • Regardless of whether or not an instance has been explicitly referred to, it will not be stripped by the optimizer when the @@ -70,16 +70,16 @@ This singleton implementation has the following features: All instances are constructed before main is called regardless of where they might be referenced within the program. - In a multi-tasking system, this guarentees that there will be no + In a multi-tasking system, this guarantees that there will be no race conditions during the construction of any instance. No - thread locking is required to guarentee this. + thread locking is required to guarantee this.
      • The above implies that any const instances are thread-safe during the whole program. Again, no thread locking is required.
      • If a mutable instance is created, and such an instance is modified - after main is called in a mult-threading system, there exists + after main is called in a multi-threading system, there exists the possibility that a race condition will occur. The serialization library takes care that in the few places where a mutable singleton is required, it is not altered after @@ -141,13 +141,13 @@ singleton<T> , the type T must be default constructable. It doesn't require static variables - though it may have them. -Since the library guarentees that only one instance of +Since the library guarantees that only one instance of singleton<T> -and all accesss is through the above static interface +exists and all accesss is through the above static interface functions, common member functions of T become the functional equivalent of static functions. @@ -156,7 +156,7 @@ the functional equivalent of There are at least two different ways to use this class template. Both are used in the serialization library.

        -The first way is illustrated by and excerpt from the file +The first way is illustrated by an excerpt from the file extended_type_info.cpp. which contains the following code: @@ -171,9 +171,9 @@ extended_type_info::key_register(const char *key) { }

    Just by referring to the singleton instance anywhere in the program -will guarentee that one and only one instance for the specified +will guarantee that one and only one instance for the specified type (ktmap in this example) -will exist throughout the program. There is no need for anyother +will exist throughout the program. There is no need for any other declaration or definition.

    A second way is to use @@ -216,7 +216,7 @@ extended_type_info_typeid<T>::get_const_instance()

    Again, including one or more of the above statements anywhere -in the program will guarentee that one and only one instance +in the program will guarantee that one and only one instance is created and referred to.

    Multi-Threading

    @@ -224,10 +224,9 @@ This singleton CAN be safely used in multi-threading applications if one is careful follow a simple rule:

    Do not call get_mutable_instance when more than one thread is running! -<'> All singletons used in the serialization library follow this rule. In order to help detect accidental violations of this rule there -exists an singleton lock/unlock functions. +exist singleton lock/unlock functions.

    
     void boost::serialization::singleton_module::lock();
     void boost::serialization::singleton_module::unlock();
    @@ -241,7 +240,7 @@ alteration of static variables before
     main is called. 
     The lock() and
     unlock() are "global"
    -in they affect ALL the singletons defined by this template.
    +in that they affect ALL the singletons defined by this template.
     All serialization tests invoke lock()
     at the start of the progam.  For programs compiled in release
     mode these functions have no effect.
    
    From 819f5649ad302416c077c35ad4b9c338bea2fdf9 Mon Sep 17 00:00:00 2001
    From: insideoutclub 
    Date: Mon, 26 May 2014 22:08:39 -0700
    Subject: [PATCH 26/32] Fixing typos.
    
    ---
     doc/faq.html | 6 +++---
     1 file changed, 3 insertions(+), 3 deletions(-)
    
    diff --git a/doc/faq.html b/doc/faq.html
    index 3cdb8fbe..9e724c9d 100644
    --- a/doc/faq.html
    +++ b/doc/faq.html
    @@ -29,10 +29,10 @@ http://www.boost.org/LICENSE_1_0.txt)
             
         
         
    -This section will be used to list answers to questions raise in the mailing +This section will be used to list answers to questions raised in the mailing lists. Most of these are due to subtle aspects of the library which are -overlooked even though they might be described in the documenation. Often, -these issues are very easy to address - but can be excruciating difficult to +overlooked even though they might be described in the documentation. Often, +these issues are very easy to address - but can be excruciatingly difficult to find. Should you have such an experience, feel free to vent your frustration in a constructive way by adding in your own item. The best way to do this is to create a "TRAK" item From f5a31ae7c07a626edd48e01c986520d0ec4366f7 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 22:12:15 -0700 Subject: [PATCH 27/32] Fixing typos. --- doc/rationale.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/rationale.html b/doc/rationale.html index c963788b..5222a2e2 100644 --- a/doc/rationale.html +++ b/doc/rationale.html @@ -49,7 +49,7 @@ streams even though they have similar syntax rules.
    • Archive classes are not kinds of streams though they are implemented in terms of streams. This - distinction is addressed in [5] item number item 41 . + distinction is addressed in [5] item number 41.
    • We don't want users to insert/extract data directly into/from  the stream .  This could create a corrupted archive. Were archives From 9e1a6193241c4f1bcb920daca65294cf236504d8 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 22:19:23 -0700 Subject: [PATCH 28/32] Fixing typos. Please check lines 52 and 102. --- doc/todo.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/todo.html b/doc/todo.html index 873feb45..703d1148 100644 --- a/doc/todo.html +++ b/doc/todo.html @@ -43,13 +43,13 @@ Currently there is a portable binary archive in the examples directory. It is not regularly submitted to the exhaustive boost testing regimen but it is tested occasionally and has been used in production code.

      -Its missing the following: +It's missing the following:

      • Addition of portable floating point types. This is not trivial. In addition to handling floating point types of varying sizes, It requires handling invalid floating point numbers (NaNs) in a portable manner.
      • Some way to test archive portability within the Boost testing regimen. -
      • Integration into the Boost testing similar to the other archive classes. +
      • Integration into the Boost testing regimen similar to the other archive classes.

      Performance Testing and Profiling

      @@ -67,13 +67,13 @@ which shows the results of each test and links to the actual profile.

      The first thing I did was include some of the serialization library tests. -It became immediatly apparent that these tests were totally unsuitable +It became immediately apparent that these tests were totally unsuitable for performance testing and that new tests needed to be written for this purpose. These tests would highlight the location of any performance bottlenecks in the serialization library. Whenever I've subjected my -code in the past to this type of analysis, I've always been suprised +code in the past to this type of analysis, I've always been surprised to find bottlenecks in totally unanticipated places and fixing those -has always lead to large improvements in performance. I expect that +has always led to large improvements in performance. I expect that this project would have a huge impact on the utility of the serialization library. @@ -81,10 +81,10 @@ library. It has been suggested that a useful feature of the library would be the ability to create "older versions" of archives. Currently, -the library permits one make programs that are guarenteed +the library permits one to make programs that are guaranteed the ability to load archives with classes of a previous version. -But there is not way to save classes in accordance with a -previous version. At first I dismissed this a a huge project +But there is no way to save classes in accordance with a +previous version. At first I dismissed this as a huge project with small demand. A cursory examination of the code revealed that this would not be very difficult. It would require some small changes in code and some additional tests. Also it From 521589af07fb046e3b6a2a00f6e2c19613d3337f Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 22:22:46 -0700 Subject: [PATCH 29/32] Fixing typos. --- doc/new_case_studies.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/new_case_studies.html b/doc/new_case_studies.html index 5ad9d4f0..53ac6a07 100644 --- a/doc/new_case_studies.html +++ b/doc/new_case_studies.html @@ -36,13 +36,13 @@ techiques on how to use the library to address specific situations.

      Serializing a Function Object

      An example on how to serialize a function object. I believe this -could be done by serializing pointer to the object in question. Since -the Serialization library resurrects pointer of the correct type +could be done by serializing a pointer to the object in question. Since +the Serialization library resurrects a pointer of the correct type this should be easily implementable.

      If a group of function objects were all derived from the same polymorphic base class - perhaps via multiple inheritance, -the the function object effectively becomes a "variable" which +then the function object effectively becomes a "variable" which encapsulates code.

      This case study would show how to do this. @@ -51,19 +51,19 @@ This case study would show how to do this. Often users want to add their own special functionality to an existing archive. Examples of this are performance enhancements -for specific types, Adjustment of output syntax for xml archives, +for specific types, adjustment of output syntax for xml archives, and logging/debug output as archives are written and/or read. -If this functionalty is implemented as an "adaptor" template -which takes the base class as a template argument, such functionality -appended to any archive for which that funtionality makes sense. +If this functionality is implemented as an "adaptor" template +which takes the base class as a template argument, such functionality could be +appended to any archive for which that functionality makes sense. For example, an adaptor for generating an xml schema could be -appended to both wide narrow character versions of xml archives. +appended to both wide and narrow character versions of xml archives.

      This case study would show how to make a useful archive adaptor.

      Archive Helpers

      Some types are not serializable as they stand. That is - they -do not fullfill the requirements of the "Serializable Concept". +do not fulfill the requirements of the "Serializable Concept". The iconic example of this is boost::shared_ptr. Sometimes these types could be made serializable by adding code inside the library. Of course, doing that would create a lifetime From 622a95dd8180b228eb01d74f1ab448ec0a944b3a Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 22:27:35 -0700 Subject: [PATCH 30/32] Fixing typos. Please check line 130. --- doc/history.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/history.html b/doc/history.html index bf3662f0..24d696b6 100644 --- a/doc/history.html +++ b/doc/history.html @@ -30,24 +30,24 @@ http://www.boost.org/LICENSE_1_0.txt)
    • 27 Feb 2002
      • divide interface from implementation for class - serialization to permit compiliation on gcc -
      • improved template instantanciation for type templates + serialization to permit compilation on gcc +
      • improved template instantantation for type templates
    • 18 Mar 2002 - draft #2 uploaded to boost
      • elminated locale effects on archives
      • added signature and library version to archive header -
      • improved detection of errors when objects are serializationed - as pointers and subsequently serializationed as objects +
      • improved detection of errors when objects are serialized + as pointers and subsequently serialized as objects
      • permit non-portable binary archives -
      • implement work around for systems such as MSVC 6.0 that - don'tsupport partial ordering +
      • implement workaround for systems such as MSVC 6.0 that + don't support partial ordering
    • 16 May 2002 - draft #3 uploaded to boost
      • Ability to specify serialization of other templates in a non-intrusive way. -
      • Included and example which uses boost::shared_ptr. +
      • Included an example which uses boost::shared_ptr.
      • improved documentation
      • More test cases
      • More testing and documentation of obscure situtations @@ -65,7 +65,7 @@ http://www.boost.org/LICENSE_1_0.txt)
      • minor corrections
      • Additions to documentation to explicitly address issues of exception safety. -
      • More test cases/demos to illustrate handlling of the above issues. +
      • More test cases/demos to illustrate handling of the above issues.
      • Additions to documentation to include rationale for not depending on type_id
      • Implementation of serialization of boost::shared_ptr. @@ -128,7 +128,7 @@ http://www.boost.org/LICENSE_1_0.txt)
      • 1 November 2004 - final changes for first boost official release 1.32 .
        • Adjustments to address make package compatible with two-phase lookup. -
        • Many small adjustments to accomdate quirks of various compilers. +
        • Many small adjustments to accommodate quirks of various compilers.
        • A few bug fixes.
        From 3e7c5fde9917ec2a8fc3544bdf3ac859d5298849 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 22:31:44 -0700 Subject: [PATCH 31/32] Fixing typos. --- doc/bibliography.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/bibliography.html b/doc/bibliography.html index 1ac09a47..59da5bb3 100644 --- a/doc/bibliography.html +++ b/doc/bibliography.html @@ -46,13 +46,13 @@ http://www.boost.org/LICENSE_1_0.txt)
      • Alexandrescu, Andrei, Modern C++ Design, Addison-Wesley, 2001 -
      • Jm Hyslop, and Herb Sutter, "Factory Redux, Part2", +
      • Jim Hyslop, and Herb Sutter, "Factory Redux, Part2", C/C++ User's Journal, vol 21, No. 8, August 2003
      • David Vandevoorde and Nicolai M. Josuttis, C++ Templates - The Complete Guide, Addison-Wesley, 2003 -
      • Herb Sutter, "Pimples--Beauty Marks You Can Depend On", +
      • Herb Sutter, "Pimpls--Beauty Marks You Can Depend On", C++ Report, from More C++ Gems, Cambridge University Press, 2000
      • James Coplien, "Curiously Recurring Template Patterns", @@ -63,7 +63,7 @@ http://www.boost.org/LICENSE_1_0.txt)
      • Stephan Beal, "s11n serialization library", www.s11n.net -
      • Vandervoorde and Josuttis, C++ Templates - A Complete Guide, Addison-Wesley, 2003 +
      • Vandevoorde and Josuttis, C++ Templates - A Complete Guide, Addison-Wesley, 2003

        © Copyright Robert Ramey 2002-2004. From 740d662757c9e6ab3f83022abcb3901d7eee43a8 Mon Sep 17 00:00:00 2001 From: insideoutclub Date: Mon, 26 May 2014 22:34:32 -0700 Subject: [PATCH 32/32] Fixing typos. --- doc/acknowledgments.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/acknowledgments.html b/doc/acknowledgments.html index 74a7c70e..e4829282 100644 --- a/doc/acknowledgments.html +++ b/doc/acknowledgments.html @@ -44,10 +44,10 @@ http://www.boost.org/LICENSE_1_0.txt)

      • Tonko Juricic helped refine and complete project files for VC 7.1 ide
      • Rene Rivera tracked down several issues related to Code Warrior, toolset configuration and bjam and much else. -
      • Martin Ecker detected (and fixed!) a number of sublte errors regarding cyclic +
      • Martin Ecker detected (and fixed!) a number of subtle errors regarding cyclic pointers, shared pointers. He also built the library as a DLL and raised some issues
      • Pavel Vozenilek invested much effort in review of code and documentation - resulting in many improvements. In addition he help a lot with porting to other + resulting in many improvements. In addition he helped a lot with porting to other platforms including VC 6.0, Intel, and especially Borland.
      • Jens Maurer and Beman Dawes who got the boost @@ -76,7 +76,7 @@ http://www.boost.org/LICENSE_1_0.txt) Mr. Rozenthal in particular wrote an incredibly insightful analysis that has driven all subsequent development that has resulted in the current package. -
      • Dave Harris proposal and spirited defense of it lead to a re-thinking +
      • Dave Harris proposal and spirited defense of it led to a re-thinking of the overrides for serialization of pointers. This resulted in a simpler and more effective method of accounting for non-default constructors required by serialization of pointers and STL collections.