Example #1
0
		// size/iterator
		std::size_t node_data::size() const
		{
			if(!m_isDefined)
				return 0;

			switch(m_type) {
				case NodeType::Sequence: compute_seq_size(); return m_seqSize;
				case NodeType::Map: compute_map_size(); return m_map.size() - m_undefinedPairs.size();
				default:
					return 0;
			}
			return 0;
		}
Example #2
0
static void element_end(GMarkupParseContext *context,
		const gchar *element_name, gpointer user_data, GError **err)
{
	struct context_data *ctx_data = user_data;
	struct sdp_xml_data *elem;

	if (!strcmp(element_name, "record"))
		return;

	if (!strcmp(element_name, "attribute")) {
		if (ctx_data->stack_head && ctx_data->stack_head->data) {
			int ret = sdp_attr_add(ctx_data->record, ctx_data->attr_id,
							ctx_data->stack_head->data);
			if (ret == -1)
				DBG("Could not add attribute 0x%04x",
							ctx_data->attr_id);

			ctx_data->stack_head->data = NULL;
			sdp_xml_data_free(ctx_data->stack_head);
			ctx_data->stack_head = NULL;
		} else {
			DBG("No data for attribute 0x%04x", ctx_data->attr_id);
		}
		return;
	}

	if (!strcmp(element_name, "sequence")) {
		ctx_data->stack_head->data->unitSize = compute_seq_size(ctx_data->stack_head->data);

		if (ctx_data->stack_head->data->unitSize > USHRT_MAX) {
			ctx_data->stack_head->data->unitSize += sizeof(uint32_t);
			ctx_data->stack_head->data->dtd = SDP_SEQ32;
		} else if (ctx_data->stack_head->data->unitSize > UCHAR_MAX) {
			ctx_data->stack_head->data->unitSize += sizeof(uint16_t);
			ctx_data->stack_head->data->dtd = SDP_SEQ16;
		} else {
			ctx_data->stack_head->data->unitSize += sizeof(uint8_t);
		}
	} else if (!strcmp(element_name, "alternate")) {
		ctx_data->stack_head->data->unitSize = compute_seq_size(ctx_data->stack_head->data);

		if (ctx_data->stack_head->data->unitSize > USHRT_MAX) {
			ctx_data->stack_head->data->unitSize += sizeof(uint32_t);
			ctx_data->stack_head->data->dtd = SDP_ALT32;
		} else if (ctx_data->stack_head->data->unitSize > UCHAR_MAX) {
			ctx_data->stack_head->data->unitSize += sizeof(uint16_t);
			ctx_data->stack_head->data->dtd = SDP_ALT16;
		} else {
			ctx_data->stack_head->data->unitSize += sizeof(uint8_t);
		}
	}

	if (ctx_data->stack_head->next && ctx_data->stack_head->data &&
					ctx_data->stack_head->next->data) {
		switch (ctx_data->stack_head->next->data->dtd) {
		case SDP_SEQ8:
		case SDP_SEQ16:
		case SDP_SEQ32:
		case SDP_ALT8:
		case SDP_ALT16:
		case SDP_ALT32:
			ctx_data->stack_head->next->data->val.dataseq =
				sdp_seq_append(ctx_data->stack_head->next->data->val.dataseq,
								ctx_data->stack_head->data);
			ctx_data->stack_head->data = NULL;
			break;
		}

		elem = ctx_data->stack_head;
		ctx_data->stack_head = ctx_data->stack_head->next;

		sdp_xml_data_free(elem);
	}
}
static void element_log(sdp_data_t * d ) {

    switch (d->dtd) {
    case SDP_DATA_NIL:
        break;
    case SDP_UINT8:
        debug("Type = SDP_UINT8 len = %d value = 0x%x", sizeof(uint8_t),d->val.uint8);
        break;
    case SDP_UINT16:
        debug("Type = SDP_UINT16 len = %d value = 0x%x", sizeof(uint16_t),d->val.uint16);        
        break;
    case SDP_UINT32:
        debug("Type = SDP_UINT32 len = %d value = 0x%x", sizeof(uint32_t),d->val.uint32);
        break;
    case SDP_UINT64:
        debug("Type = SDP_UINT64 len = %d value = 0x%x", sizeof(uint64_t),d->val.uint64);        
        break;
    case SDP_UINT128:                    
        debug("Type = SDP_UINT128 len = %d value = 0x%x", sizeof(uint128_t),d->val.uint128);                
        break;
    case SDP_INT8:
    case SDP_BOOL:
        debug("Type = SDP_INT8 len = %d value = 0x%x", sizeof(int8_t),d->val.int8);                        
        break;
    case SDP_INT16:
        debug("Type = SDP_INT16 len = %d value = 0x%x", sizeof(int16_t),d->val.int16);
        break;
    case SDP_INT32:
        debug("Type = SDP_INT32 len = %d value = 0x%x", sizeof(int32_t),d->val.int32);        
        break;
    case SDP_INT64:
        debug("Type = SDP_INT64 len = %d value = 0x%x", sizeof(int64_t),d->val.int64);
        break;
    case SDP_INT128:
        debug("Type = SDP_INT128 len = %d value = 0x%x", sizeof(uint128_t),d->val.int128);
        break;
    case SDP_TEXT_STR8:
    case SDP_TEXT_STR16:
    case SDP_TEXT_STR32:
    case SDP_URL_STR8:
    case SDP_URL_STR16:
    case SDP_URL_STR32:
        debug("Type = SDP_TEXT_STR8 len = %d value = %s", d->unitSize - sizeof(uint8_t),d->val.str);
        break;
    case SDP_SEQ8:
    case SDP_SEQ16:
    case SDP_SEQ32:
        debug("Type = SDP_SEQ8 len = %d ", compute_seq_size(d));
        break;
    case SDP_ALT8:
    case SDP_ALT16:
    case SDP_ALT32:
        debug("Type = SDP_ALT8 len = %d ", compute_seq_size(d));
        break;
    case SDP_UUID16:
        debug("Type = SDP_UUID16 len = %d 0x%x", sizeof(uint16_t),d->val.uuid.value.uuid16 );
        break;
    case SDP_UUID32:
        debug("Type = SDP_UUID32 len = %d 0x%x", sizeof(uint32_t),d->val.uuid.value.uuid32 );
        break;
    case SDP_UUID128:
        debug("Type = SDP_UUID128 len = %d 0x%x", sizeof(uint128_t),d->val.uuid.value.uuid128 );
        break;
    default:
        break;
    }
    
}