summaryrefslogtreecommitdiff
path: root/ext/satellite/namedvalue_to_zval.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/satellite/namedvalue_to_zval.c')
-rw-r--r--ext/satellite/namedvalue_to_zval.c315
1 files changed, 0 insertions, 315 deletions
diff --git a/ext/satellite/namedvalue_to_zval.c b/ext/satellite/namedvalue_to_zval.c
deleted file mode 100644
index 86fb2cb247..0000000000
--- a/ext/satellite/namedvalue_to_zval.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP version 4.0 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2001 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.02 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
- | http://www.php.net/license/2_02.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: David Eriksson <david@2good.com> |
- +----------------------------------------------------------------------+
- */
-
-/*
- * $Id$
- * vim: syntax=c tabstop=2 shiftwidth=2
- */
-
-/* -----------------------------------------------------------------------
- *
- * Functions to convert a CORBA_NamedValue to a zval
- *
- * -----------------------------------------------------------------------
- */
-#include <zend_API.h>
-#include "namedvalue_to_zval.h"
-#include "common.h"
-#include "object.h"
-#include "struct.h"
-#include "corba.h"
-
-#include <ORBitutil/util.h> /* for ALIGN_ADDRESS() */
-
-static zend_bool satellite_any_to_zval_boolean(
- const CORBA_any * pSource, zval * pDestination)
-{
- CORBA_boolean * p_value = (CORBA_boolean *)pSource->_value;
- ZVAL_BOOL(pDestination, *p_value != 0);
- return TRUE;
-}
-
-static zend_bool satellite_any_to_zval_double(
- const CORBA_any * pSource, zval * pDestination)
-{
- CORBA_double * p_value = (CORBA_double *)pSource->_value;
- ZVAL_DOUBLE(pDestination, *p_value);
- return TRUE;
-}
-
-static zend_bool satellite_any_to_zval_long(
- const CORBA_any * pSource, zval * pDestination)
-{
- CORBA_long * p_value = (CORBA_long *)pSource->_value;
- ZVAL_LONG(pDestination, *p_value);
- return TRUE;
-}
-
-static zend_bool satellite_any_to_zval_short(
- const CORBA_any * pSource, zval * pDestination)
-{
- CORBA_short * p_value = (CORBA_short *)pSource->_value;
- ZVAL_LONG(pDestination, *p_value);
- return TRUE;
-}
-
-
-static zend_bool satellite_any_to_zval_objref(
- const CORBA_any * pSource, zval * pDestination)
-{
- CORBA_Object * p_value = (CORBA_Object *)pSource->_value;
- CORBA_Object dup =
- CORBA_Object_duplicate(*p_value, orbit_get_environment());
-
- return OrbitObject_Create(dup, pDestination);
-}
-
-static zend_bool satellite_any_to_zval_sequence(
- const CORBA_any * pSource, zval * pDestination)
-{
- int i;
- int length = 0, step;
- void ** pp_members = NULL;
- zend_bool success = FALSE;
- CORBA_NamedValue source_item;
- zval * p_destination_item = NULL;
- CORBA_TypeCode content_type = NULL;
- CORBA_sequence_octet * p_value =
- (CORBA_sequence_octet *)pSource->_value;
-
- /* get array to items */
- pp_members = (void **)p_value->_buffer;
-
- /* get number of members */
- length = p_value->_length;
-
- /* get type of items */
- content_type = CORBA_TypeCode_content_type(
- pSource->_type, orbit_get_environment());
- if (content_type == NULL)
- goto error;
-
- /* set zval members */
-#if 0
- pDestination->type = IS_ARRAY;
- pDestination->refcount = 1;
-
- pDestination->value.ht = orbit_new(HashTable);
-
- zend_hash_init(
- pDestination->value.ht, /* hash table */
- 0, /* size */
- NULL, /* hash function */
- ZVAL_PTR_DTOR, /* destructor */
- 0); /* persistent */
-#else
- array_init(pDestination);
-#endif
-
- step = content_type->length ? content_type->length : 1;
-
- for (i = 0; i < length; i++)
- {
- p_destination_item = NULL;
- memset(&source_item, 0, sizeof(CORBA_NamedValue));
-
- source_item.argument._type = content_type;
- source_item.argument._value = pp_members;
-
- pp_members += step;
-
- ALLOC_ZVAL(p_destination_item);
-
- /* convert item */
- success = orbit_namedvalue_to_zval(
- &source_item,
- p_destination_item);
-
- if (!success)
- goto error;
-
- /* add to hashtable */
- INIT_PZVAL(p_destination_item); /* testing! */
- zend_hash_next_index_insert(
- pDestination->value.ht,
- &p_destination_item,
- sizeof(zval *),
- NULL);
-
-/* FREE_ZVAL(p_destination_item);*/
- }
-
- return TRUE;
-
-error:
- return FALSE;
-}
-
-static zend_bool satellite_any_to_zval_string(
- const CORBA_any * pSource, zval * pDestination)
-{
- char ** pp_value = (char **)pSource->_value;
- ZVAL_STRING(pDestination, (*pp_value), TRUE);
- return TRUE;
-}
-
-static zend_bool satellite_any_to_zval_struct(
- const CORBA_any * pSource, zval * pDestination)
-{
- int member_count = 0;
- CORBA_TypeCode type = NULL;
- char * p_repository_id = NULL;
- OrbitStruct * p_struct = NULL;
-
- /* make type a shortcut to the typecode */
- type = pSource->_type;
-
- /* find out the repository id */
- p_repository_id = CORBA_TypeCode_id(type, orbit_get_environment());
- /* do not check for exception because we may be converting one! */
- if (p_repository_id == NULL)
- goto error;
-
- if (!OrbitStruct_Create(p_repository_id, pDestination))
- goto error;
-
- p_struct = OrbitStruct_RetrieveData(pDestination);
- if (p_struct == NULL)
- goto error;
-
- /* now we know the source and destination matches! */
- member_count = CORBA_TypeCode_member_count(type, orbit_get_environment());
- /* do not check for exception because we may be converting one! */
-
- if (member_count > 0)
- {
- int i;
- zend_bool success;
- zval destination_item;
- CORBA_NamedValue source_item;
- char * p_buffer = (char *)pSource->_value;
-
- for (i = 0; i < member_count; i++)
- {
- int alignment;
- char * p_name =
- CORBA_TypeCode_member_name(type, i, orbit_get_environment());
- if (p_name == NULL)
- goto error;
-
- /* prepare destination item */
- ZVAL_NULL(&destination_item);
-
- /* prepare source item */
- memset(&source_item, 0, sizeof(CORBA_NamedValue));
- source_item.argument._type =
- CORBA_TypeCode_member_type(type, i, orbit_get_environment());
- if (source_item.argument._type == NULL)
- goto error;
-
- /* align pointer and set value */
- alignment = ORBit_find_alignment(source_item.argument._type);
- p_buffer = ALIGN_ADDRESS(p_buffer, alignment);
- source_item.argument._value = p_buffer;
-
- /* convert item */
- if (!orbit_namedvalue_to_zval(&source_item, &destination_item))
- goto error;
-
- /* set attribute */
- success = OrbitStruct_PutProperty(p_struct, p_name, &destination_item);
- if (!success) goto error;
-
- /* advance buffer */
- p_buffer += ORBit_gather_alloc_info(source_item.argument._type);
- }
- }
-
- return TRUE;
-
-error:
- return FALSE;
-}
-
-zend_bool satellite_any_to_zval(
- const CORBA_any * pSource, zval * pDestination)
-{
- zend_bool success = FALSE;
- CORBA_TCKind kind;
-
- if (pSource->_type == NULL || pDestination == NULL)
- return FALSE;
-
- kind = CORBA_TypeCode_kind(
- pSource->_type,
- orbit_get_environment()); /* does not throw exceptions */
-
- switch (kind)
- {
- case CORBA_tk_boolean:
- success = satellite_any_to_zval_boolean(pSource, pDestination);
- break;
-
- case CORBA_tk_double:
- success = satellite_any_to_zval_double(pSource, pDestination);
- break;
-
- case CORBA_tk_enum:
- case CORBA_tk_long:
- success = satellite_any_to_zval_long(pSource, pDestination);
- break;
-
- case CORBA_tk_objref:
- success = satellite_any_to_zval_objref(pSource, pDestination);
- break;
-
- case CORBA_tk_sequence:
- success = satellite_any_to_zval_sequence(pSource, pDestination);
- break;
-
- case CORBA_tk_short:
- success = satellite_any_to_zval_short(pSource, pDestination);
- break;
-
- case CORBA_tk_string:
- success = satellite_any_to_zval_string(pSource, pDestination);
- break;
-
- case CORBA_tk_struct: /* 15 */
- case CORBA_tk_except: /* 22 */
- success = satellite_any_to_zval_struct(pSource, pDestination);
- break;
-
- default:
-/* printf("unsupported corba TCKind %i\n", kind);*/
- zend_error(E_WARNING, "(satellite) unsupported corba TCKind %i", kind);
- }
-
- return success;
-}
-
-zend_bool orbit_namedvalue_to_zval(
- const CORBA_NamedValue * pSource, zval * pDestination)
-{
- if (pSource == NULL)
- return FALSE;
-
- return satellite_any_to_zval(&pSource->argument, pDestination);
-}
-
-