00001 /*00002 * The Software License00003 * =================================================================================00004 * Copyright (c) 2003-.The Terimber Corporation. All rights reserved.00005 * =================================================================================00006 * Redistributions of source code must retain the above copyright notice, 00007 * this list of conditions and the following disclaimer.00008 * Redistributions in binary form must reproduce the above copyright notice, 00009 * this list of conditions and the following disclaimer in the documentation 00010 * and/or other materials provided with the distribution.00011 * The end-user documentation included with the redistribution, if any, 00012 * must include the following acknowledgment:00013 * "This product includes software developed by the Terimber Corporation."00014 * =================================================================================00015 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, 00016 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 00017 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00018 * IN NO EVENT SHALL THE TERIMBER CORPORATION OR ITS CONTRIBUTORS BE LIABLE FOR 00019 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00020 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00021 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 00022 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT00023 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE00024 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.00025 * ================================================================================00026 */00027
00028 #ifndef _terimber_varfactory_h_00029 #define _terimber_varfactory_h_00030
00031 #include "smart/varvalue.h"00032 #include "smart/byterep.h"00033
00034 BEGIN_TERIMBER_NAMESPACE00035 #pragma pack(4)00036
00039class variant_factory00040 {
00041 public:
00043 variant_factory();
00045 ~variant_factory();
00046
00048 bool00049 create( vt_types type,
00050 var_value& val,
00051 size_t len
00052 );
00054 bool00055 clone( vt_types type,
00056 var_value& out,
00057 constvar_value& in
00058 );
00060 void00061 destroy( vt_types type,
00062 var_value& val
00063 );
00064
00066 void00067 reset();
00068
00069 private:
00070
00071byte_repository_factory_byte_allocator;
00072node_allocator< double >_double_allocator;
00073node_allocator< long double >_long_double_allocator;
00074node_allocator< guid_t >_guid_allocator;
00075byte_allocator_tmp_allocator;
00076 };
00077
00078 #pragma pack()00079 END_TERIMBER_NAMESPACE00080
00081 #endif // _terimber_varfactory_h_