Browse Source

git-svn-id: https://svn.code.sf.net/p/openv2g/code/trunk@71 d9f2db14-54d0-4bde-b00c-16405c910529

sebastiankb 13 years ago
parent
commit
a342317852

+ 0 - 579
src/codec/AbstractDecoderChannel.c

@@ -1,579 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "DecoderChannel.h"
-#include "CoderChannel.h"
-#include "BitInputStream.h"
-#include "EXITypes.h"
-
-#ifndef ABSTRACT_DECODER_CHANNEL_C
-#define ABSTRACT_DECODER_CHANNEL_C
-
-/* unsigned long == 64 bits, 10 * 7bits = 70 bits */
-#define MAX_OCTETS_FOR_UNSIGNED_INTEGER_64 10
-/* unsigned int == 32 bits, 5 * 7bits = 35 bits */
-#define MAX_OCTETS_FOR_UNSIGNED_INTEGER_32 5
-
-/* buffer for reading (arbitrary) large integer values */
-static unsigned int maskedOctets[MAX_OCTETS_FOR_UNSIGNED_INTEGER_64];
-
-
-static int _decodeUnsignedInteger(bitstream_t* stream, integer_t* iv, int negative) {
-	int errn = 0;
-	int i, k;
-	uint8_t b;
-
-	for (i = 0; i < MAX_OCTETS_FOR_UNSIGNED_INTEGER_64; i++) {
-		/* Read the next octet */
-		errn = decode(stream, &b);
-		/* If the most significant bit of the octet was 1,
-		   another octet is going to come */
-		if (b < 128) {
-			/* no more octets */
-
-			/* For negative values, the Unsigned Integer holds the
-			 * magnitude of the value minus 1 */
-
-			switch(i) {
-			case 0: /* 7 bits */
-				if (negative) {
-					iv->val.int8 =  - ( b + 1);
-					iv->type = EXI_INTEGER_8;
-				} else {
-					iv->val.uint8 = b;
-					iv->type = EXI_UNSIGNED_INTEGER_8;
-				}
-				return 0;
-			case 1: /* 14 bits */
-				maskedOctets[i] = b;
-				iv->val.uint16 = 0;
-				for (k = i; k >= 0 ; k--) {
-					iv->val.uint16  = (iv->val.uint16 << 7) | maskedOctets[k];
-				}
-				if (negative) {
-					iv->val.int16 = - ( iv->val.uint16 + 1 );
-					iv->type = EXI_INTEGER_16;
-				} else {
-					iv->type = EXI_UNSIGNED_INTEGER_16;
-				}
-				return 0;
-			case 2: /* 21 bits */
-			case 3: /* 28 bits */
-				maskedOctets[i] = b;
-				iv->val.uint32 = 0;
-				for (k = i; k >= 0 ; k--) {
-					iv->val.uint32 = (iv->val.uint32 << 7) | maskedOctets[k];
-				}
-				if (negative) {
-					iv->val.int32 = - ( iv->val.uint32 + 1 );
-					if (iv->val.int32 <= INT16_MAX && iv->val.int32 >= INT16_MIN ) {
-						iv->type = EXI_INTEGER_16;
-					} else {
-						iv->type = EXI_INTEGER_32;
-					}
-				} else {
-					if (iv->val.uint32 <= UINT16_MAX) {
-						iv->type = EXI_UNSIGNED_INTEGER_16;
-					} else {
-						iv->type = EXI_UNSIGNED_INTEGER_32;
-					}
-				}
-				return 0;
-			case 4: /* 35 bits */
-			case 5: /* 42 bits */
-			case 6: /* 49 bits */
-			case 7: /* 56 bits */
-			case 8: /* 63 bits */
-			case 9: /* 70 bits */
-				maskedOctets[i] = b;
-				iv->val.uint64 = 0;
-				for (k = i; k >= 0 ; k--) {
-					iv->val.uint64  = (iv->val.uint64 << 7) | maskedOctets[k];
-				}
-				if (negative) {
-					if (i > 8) {
-						/* too large */
-						return EXI_UNSUPPORTED_INTEGER_VALUE;
-					}
-					iv->val.int64 = - ( iv->val.uint64 + 1 );
-					if (iv->val.int64 <= INT32_MAX && iv->val.int64 >= INT32_MIN ) {
-						iv->type = EXI_INTEGER_32;
-					} else {
-						iv->type = EXI_INTEGER_64;
-					}
-				} else {
-					if (iv->val.uint64 <= UINT32_MAX) {
-						iv->type = EXI_UNSIGNED_INTEGER_32;
-						/* iv->val.uint32 = iv->val.uint64;*/
-					} else {
-						iv->type = EXI_UNSIGNED_INTEGER_64;
-					}
-				}
-				return 0;
-			default:
-				return EXI_UNSUPPORTED_INTEGER_VALUE;
-			}
-		} else {
-			/* the 7 least significant bits hold the actual value */
-			maskedOctets[i] = (b & 127);
-		}
-	}
-
-
-	return EXI_UNSUPPORTED_INTEGER_VALUE;
-}
-
-int decodeUnsignedInteger(bitstream_t* stream, integer_t* iv) {
-	return _decodeUnsignedInteger(stream, iv, 0);
-}
-
-int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16) {
-	unsigned int mShift = 0;
-	int errn = 0;
-	uint8_t b;
-	*uint16 = 0;
-
-	do {
-		/* 1. Read the next octet */
-		errn = decode(stream, &b);
-		/* 2. Multiply the value of the unsigned number represented by the 7
-		 * least significant
-		 * bits of the octet by the current multiplier and add the result to
-		 * the current value */
-		*uint16 += (b & 127) << mShift;
-		/* 3. Multiply the multiplier by 128 */
-		mShift += 7;
-		/* 4. If the most significant bit of the octet was 1, go back to step 1 */
-	} while (errn >= 0 && (b >> 7) == 1);
-
-	return errn;
-}
-
-int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32) {
-	/* 0XXXXXXX ... 1XXXXXXX 1XXXXXXX */
-	unsigned int mShift = 0;
-	int errn = 0;
-	uint8_t b;
-	*uint32 = 0;
-
-	do {
-		/* 1. Read the next octet */
-		errn = decode(stream, &b);
-		/* 2. Multiply the value of the unsigned number represented by the 7
-		 * least significant
-		 * bits of the octet by the current multiplier and add the result to
-		 * the current value */
-		*uint32 += (b & 127) << mShift;
-		/* 3. Multiply the multiplier by 128 */
-		mShift += 7;
-		/* 4. If the most significant bit of the octet was 1, go back to step 1 */
-	} while (errn >= 0 && (b >> 7) == 1);
-
-	return errn;
-}
-
-/**
- * Decode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64) {
-	unsigned int mShift = 0;
-	int errn = 0;
-	uint8_t b;
-	*uint64 = 0L;
-
-	do {
-		errn = decode(stream, &b);
-		*uint64 += ((uint64_t) (b & 127)) << mShift;
-		mShift += 7;
-	} while (errn >= 0 && (b >> 7) == 1);
-
-	return errn;
-}
-
-
-int decodeInteger(bitstream_t* stream, integer_t* iv) {
-	int b;
-	int errn = decodeBoolean(stream, &b);
-	if (errn < 0) {
-		return errn;
-	}
-
-	return _decodeUnsignedInteger(stream, iv, b);
-}
-
-/**
- * Decode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int decodeInteger32(bitstream_t* stream, int32_t* int32) {
-	int b;
-	uint32_t uint32;
-	int errn = decodeBoolean(stream, &b);
-
-	if (errn < 0) {
-		return errn;
-	}
-
-	if (b) {
-		/* For negative values, the Unsigned Integer holds the
-		 * magnitude of the value minus 1 */
-		errn = decodeUnsignedInteger32(stream, &uint32);
-		*int32 = -(uint32 + 1);
-	} else {
-		/* positive */
-		errn = decodeUnsignedInteger32(stream, &uint32);
-		*int32 = (int32_t)(uint32);
-	}
-
-	return errn;
-}
-
-/**
- * Decode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int decodeInteger64(bitstream_t* stream, int64_t* int64) {
-	int b;
-	uint64_t uint64;
-	int errn = decodeBoolean(stream, &b);
-
-	if (errn < 0) {
-		return errn;
-	}
-
-	if (b) {
-		/* For negative values, the Unsigned Integer holds the
-		 * magnitude of the value minus 1 */
-		errn = decodeUnsignedInteger64(stream, &uint64);
-		*int64 = -(uint64 + 1);
-	} else {
-		/* positive */
-		errn = decodeUnsignedInteger64(stream, &uint64);
-		*int64 = (int64_t)(uint64);
-	}
-
-	return errn;
-}
-
-/**
- * Decode a Float datatype as two consecutive Integers.
- * The first Integer represents the mantissa of the floating point
- * number and the second Integer represents the base-10 exponent
- * of the floating point number.
- */
-int decodeFloat(bitstream_t* stream, float_me_t* f) {
-	int errn = decodeInteger64(stream, &f->mantissa);
-	if (errn < 0) {
-		return errn;
-	}
-	return decodeInteger32(stream, &f->exponent);
-}
-
-/**
- * Decode a decimal represented as a Boolean sign followed by two Unsigned
- * Integers. A sign value of zero (0) is used to represent positive Decimal
- * values and a sign value of one (1) is used to represent negative Decimal
- * values The first Integer represents the integral portion of the Decimal
- * value. The second positive integer represents the fractional portion of
- * the decimal with the digits in reverse order to preserve leading zeros.
- */
-int decodeDecimal(bitstream_t* stream, decimal_t* d) {
-	int errn = decodeBoolean(stream, &d->negative);
-	if (errn < 0) {
-		return errn;
-	}
-	errn = decodeUnsignedInteger(stream, &d->integral);
-	if (errn < 0) {
-		return errn;
-	}
-	errn = decodeUnsignedInteger(stream, &d->reverseFraction);
-
-	return errn;
-}
-
-/**
- * Decode a sequence of characters for a given length.
- */
-int decodeStringOnly(bitstream_t* stream, uint16_t len, string_ucs_t* s) {
-	if (len > s->size) {
-		/* not enough space */
-		return EXI_ERROR_OUT_OF_STRING_BUFFER;
-	}
-	decodeCharacters(stream, len, s->codepoints);
-	s->len = len;
-	return 0;
-}
-
-/**
- * Decode a length prefixed sequence of characters.
- */
-int decodeString(bitstream_t* stream, string_ucs_t* s) {
-	int errn = decodeUnsignedInteger16(stream, &s->len);
-	if (errn < 0) {
-		return errn;
-	}
-	return decodeStringOnly(stream, s->len, s);
-}
-
-int decodeStringASCII(bitstream_t* stream, string_ascii_t* s) {
-	uint16_t slen;
-	int errn = decodeUnsignedInteger16(stream, &slen);
-	if (errn < 0) {
-		return errn;
-	}
-	if (s->size < slen) {
-		return EXI_ERROR_OUT_OF_ASCII_BUFFER;
-	}
-
-	return decodeCharactersASCII(stream, slen, s->chars);
-
-}
-
-int decodeStringValue(bitstream_t* stream, string_ucs_t* s) {
-	int errn = decodeUnsignedInteger16(stream, &s->len);
-	if (errn < 0) {
-		return errn;
-	}
-
-	switch (s->len) {
-	case 0:
-		/* local value partition */
-		return EXI_UNSUPPORTED_STRING_TABLE_LOCAL_HIT;
-	case 1:
-		/* found in global value partition */
-		return EXI_UNSUPPORTED_STRING_TABLE_GLOBAL_HIT;
-	default:
-		/* not found in global value (and local value) partition
-		 * ==> string literal is encoded as a String with the length
-		 * incremented by two */
-		return decodeStringOnly(stream, ((s->len) - 2), s);
-		/* After encoding the string value, it is added to both the
-		 * associated "local" value string table partition and the global
-		 * value string table partition */
-		/* addValue(context, value); */
-	}
-}
-
-int decodeRCSStringValue(bitstream_t* stream, rcs_t* rcs, string_ucs_t* s) {
-	unsigned int i;
-	uint32_t cp;
-	int errn = decodeUnsignedInteger16(stream, &s->len);
-	if (errn < 0) {
-		return errn;
-	}
-
-	switch (s->len) {
-	case 0:
-		/* local value partition */
-		return EXI_UNSUPPORTED_STRING_TABLE_LOCAL_HIT;
-	case 1:
-		/* found in global value partition */
-		return EXI_UNSUPPORTED_STRING_TABLE_GLOBAL_HIT;
-	default:
-		/* not found in global value (and local value) partition
-		 * ==> string literal is encoded as a String with the length
-		 * incremented by two */
-		s->len = s->len - 2;
-
-		if (s->len > s->size) {
-			/* not enough space */
-			return EXI_ERROR_OUT_OF_STRING_BUFFER;
-		}
-
-		for (i = 0; i < s->len && errn >= 0; i++) {
-			errn = decodeNBitUnsignedInteger(stream, rcs->codingLength, &cp);
-			if (errn < 0) {
-				return errn;
-			}
-			s->codepoints[i] = rcs->codepoints[cp];
-		}
-		/* After encoding the string value, it is added to both the
-		 * associated "local" value string table partition and the global
-		 * value string table partition */
-		/* addValue(context, value); */
-		return 0;
-	}
-}
-
-/**
- * Decode a sequence of characters according to a given length.
- * Each character is represented by its UCS [ISO/IEC 10646]
- * code point encoded as an Unsigned Integer
- */
-int decodeCharacters(bitstream_t* stream, uint16_t len, uint32_t* chars) {
-	unsigned int i;
-	int errn = 0;
-	for (i = 0; i < len && errn >= 0; i++) {
-		errn = decodeUnsignedInteger32(stream, &chars[i]);
-		if (errn < 0) {
-			return errn;
-		}
-	}
-
-	return errn;
-}
-int decodeCharactersASCII(bitstream_t* stream, uint16_t len, char* chars) {
-	unsigned int i;
-	uint32_t c;
-	int errn = 0;
-	for (i = 0; i < len && errn >= 0; i++) {
-		errn = decodeUnsignedInteger32(stream, &c);
-		if (errn < 0) {
-			return errn;
-		}
-		if (c > 127) {
-			return EXI_ERROR_CONVERSION_NO_ASCII_CHARACTERS;
-		}
-		chars[i] = c;
-	}
-	chars[i] = '\0';
-
-	return errn;
-}
-
-
-/**
- * Decode a binary value as a length-prefixed sequence of octets.
- */
-int decodeBinary(bitstream_t* stream, bytes_t* bytes) {
-	unsigned int i;
-	uint8_t b;
-	int errn = decodeUnsignedInteger16(stream, &bytes->len);
-	if (errn < 0) {
-		return errn;
-	}
-	if (bytes->len > bytes->size) {
-		/* not enough space */
-		return EXI_ERROR_OUT_OF_BYTE_BUFFER;
-	}
-
-	for (i = 0; i < bytes->len && errn >= 0; i++) {
-		errn = decode(stream, &b);
-		if (errn < 0) {
-			return errn;
-		}
-		bytes->data[i] = (uint8_t)b;
-	}
-
-	return errn;
-}
-
-/**
- * Decode Date-Time as sequence of values representing the individual
- * components of the Date-Time.
- */
-int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, datetime_t* datetime){
-	int errn;
-
-	datetime->type = type;
-
-	datetime->year = 0;
-	datetime->monthDay = 0;
-	datetime->time = 0;
-	datetime->presenceFractionalSecs = 0;
-	datetime->fractionalSecs = 0;
-	datetime->presenceTimezone = 0;
-	datetime->timezone = 0;
-
-	switch (type) {
-	case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */
-		errn = decodeInteger32(stream, &datetime->year);
-		if (errn < 0) {
-			return errn;
-		}
-		datetime->year += DATETIME_YEAR_OFFSET;
-		break;
-	case EXI_DATETIME_GYEARMONTH: /* Year, MonthDay, [TimeZone] */
-	case EXI_DATETIME_DATE:
-		errn = decodeInteger32(stream, &datetime->year);
-		if (errn < 0) {
-			return errn;
-		}
-		datetime->year += DATETIME_YEAR_OFFSET;
-		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay);
-		break;
-	case EXI_DATETIME_DATETIME: /* Year, MonthDay, Time, [FractionalSecs], [TimeZone] */
-		/* e.g. "0001-01-01T00:00:00.111+00:33"  */
-		errn = decodeInteger32(stream, &datetime->year);
-		if (errn < 0) {
-			return errn;
-		}
-		datetime->year += DATETIME_YEAR_OFFSET;
-		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay);
-		if (errn < 0) {
-			return errn;
-		}
-		/* Note: *no* break  */
-	case EXI_DATETIME_TIME: /* Time, [FractionalSecs], [TimeZone] */
-		/* e.g. "12:34:56.135"  */
-		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIME, &datetime->time);
-		if (errn < 0) {
-			return errn;
-		}
-		errn = decodeBoolean(stream, &datetime->presenceFractionalSecs);
-		if (errn < 0) {
-			return errn;
-		}
-		if (datetime->presenceFractionalSecs) {
-			errn = decodeUnsignedInteger32(stream, &datetime->fractionalSecs);
-		}
-		break;
-	case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */
-		/* e.g. "--12" */
-	case EXI_DATETIME_GMONTHDAY: /* MonthDay, [TimeZone] */
-		/* e.g. "--01-28"  */
-	case EXI_DATETIME_GDAY: /* MonthDay, [TimeZone] */
-		/* "---16"  */
-		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, &datetime->monthDay );
-		break;
-	default:
-		return -1;
-	}
-
-	errn = decodeBoolean(stream, &datetime->presenceTimezone );
-	if (errn < 0) {
-		return errn;
-	}
-	if (datetime->presenceTimezone) {
-		errn = decodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE, &datetime->timezone);
-		datetime->timezone -= DATETIME_TIMEZONE_OFFSET_IN_MINUTES;
-	}
-
-	return errn;
-}
-
-#endif
-

+ 0 - 436
src/codec/AbstractEncoderChannel.c

@@ -1,436 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EncoderChannel.h"
-#include "CoderChannel.h"
-#include "BitOutputStream.h"
-#include "EXITypes.h"
-#include "MethodsBag.h"
-
-#ifndef ABSTRACT_ENCODER_CHANNEL_C
-#define ABSTRACT_ENCODER_CHANNEL_C
-
-
-int encodeUnsignedInteger(bitstream_t* stream, integer_t* iv) {
-	int errn = 0;
-	switch(iv->type) {
-	/* Unsigned Integer */
-	case EXI_UNSIGNED_INTEGER_8:
-		errn = encodeUnsignedInteger32(stream, iv->val.uint8);
-		break;
-	case EXI_UNSIGNED_INTEGER_16:
-		errn = encodeUnsignedInteger32(stream, iv->val.uint16);
-		break;
-	case EXI_UNSIGNED_INTEGER_32:
-		errn = encodeUnsignedInteger32(stream, iv->val.uint32);
-		break;
-	case EXI_UNSIGNED_INTEGER_64:
-		errn = encodeUnsignedInteger64(stream, iv->val.uint64);
-		break;
-	/* (Signed) Integer */
-	case EXI_INTEGER_8:
-		if (iv->val.int8 < 0) {
-			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
-		}
-		errn = encodeUnsignedInteger32(stream, iv->val.int8);
-		break;
-	case EXI_INTEGER_16:
-		if (iv->val.int16 < 0) {
-			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
-		}
-		errn = encodeUnsignedInteger32(stream, iv->val.int16);
-		break;
-	case EXI_INTEGER_32:
-		if (iv->val.int32 < 0) {
-			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
-		}
-		errn = encodeUnsignedInteger32(stream, iv->val.int32);
-		break;
-	case EXI_INTEGER_64:
-		if (iv->val.int64 < 0) {
-			return EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE;
-		}
-		errn = encodeUnsignedInteger64(stream, iv->val.int64);
-		break;
-	default:
-		errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE;
-	}
-
-	return errn;
-}
-
-/**
- * Encode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) {
-	int errn = 0;
-	if (n < 128) {
-		/* write byte as is */
-		errn = encode(stream, (uint8_t) n);
-	} else {
-		uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n);
-
-		switch (n7BitBlocks) {
-		case 5:
-			errn = encode(stream, (uint8_t) (128 | n));
-			n = n >> 7;
-			if (errn < 0) {
-				break;
-			}
-		case 4:
-			errn = encode(stream, (uint8_t) (128 | n));
-			n = n >> 7;
-			if (errn < 0) {
-				break;
-			}
-		case 3:
-			errn = encode(stream, (uint8_t) (128 | n));
-			n = n >> 7;
-			if (errn < 0) {
-				break;
-			}
-		case 2:
-			errn = encode(stream, (uint8_t) (128 | n));
-			n = n >> 7;
-			if (errn < 0) {
-				break;
-			}
-		case 1:
-			/* 0 .. 7 (last byte) */
-			errn = encode(stream, (uint8_t) (0 | n));
-		}
-	}
-
-	return errn;
-}
-
-/**
- * Encode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) {
-	int errn = 0;
-	uint8_t lastEncode = (uint8_t) n;
-	n >>= 7;
-
-	while (n != 0) {
-		errn = encode(stream, lastEncode | 128);
-		if (errn < 0) {
-			return errn;
-		}
-		lastEncode = (uint8_t) n;
-		n >>= 7;
-	}
-
-	return encode(stream, lastEncode);
-}
-
-
-int encodeInteger(bitstream_t* stream, integer_t* iv) {
-	int errn = 0;
-	switch(iv->type) {
-	/* Unsigned Integer */
-	case EXI_UNSIGNED_INTEGER_8:
-		errn = encodeInteger32(stream, iv->val.uint8);
-		break;
-	case EXI_UNSIGNED_INTEGER_16:
-		errn = encodeInteger32(stream, iv->val.uint16);
-		break;
-	case EXI_UNSIGNED_INTEGER_32:
-		errn = encodeInteger64(stream, iv->val.uint32);
-		break;
-	case EXI_UNSIGNED_INTEGER_64:
-		errn = encodeInteger64(stream, iv->val.uint64);
-		break;
-	/* (Signed) Integer */
-	case EXI_INTEGER_8:
-		errn = encodeInteger32(stream, iv->val.int8);
-		break;
-	case EXI_INTEGER_16:
-		errn = encodeInteger32(stream, iv->val.int16);
-		break;
-	case EXI_INTEGER_32:
-		errn = encodeInteger32(stream, iv->val.int32);
-		break;
-	case EXI_INTEGER_64:
-		errn = encodeInteger64(stream, iv->val.int64);
-		break;
-	default:
-		errn = EXI_UNSUPPORTED_INTEGER_VALUE_TYPE;
-	}
-
-	return errn;
-}
-
-
-/**
- * Encode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int encodeInteger32(bitstream_t* stream, int32_t n) {
-	int errn;
-	/* signalize sign */
-	if (n < 0) {
-		errn = encodeBoolean(stream, 1);
-		/* For negative values, the Unsigned Integer holds the
-		 * magnitude of the value minus 1 */
-		n = (-n) - 1;
-	} else {
-		errn = encodeBoolean(stream, 0);
-	}
-	if (errn < 0) {
-		return errn;
-	}
-	return encodeUnsignedInteger32(stream, n);
-}
-
-/**
- * Encode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int encodeInteger64(bitstream_t* stream, int64_t n) {
-	int errn;
-	/* signalize sign */
-	if (n < 0) {
-		errn = encodeBoolean(stream, 1);
-		/* For negative values, the Unsigned Integer holds the
-		 * magnitude of the value minus 1 */
-		n = (-n) - 1;
-	} else {
-		errn = encodeBoolean(stream, 0);
-	}
-	if (errn < 0) {
-		return errn;
-	}
-	return encodeUnsignedInteger64(stream, n);
-}
-
-/**
- * The Float datatype representation is two consecutive Integers.
- * The first Integer represents the mantissa of the floating point
- * number and the second Integer represents the base-10 exponent
- * of the floating point number.
- */
-int encodeFloat(bitstream_t* stream, float_me_t* f) {
-	int errn = encodeInteger64(stream, f->mantissa);
-	if (errn >= 0) {
-		errn = encodeInteger32(stream, f->exponent);
-	}
-	return errn;
-}
-
-/**
- * Encode a decimal represented as a Boolean sign followed by two Unsigned
- * Integers. A sign value of zero (0) is used to represent positive Decimal
- * values and a sign value of one (1) is used to represent negative Decimal
- * values The first Integer represents the integral portion of the Decimal
- * value. The second positive integer represents the fractional portion of
- * the decimal with the digits in reverse order to preserve leading zeros.
- */
-int encodeDecimal(bitstream_t* stream, decimal_t* d) {
-	/* sign, integral, reverse fractional */
-	int errn = encodeBoolean(stream, d->negative);
-	if (errn < 0) {
-		return errn;
-	}
-	errn = encodeUnsignedInteger(stream, &d->integral);
-	if (errn < 0) {
-		return errn;
-	}
-	errn = encodeUnsignedInteger(stream, &d->reverseFraction);
-
-	return errn;
-}
-
-
-/**
- * Encode a length prefixed sequence of characters.
- */
-int encodeASCII(bitstream_t* stream, const char* ascii) {
-	int errn;
-	uint32_t slen = (uint32_t) strlen(ascii);
-	errn = encodeUnsignedInteger32(stream, slen);
-	if (errn >= 0) {
-		errn = encodeASCIICharacters(stream, ascii, slen);
-	}
-	return errn;
-}
-
-int encodeString(bitstream_t* stream, string_ucs_t* string) {
-	int errn = encodeUnsignedInteger32(stream, string->len);
-	if (errn >= 0) {
-		errn = encodeUCSCharacters(stream, string->codepoints, string->len);
-	}
-	return errn;
-}
-
-int encodeStringValue(bitstream_t* stream, string_ucs_t* string) {
-	/* encode string as string table miss */
-	int errn = encodeUnsignedInteger32(stream, string->len + 2);
-	if (errn >= 0) {
-		errn = encodeUCSCharacters(stream, string->codepoints, string->len);
-	}
-	return errn;
-}
-
-
-int encodeRCSStringValue(bitstream_t* stream, rcs_t* rcs, string_ucs_t* string) {
-	unsigned int i;
-	uint32_t k;
-	/* encode string as string table miss */
-	int errn = encodeUnsignedInteger32(stream, string->len + 2);
-	if (errn >= 0) {
-		for (i = 0; i < string->len && errn >= 0; i++) {
-			for (k = 0; k < rcs->size && errn >= 0; k++) {
-				if (rcs->codepoints[k] == string->codepoints[i]) {
-					errn = encodeNBitUnsignedInteger(stream, rcs->codingLength, k);
-					break; /* break inner for loop */
-				}
-			}
-		}
-	}
-	return errn;
-}
-
-/**
- * Encode a sequence of characters according to a given length.
- * Each character is represented by its UCS [ISO/IEC 10646]
- * code point encoded as an Unsigned Integer
- */
-int encodeUCSCharacters(bitstream_t* stream, uint32_t* chars, uint16_t len) {
-	unsigned int i;
-	int errn = 0;
-	for (i = 0; i < len && errn >= 0; i++) {
-		errn = encodeUnsignedInteger32(stream, chars[i]);
-	}
-	return errn;
-}
-
-int encodeASCIICharacters(bitstream_t* stream, const char* chars, uint16_t len) {
-	unsigned int i;
-	int errn = 0;
-	for (i = 0; i < len && errn >= 0; i++) {
-		errn = encode(stream, chars[i]);
-	}
-	return errn;
-}
-
-/**
- * Encode a binary value as a length-prefixed sequence of octets.
- */
-int encodeBinary(bitstream_t* stream, bytes_t* bytes) {
-	unsigned int i;
-	int errn = encodeUnsignedInteger32(stream, bytes->len);
-
-	for (i = 0; i < bytes->len && errn >= 0; i++) {
-		errn = encode(stream, bytes->data[i]);
-	}
-	return errn;
-}
-
-/**
- * Encode a datetime representation which is a sequence of values
- * representing the individual components of the Date-Time
- */
-int encodeDateTime(bitstream_t* stream, datetime_t* datetime) {
-	int errn = 0;
-	switch (datetime->type) {
-	case EXI_DATETIME_GYEAR: /* Year, [Time-Zone] */
-		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
-		break;
-	case EXI_DATETIME_GYEARMONTH: /* Year, MonthDay, [TimeZone] */
-	case EXI_DATETIME_DATE: /* Year, MonthDay, [TimeZone] */
-		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
-		if (errn < 0) {
-			return errn;
-		}
-		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, datetime->monthDay);
-		break;
-	case EXI_DATETIME_DATETIME: /* Year, MonthDay, Time, [FractionalSecs], [TimeZone] */
-		errn = encodeInteger32(stream, datetime->year - DATETIME_YEAR_OFFSET);
-		if (errn < 0) {
-			return errn;
-		}
-		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, datetime->monthDay);
-		if (errn < 0) {
-			return errn;
-		}
-		/* Note: *no* break */
-	case EXI_DATETIME_TIME: /* Time, [FractionalSecs], [TimeZone] */
-		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIME, datetime->time);
-		if (errn < 0) {
-			return errn;
-		}
-		if (datetime->presenceFractionalSecs) {
-			encodeBoolean(stream, 1);
-			if (errn < 0) {
-				return errn;
-			}
-			encodeUnsignedInteger32(stream, datetime->fractionalSecs);
-		} else {
-			encodeBoolean(stream, 0);
-		}
-		break;
-	case EXI_DATETIME_GMONTH: /* MonthDay, [TimeZone] */
-	case EXI_DATETIME_GMONTHDAY: /* MonthDay, [TimeZone] */
-	case EXI_DATETIME_GDAY: /* MonthDay, [TimeZone] */
-		errn = encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_MONTHDAY, datetime->monthDay);
-		break;
-	default:
-		return EXI_ERROR_UNEXPECTED_DATETIME_TYPE;
-	}
-	if (errn < 0) {
-		return errn;
-	}
-	/* [TimeZone] */
-	if (datetime->presenceTimezone) {
-		errn = encodeBoolean(stream, 1);
-		if (errn < 0) {
-			return errn;
-		}
-		encodeNBitUnsignedInteger(stream, DATETIME_NUMBER_BITS_TIMEZONE, datetime->timezone
-				+ DATETIME_TIMEZONE_OFFSET_IN_MINUTES);
-	} else {
-		encodeBoolean(stream, 0);
-	}
-
-	return errn;
-}
-
-#endif
-

+ 0 - 73
src/codec/BitDecoderChannel.c

@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "DecoderChannel.h"
-#include "BitInputStream.h"
-#include "EXITypes.h"
-
-#ifndef BIT_DECODER_CHANNEL_C
-#define BIT_DECODER_CHANNEL_C
-
-
-#if EXI_ALIGNMENT == BIT_PACKED
-
-int decode(bitstream_t* stream, uint8_t* b) {
-	uint32_t bb;
-	int errn =  readBits(stream, 8, &bb);
-	if (errn < 0) {
-		return errn;
-	}
-	if (bb > 256) {
-		return EXI_ERROR_UNEXPECTED_BYTE_VALUE;
-	} else {
-		*b = (uint8_t)bb;
-	}
-	return errn;
-}
-
-int decodeBoolean(bitstream_t* stream, int* b) {
-	uint32_t ub;
-	int errn = readBits(stream, 1, &ub);
-	*b = (ub == 0) ? 0 : 1;
-	return errn;
-}
-
-int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32) {
-	if (nbits == 0) {
-		*uint32 = 0;
-		return 0;
-	} else {
-		return readBits(stream, nbits, uint32);
-	}
-}
-
-#endif
-
-#endif
-

+ 0 - 88
src/codec/BitEncoderChannel.c

@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EncoderChannel.h"
-#include "CoderChannel.h"
-#include "BitOutputStream.h"
-#include "EXITypes.h"
-
-#ifndef BIT_ENCODER_CHANNEL_C
-#define BIT_ENCODER_CHANNEL_C
-
-#if EXI_ALIGNMENT == BIT_PACKED
-
-
-int encode(bitstream_t* stream, uint8_t b) {
-	return writeBits(stream, 8, b);
-}
-
-/**
- * Encode a single boolean value. A false value is encoded as bit 0 and true
- * value is encode as bit 1.
- */
-int encodeBoolean(bitstream_t* stream, int b) {
-	uint8_t val = b ? 1 : 0;
-	return writeBits(stream, 1, val);
-}
-
-
-/**
- * Encode n-bit unsigned integer. The n least significant bits of parameter
- * b starting with the most significant, i.e. from left to right.
- */
-int encodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t val)  {
-	if (nbits > 0) {
-		return writeBits(stream, nbits, val);
-	}
-	return 0;
-}
-
-/**
- * Flush underlying bit output stream.
- */
-int encodeFinish(bitstream_t* stream) {
-	return flush(stream);
-}
-
-
-#endif /* alignment */
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 110
src/codec/BitInputStream.c

@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EXITypes.h"
-#include "BitInputStream.h"
-
-#ifndef BIT_INPUT_STREAM_C
-#define BIT_INPUT_STREAM_C
-
-/* internal method to (re)fill buffer */
-int readBuffer(bitstream_t* stream)
-{
-	int errn = 0;
-	if(stream->capacity==0)
-	{
-#if EXI_STREAM == BYTE_ARRAY
-		if ( (*stream->pos) < stream->size ) {
-			stream->buffer = stream->data[(*stream->pos)++];
-			stream->capacity = BITS_IN_BYTE;
-		} else {
-			errn = EXI_ERROR_INPUT_STREAM_EOF;
-		}
-#endif
-#if EXI_STREAM == FILE_STREAM
-		stream->buffer = getc(stream->file);
-		/* EOF cannot be used, 0xFF valid value */
-		if ( feof(stream->file) || ferror(stream->file) ) {
-			return EXI_ERROR_INPUT_STREAM_EOF;
-		}
-		stream->capacity = BITS_IN_BYTE;
-#endif
-	}
-	return errn;
-}
-
-int readBits(bitstream_t* stream, uint16_t num_bits, uint32_t* b)
-{
-	int errn = readBuffer(stream);
-	if (errn < 0) {
-		return errn;
-	}
-
-	/* read the bits in one step */
-	if(num_bits <= stream->capacity)
-	{
-		stream->capacity -= num_bits;
-		*b = (stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits));
-	}
-	else
-	{
-		/* read bits as much as possible */
-		*b = stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity));
-		num_bits -= stream->capacity;
-		stream->capacity = 0;
-
-		/* read whole bytes */
-		while(num_bits >= 8)
-		{
-			errn = readBuffer(stream);
-			if (errn < 0) {
-				return errn;
-			}
-			*b = ((*b) << BITS_IN_BYTE) | stream->buffer;
-			num_bits -= BITS_IN_BYTE;
-			stream->capacity = 0;
-		}
-
-		/* read the spare bits in the buffer */
-		if(num_bits>0)
-		{
-			errn = readBuffer(stream);
-			if (errn < 0) {
-				return errn;
-			}
-			*b = ((*b) << num_bits) | (stream->buffer >> (BITS_IN_BYTE - num_bits));
-			stream->capacity = BITS_IN_BYTE - num_bits;
-		}
-		
-	}
-
-	return errn;
-}
-
-#endif

+ 0 - 48
src/codec/BitInputStream.h

@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-#ifndef BIT_INPUT_STREAM_H
-#define BIT_INPUT_STREAM_H
-
-int readBits(bitstream_t* stream, uint16_t num_bits, uint32_t* b);
-
-int flush();
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 118
src/codec/BitOutputStream.c

@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EXITypes.h"
-#include "BitOutputStream.h"
-
-#ifndef BIT_OUTPUT_STREAM_C
-#define BIT_OUTPUT_STREAM_C
-
-/*	NOTE: nbits <= 8 */
-int writeBits(bitstream_t* stream, uint16_t nbits, uint32_t val) {
-	/*  is there enough space in the buffer */
-	if (nbits <= stream->capacity) {
-		/* all bits fit into the current buffer */
-		stream->buffer = (stream->buffer << (nbits)) | (val & (0xff
-				>> (BITS_IN_BYTE - nbits)));
-		stream->capacity -= nbits;
-		/* if the buffer is full write byte */
-		if (stream->capacity == 0) {
-#if EXI_STREAM == BYTE_ARRAY
-			if ((*stream->pos) >= stream->size) {
-				return EXI_ERROR_OUTPUT_STREAM_EOF;
-			}
-			stream->data[(*stream->pos)++] = stream->buffer;
-#endif
-#if EXI_STREAM == FILE_STREAM
-			if ( putc(stream->buffer, stream->file) == EOF ) {
-				return EXI_ERROR_OUTPUT_STREAM_EOF;
-			}
-#endif
-			stream->capacity = BITS_IN_BYTE;
-			stream->buffer = 0;
-		}
-	} else {
-		/* the buffer is not enough
-		 * fill the buffer */
-		stream->buffer = (stream->buffer << stream->capacity) | ((val >> (nbits
-				- stream->capacity)) & (0xff >> (BITS_IN_BYTE
-				- stream->capacity)));
-
-		nbits -= stream->capacity;
-#if EXI_STREAM == BYTE_ARRAY
-		if ((*stream->pos) >= stream->size) {
-			return EXI_ERROR_OUTPUT_STREAM_EOF;
-		}
-		stream->data[(*stream->pos)++] = stream->buffer;
-#endif
-#if EXI_STREAM == FILE_STREAM
-		if ( putc(stream->buffer, stream->file) == EOF ) {
-			return EXI_ERROR_OUTPUT_STREAM_EOF;
-		}
-#endif
-		stream->buffer = 0;
-
-		/* write whole bytes */
-		while (nbits >= BITS_IN_BYTE) {
-			nbits -= BITS_IN_BYTE;
-#if EXI_STREAM == BYTE_ARRAY
-			if ((*stream->pos) >= stream->size) {
-				return EXI_ERROR_OUTPUT_STREAM_EOF;
-			}
-			stream->data[(*stream->pos)++] = (val >> (nbits));
-#endif
-#if EXI_STREAM == FILE_STREAM
-			if ( putc((val >> (nbits)), stream->file) == EOF ) {
-				return EXI_ERROR_OUTPUT_STREAM_EOF;
-			}
-#endif
-		}
-
-		/* spared bits are kept in the buffer */
-		stream->buffer = val; /* Note: the high bits will be shifted out during further filling */
-		stream->capacity = BITS_IN_BYTE - (nbits);
-	}
-
-	return 0;
-}
-
-/**
- * Flush output
- */
-int flush(bitstream_t* stream) {
-	if (stream->capacity == BITS_IN_BYTE) {
-		/* nothing to do, no bits in buffer */
-		return 0;
-	} else {
-		return writeBits(stream, stream->capacity, 0);
-	}
-}
-
-#endif
-

+ 0 - 52
src/codec/BitOutputStream.h

@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-
-#include "EXITypes.h"
-
-#ifndef BIT_OUTPUT_STREAM_H
-#define BIT_OUTPUT_STREAM_H
-
-int writeBits(bitstream_t* stream, uint16_t nbits, uint32_t bits);
-
-/* flush output */
-int flush(bitstream_t* stream);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-

+ 0 - 93
src/codec/ByteDecoderChannel.c

@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "DecoderChannel.h"
-#include "CoderChannel.h"
-#include "BitInputStream.h"
-#include "EXITypes.h"
-
-#ifndef BYTE_DECODER_CHANNEL_C
-#define BYTE_DECODER_CHANNEL_C
-
-
-#if EXI_ALIGNMENT == BYTE_ALIGNMENT
-
-int decode(bitstream_t* stream, uint8_t* b) {
-	int errn = 0;
-#if EXI_STREAM == BYTE_ARRAY
-	if ( (*stream->pos) < stream->size ) {
-		*b = stream->data[(*stream->pos)++];
-	} else {
-		errn = EXI_ERROR_INPUT_STREAM_EOF;
-	}
-#endif /* EXI_STREAM == BYTE_ARRAY */
-#if EXI_STREAM == FILE_STREAM
-	*b = getc(stream->file);
-	/* EOF cannot be used, 0xFF valid value */
-	if ( feof(stream->file) || ferror(stream->file) ) {
-		return EXI_ERROR_INPUT_STREAM_EOF;
-	}
-#endif /* EXI_STREAM == FILE_STREAM */
-
-	return errn;
-}
-
-int decodeBoolean(bitstream_t* stream, int* b) {
-	uint8_t bb;
-	int errn = decode(stream, &bb);
-	*b = (bb == 0) ? 0 : 1;
-	return errn;
-}
-
-/**
- * Decodes and returns an n-bit unsigned integer using the minimum number of
- * bytes required for n bits.
- */
-int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32) {
-	uint16_t bitsRead = 0;
-	uint8_t b;
-	int errn = 0;
-	*uint32 = 0;
-
-	while (bitsRead < nbits) {
-		errn = decode(stream, &b);
-		if (errn != 0) {
-			return errn;
-		}
-		*uint32 += (b << bitsRead);
-		bitsRead += 8;
-	}
-
-	return errn;
-}
-
-#endif
-
-#endif
-

+ 0 - 125
src/codec/ByteEncoderChannel.c

@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EncoderChannel.h"
-#include "CoderChannel.h"
-#include "BitOutputStream.h"
-#include "EXITypes.h"
-#include "MethodsBag.h"
-
-#ifndef BYTE_ENCODER_CHANNEL_C
-#define BYTE_ENCODER_CHANNEL_C
-
-#if EXI_ALIGNMENT == BYTE_ALIGNMENT
-
-
-int encode(bitstream_t* stream, uint8_t b) {
-#if EXI_STREAM == BYTE_ARRAY
-	if ( (*stream->pos) < stream->size ) {
-		stream->data[(*stream->pos)++] = b;
-		return 0;
-	} else {
-		return EXI_ERROR_OUTPUT_STREAM_EOF;
-	}
-#endif /* EXI_STREAM == BYTE_ARRAY */
-#if EXI_STREAM == FILE_STREAM
-	if ( putc(b, stream->file) == EOF ) {
-		return EXI_ERROR_OUTPUT_STREAM_EOF;
-	} else {
-		return 0;
-	}
-#endif /* EXI_STREAM == FILE_STREAM */
-}
-
-/**
- * Encode a single boolean value. A false value is encoded as byte 0 and true
- * value is encode as byte 1.
- */
-int encodeBoolean(bitstream_t* stream, int b) {
-	uint8_t val = b ? 1 : 0;
-	return encode(stream, val);
-}
-
-
-/**
- * Encode n-bit unsigned integer. The n least significant bits of parameter
- * b starting with the most significant, i.e. from left to right.
- */
-int encodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t val)  {
-	if (nbits > 0) {
-		if (nbits < 9) {
-			/* 1 byte */
-			encode(stream, val & 0xff);
-		} else if (nbits < 17) {
-			/* 2 bytes */
-			encode(stream, val & 0x00ff);
-			encode(stream, (val & 0xff00) >> 8);
-		} else if (nbits < 25) {
-			/* 3 bytes */
-			encode(stream, val & 0x0000ff);
-			encode(stream, (val & 0x00ff00) >> 8);
-			encode(stream, (val & 0xff0000) >> 16);
-		} else if (nbits < 33) {
-			/* 4 bytes */
-			encode(stream, val & 0x000000ff);
-			encode(stream, (val & 0x0000ff00) >> 8);
-			encode(stream, (val & 0x00ff0000) >> 16);
-			encode(stream, (val & 0xff000000) >> 24);
-		} else {
-			/* TODO Currently not more than 4 Bytes allowed for NBitUnsignedInteger */
-			return EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH;
-		}
-	}
-	return 0;
-}
-
-
-/**
- * Flush underlying bit output stream.
- */
-int encodeFinish(bitstream_t* stream) {
-	/* no pending bits in byte-aligned mode */
-	return 0;
-}
-
-#endif /* alignment */
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 79
src/codec/ByteStream.c

@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#define _CRT_SECURE_NO_DEPRECATE 1
-
-#include "EXITypes.h"
-
-#ifndef BYTE_STREAM_C
-#define BYTE_STREAM_C
-
-int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t pos) {
-	FILE* f;
-	int character;
-
-	f = fopen(filename, "rb");
-
-	if (f == NULL) {
-		return EXI_ERROR_INPUT_FILE_HANDLE;
-	} else {
-		/* read bytes */
-		while ((character = getc(f)) != EOF) {
-			if (pos >= size) {
-				return EXI_ERROR_OUT_OF_BYTE_BUFFER;
-			}
-			data[pos++] = (uint8_t) character;
-		}
-		fclose(f);
-	}
-
-	return pos;
-}
-
-int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename) {
-	uint16_t rlen;
-	FILE* f = fopen(filename, "wb+");
-
-	if (f == NULL) {
-		return -1;
-	} else {
-		rlen = fwrite(data, sizeof(uint8_t), len, f);
-		fflush(f);
-		fclose(f);
-		if(rlen == len) {
-			return 0;
-		} else {
-			return EXI_ERROR_OUTPUT_FILE;
-		}
-	}
-}
-
-
-#endif
-

+ 0 - 48
src/codec/ByteStream.h

@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-#ifndef BYTE_STREAM_H
-#define BYTE_STREAM_H
-
-int writeBytesToFile(uint8_t* data, uint32_t len, const char * filename);
-
-int readBytesFromFile(const char * filename, uint8_t* data, uint32_t size, uint32_t pos);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 48
src/codec/CoderChannel.h

@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-#ifndef CODER_CHANNEL_H
-#define CODER_CHANNEL_H
-
-/* EXI alignment mode */
-#define BIT_PACKED 1
-#define BYTE_ALIGNMENT 2
-#define EXI_ALIGNMENT BIT_PACKED
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-

+ 0 - 178
src/codec/DecoderChannel.h

@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-#include "CoderChannel.h"
-
-#ifndef DECODER_CHANNEL_H
-#define DECODER_CHANNEL_H
-
-/**
- * Decode a byte value.
- */
-int decode(bitstream_t* stream, uint8_t* b);
-
-/**
- * Decode a single boolean value. The value false is represented by the bit
- * 0, and the value true is represented by the bit 1.
- */
-int decodeBoolean(bitstream_t* stream, int* b);
-
-/**
- * Decodes and returns an n-bit unsigned integer.
- */
-int decodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t* uint32);
-
-/**
- * Decode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int decodeUnsignedInteger(bitstream_t* stream, integer_t* iv);
-
-/**
- * Decode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int decodeUnsignedInteger16(bitstream_t* stream, uint16_t* uint16);
-
-/**
- * Decode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32);
-
-/**
- * Decode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64);
-
-/**
- * Decode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int decodeInteger(bitstream_t* stream, integer_t* iv);
-
-/**
- * Decode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int decodeInteger32(bitstream_t* stream, int32_t* int32);
-
-/**
- * Decode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int decodeInteger64(bitstream_t* stream, int64_t* int64);
-
-/**
- * Decode a Float datatype as two consecutive Integers.
- * The first Integer represents the mantissa of the floating point
- * number and the second Integer represents the base-10 exponent
- * of the floating point number.
- */
-int decodeFloat(bitstream_t* stream, float_me_t* f);
-
-/**
- * Decode a decimal represented as a Boolean sign followed by two Unsigned
- * Integers. A sign value of zero (0) is used to represent positive Decimal
- * values and a sign value of one (1) is used to represent negative Decimal
- * values The first Integer represents the integral portion of the Decimal
- * value. The second positive integer represents the fractional portion of
- * the decimal with the digits in reverse order to preserve leading zeros.
- */
-int decodeDecimal(bitstream_t* stream, decimal_t* d);
-
-/**
- * Decode a sequence of characters for a given length.
- */
-int decodeStringOnly(bitstream_t* stream, uint16_t len, string_ucs_t* s);
-
-/**
- * Decode a length prefixed sequence of characters.
- */
-int decodeString(bitstream_t* stream, string_ucs_t* s);
-
-int decodeStringASCII(bitstream_t* stream, string_ascii_t* s);
-
-/**
- * Decode a length prefixed sequence of characters in the sense of string tables.
- * length == 0, local value partition hit
- * length == 1, global value partition hit
- * --> string literal is encoded as a String with the length incremented by two
- */
-int decodeStringValue(bitstream_t* stream, string_ucs_t* s);
-
-/**
- * Restricted character set
- */
-int decodeRCSStringValue(bitstream_t* stream, rcs_t* rcs, string_ucs_t* s);
-
-/**
- * Decode a sequence of characters according to a given length.
- */
-int decodeCharacters(bitstream_t* stream, uint16_t len, uint32_t* chars);
-int decodeCharactersASCII(bitstream_t* stream, uint16_t len, char* chars);
-
-/**
- * Decode a binary value as a length-prefixed sequence of octets.
- */
-int decodeBinary(bitstream_t* stream, bytes_t* bytes);
-
-/**
- * Decode Date-Time as sequence of values representing the individual
- * components of the Date-Time.
- */
-int decodeDateTime(bitstream_t* stream, exi_datetime_type_t type, datetime_t* datetime);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-

File diff suppressed because it is too large
+ 0 - 2025
src/codec/EXICoder.c


+ 0 - 65
src/codec/EXICoder.h

@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef EXI_CODER_H
-#define EXI_CODER_H
-
-#include "EXITypes.h"
-
-#define IS_STRICT 0
-#define DOCUMENT 0
-#define DOC_CONTENT 1
-#define DOC_END 2
-#define UR_TYPE_GRAMMAR_0 73
-#define UR_TYPE_GRAMMAR_1 602
-
-
-
-int exiPushStack(exi_state_t* state, uint16_t newState, eqname_t* eqn);
-
-int exiPopStack(exi_state_t* state);
-
-int exiHandleXsiNilTrue(exi_state_t* state);
-
-int exiHandleXsiType(exi_state_t* state, eqname_t* xsiType);
-
-int exiIsStartContent(int16_t ruleID);
-
-int exiMoveToElementContentRule(exi_state_t* state);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-

File diff suppressed because it is too large
+ 0 - 568
src/codec/EXIDecoder.c


+ 0 - 93
src/codec/EXIDecoder.h

@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef EXI__DECODER_H
-#define EXI__DECODER_H
-
-#include "EXITypes.h"
-
-int exiInitDecoder(bitstream_t* stream, exi_state_t* state,
-		exi_name_table_runtime_t runtimeTable);
-
-int exiDecodeNextEvent(bitstream_t* stream,
-		exi_state_t* state, exi_event_t* nextEvent);
-
-int exiDecodeStartDocument(bitstream_t* stream,
-		exi_state_t* state);
-
-int exiDecodeEndDocument(bitstream_t* stream,
-		exi_state_t* state);
-
-int
-exiDecodeStartElement(bitstream_t* stream,
-		exi_state_t* state, eqname_t* se);
-
-int exiDecodeStartElementGeneric(bitstream_t* stream,
-		exi_state_t* state, qname_t* qname);
-
-int exiDecodeEndElement(bitstream_t* stream,
-		exi_state_t* state, eqname_t* ee);
-
-int exiDecodeEndElementUndeclared(bitstream_t* stream,
-		exi_state_t* state, eqname_t* ee);
-
-int exiDecodeCharacters(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiDecodeCharactersGeneric(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiDecodeCharactersGenericUndeclared(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiDecodeAttribute(bitstream_t* stream,
-		exi_state_t* state, eqname_t* at, exi_value_t* val);
-
-int exiDecodeAttributeXsiNil(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiDecodeAttributeXsiType(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiDecodeAttributeGenericUndeclared(bitstream_t* stream,
-		exi_state_t* state, qname_t* at, exi_value_t* val);
-
-int exiDecodeListValue(bitstream_t* stream, exi_value_t* val,
-		list_t lt);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-

File diff suppressed because it is too large
+ 0 - 250
src/codec/EXIEncoder.c


+ 0 - 79
src/codec/EXIEncoder.h

@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef EXI__ENCODER_H
-#define EXI__ENCODER_H
-
-#include "EXITypes.h"
-
-int exiInitEncoder(bitstream_t* stream, exi_state_t* state,
-		exi_name_table_runtime_t runtimeTable);
-
-int exiEncodeStartDocument(bitstream_t* stream,
-		exi_state_t* state);
-
-int exiEncodeEndDocument(bitstream_t* stream,
-		exi_state_t* state);
-
-int
-exiEncodeStartElement(bitstream_t* stream,
-		exi_state_t* state, eqname_t* se);
-
-int exiEncodeStartElementGeneric(bitstream_t* stream,
-		exi_state_t* state, string_ascii_t* namespaceURI,
-		string_ascii_t* localName);
-
-int exiEncodeEndElement(bitstream_t* stream,
-		exi_state_t* state);
-
-int exiEncodeCharacters(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiEncodeAttribute(bitstream_t* stream,
-		exi_state_t* state, eqname_t* at, exi_value_t* val);
-
-int exiEncodeAttributeXsiNil(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiEncodeAttributeXsiType(bitstream_t* stream,
-		exi_state_t* state, exi_value_t* val);
-
-int exiEncodeListValue(bitstream_t* stream, exi_value_t* val,
-		list_t lt);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-

+ 0 - 59
src/codec/EXIHeaderDecoder.c

@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EXIHeaderDecoder.h"
-#include "BitInputStream.h"
-#include "DecoderChannel.h"
-
-#ifndef EXI_HEADER_DECODER_C
-#define EXI_HEADER_DECODER_C
-
-int readEXIHeader(bitstream_t* stream) {
-	uint32_t header = 0;
-	int errn = readBits(stream, 8, &header);
-	if (errn < 0) {
-		return errn;
-	}
-	if(header == '$') {
-		/*	we do not support "EXI Cookie" */
-		errn = EXI_UNSUPPORTED_HEADER_COOKIE;
-	} else if ( header & 0x20 ) {
-		/* we do not support "Presence Bit for EXI Options" */
-		errn = EXI_UNSUPPORTED_HEADER_OPTIONS;
-	} else {
-		/* Yes, a *simple* header */
-		errn = 0;
-	}
-	return errn;
-}
-
-
-#endif
-
-

+ 0 - 46
src/codec/EXIHeaderDecoder.h

@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-#ifndef EXI_HEADER_DECODER_H
-#define EXI_HEADER_DECODER_H
-
-int readEXIHeader(bitstream_t* stream);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 44
src/codec/EXIHeaderEncoder.c

@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include "EXIHeaderEncoder.h"
-#include "BitOutputStream.h"
-#include "EncoderChannel.h"
-
-#ifndef EXI_HEADER_ENCODER_C
-#define EXI_HEADER_ENCODER_C
-
-int writeEXIHeader(bitstream_t* stream) {
-	return writeBits(stream, 8, 128);
-}
-
-
-#endif
-
-

+ 0 - 46
src/codec/EXIHeaderEncoder.h

@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-#ifndef EXI_HEADER_ENCODER_H
-#define EXI_HEADER_ENCODER_H
-
-int writeEXIHeader(bitstream_t* stream);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 448
src/codec/EXITypes.h

@@ -1,448 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#include <stdint.h>
-#include <stdio.h>
-
-
-#ifndef EXI_TYPES_H
-#define EXI_TYPES_H
-
-#define BITS_IN_BYTE 8
-
-#define DATETIME_YEAR_OFFSET 2000
-#define DATETIME_NUMBER_BITS_MONTHDAY 9
-#define DATETIME_NUMBER_BITS_TIME 17
-#define DATETIME_NUMBER_BITS_TIMEZONE 11
-#define DATETIME_MONTH_MULTIPLICATOR 32
-#define DATETIME_TIMEZONE_OFFSET_IN_MINUTES 896
-
-#define UINT_MAX_VALUE 65535
-
-/* EXI Debug mode */
-/* Increases code footprint but offers addition functionalities, e.g. string retrieving  */
-#define EXI_DEBUG_ON 1
-#define EXI_DEBUG_OFF 2
-#define EXI_DEBUG EXI_DEBUG_OFF
-
-/* EXI stream */
-#define BYTE_ARRAY 1
-#define FILE_STREAM 2
-/*#define EXI_STREAM FILE_STREAM */
-
-#define EXI_STREAM BYTE_ARRAY
-
-#define EXI_ELEMENT_STACK_SIZE 16
-
-#define FLOAT_EXPONENT_SPECIAL_VALUES -16384
-#define FLOAT_MANTISSA_INFINITY 1
-#define FLOAT_MANTISSA_MINUS_INFINITY -1
-#define FLOAT_MANTISSA_NOT_A_NUMBER 0
-
-typedef struct {
-#if EXI_STREAM == BYTE_ARRAY
-	/*	Byte Array */
-	uint32_t size; /* array size */
-	uint8_t* data; /* int data array */
-	uint32_t* pos; /* next position in array */
-#endif
-#if EXI_STREAM == FILE_STREAM
-	/* FILE */
-	FILE *file;
-#endif
-	/* Current byte buffer & its remaining bit capacity */
-	uint8_t buffer;
-	uint8_t capacity;
-} bitstream_t;
-
-
-typedef enum {
-	/* Binary */
-	EXI_DATATYPE_BINARY_BASE64,
-	EXI_DATATYPE_BINARY_HEX,
-	/* Boolean */
-	EXI_DATATYPE_BOOLEAN,
-	EXI_DATATYPE_BOOLEAN_FACET,
-	/* Decimal */
-	EXI_DATATYPE_DECIMAL,
-	/* Float & Double */
-	EXI_DATATYPE_FLOAT,
-	/* N-Bit Unsigned Integer */
-	EXI_DATATYPE_NBIT_UNSIGNED_INTEGER,
-	/* Unsigned Integer */
-	EXI_DATATYPE_UNSIGNED_INTEGER,
-	/* (Signed) Integer */
-	EXI_DATATYPE_INTEGER,
-	/* Datetime */
-	EXI_DATATYPE_DATETIME,
-	/* String */
-	EXI_DATATYPE_STRING,
-	/* Restricted Character Set String */
-	EXI_DATATYPE_RCS_STRING,
-	/* Enumeration */
-	EXI_DATATYPE_ENUMERATION,
-	/* List */
-	EXI_DATATYPE_LIST
-} exi_datatype_t;
-
-
-typedef enum {
-	/* Unsigned Integer */
-	EXI_UNSIGNED_INTEGER_8,
-	EXI_UNSIGNED_INTEGER_16,
-	EXI_UNSIGNED_INTEGER_32,
-	EXI_UNSIGNED_INTEGER_64,
-	/* (Signed) Integer */
-	EXI_INTEGER_8,
-	EXI_INTEGER_16,
-	EXI_INTEGER_32,
-	EXI_INTEGER_64
-} exi_integer_type_t;
-
-typedef enum {
-	EXI_EVENT_START_DOCUMENT,
-	EXI_EVENT_END_DOCUMENT,
-	EXI_EVENT_START_ELEMENT,
-	EXI_EVENT_START_ELEMENT_NS,
-	EXI_EVENT_START_ELEMENT_GENERIC,
-	EXI_EVENT_START_ELEMENT_GENERIC_UNDECLARED,
-	EXI_EVENT_END_ELEMENT,
-	EXI_EVENT_END_ELEMENT_UNDECLARED,
-	EXI_EVENT_CHARACTERS,
-	EXI_EVENT_CHARACTERS_GENERIC,
-	EXI_EVENT_CHARACTERS_GENERIC_UNDECLARED,
-	EXI_EVENT_ATTRIBUTE_XSI_TYPE,
-	EXI_EVENT_ATTRIBUTE_XSI_NIL,
-	EXI_EVENT_ATTRIBUTE,
-	EXI_EVENT_ATTRIBUTE_NS,
-	EXI_EVENT_ATTRIBUTE_GENERIC,
-	EXI_EVENT_ATTRIBUTE_INVALID_VALUE,
-	EXI_EVENT_ATTRIBUTE_ANY_INVALID_VALUE,
-	EXI_EVENT_ATTRIBUTE_GENERIC_UNDECLARED,
-	/* error state */
-	EXI_EVENT_ERROR
-} exi_event_t;
-
-
-/* differ datetime types */
-typedef enum {
-	EXI_DATETIME_GYEAR,
-	EXI_DATETIME_GYEARMONTH,
-	EXI_DATETIME_DATE,
-	EXI_DATETIME_DATETIME,
-	EXI_DATETIME_GMONTH,
-	EXI_DATETIME_GMONTHDAY,
-	EXI_DATETIME_GDAY,
-	EXI_DATETIME_TIME
-} exi_datetime_type_t;
-
-
-typedef struct {
-	/* Bytes Size and array container */
-	uint16_t size;
-	uint8_t* data;
-	/* current length (len <= size) */
-	uint16_t len;
-} bytes_t;
-
-/* Universal Character Set (UCS) strings */
-typedef struct {
-	/* UCS size and UCS character container*/
-	uint16_t size;
-	uint32_t* codepoints;
-	/* current length == number of code-points, (len <= size) */
-	uint16_t len;
-} string_ucs_t;
-
-/* Restricted Characeter Set */
-typedef struct {
-	/* size and UCS character codep*/
-	uint16_t size;
-	/* rcs codepoints */
-	uint32_t* codepoints;
-	/* character coding length*/
-	uint8_t codingLength; /* less than 256 characters */
-} rcs_t;
-
-/* ASCII strings */
-typedef struct {
-	/* size of String array */
-	uint16_t size;
-	char* chars;
-	/* current length can be retrieved by calling strlen(chars)*/
-} string_ascii_t;
-
-typedef struct {
-	exi_integer_type_t type;
-	union {
-		/* unsigned values */
-		int8_t int8;
-		int16_t int16;
-		int32_t int32;
-		int32_t int64;
-		/* (signed) values */
-		uint8_t uint8;
-		uint16_t uint16;
-		uint32_t uint32;
-		uint64_t uint64;
-	} val;
-} integer_t;
-
-typedef struct {
-	/* range of the mantissa is -(2^63) to 2^63-1 */
-	int64_t mantissa;
-	/* range of the exponent is - (2^14-1) to 2^14-1 */
-	int32_t exponent; /* base-10 */
-} float_me_t;
-
-typedef struct {
-	/* a sign value */
-	int negative;
-	/* represents the integral portion of the Decimal */
-	integer_t integral;
-	/* represents the fractional portion of the Decimal with the digits in reverse order to preserve leading zeros */
-	integer_t reverseFraction;
-} decimal_t;
-
-
-
-typedef struct {
-	/* datetime type */
-	exi_datetime_type_t type;
-	/* values */
-	int32_t year;
-	uint32_t monthDay;
-	uint32_t time;
-	int presenceFractionalSecs;
-	uint32_t fractionalSecs;
-	int presenceTimezone;
-	uint32_t timezone;
-} datetime_t;
-
-
-
-/* TODO list support */
-typedef struct {
-	/* list item type */
-	exi_datatype_t type;
-	/* number of items */
-	uint16_t len;
-	/* special datatypes */
-	exi_integer_type_t intType;
-	exi_datetime_type_t datetimeType;
-
-	/* List container with memory size */
-	/* uint16_t size;
-	uint8_t* data;*/
-} list_t;
-
-/* efficient ID qname */
-typedef struct {
-	uint16_t namespaceURI;
-	uint16_t localPart;
-} eqname_t;
-
-/* ascii qname */
-typedef struct {
-	string_ascii_t namespaceURI;
-	string_ascii_t localName;
-} qname_t;
-
-/* ==================================== */
-/* LocalName Entries */
-struct exiNamePartition {
-	/* length of array */
-	uint16_t len;
-#if EXI_DEBUG == EXI_DEBUG_ON
-	/* array of string entries */
-	char** names;
-#endif /*EXI_DEBUG*/
-};
-
-typedef struct exiNameTablePrepopulated {
-	/* length of both arrays (uris & localNames) */
-	uint16_t len;
-#if EXI_DEBUG == EXI_DEBUG_ON
-	/* URI entries*/
-	char** uris;
-#endif /*EXI_DEBUG*/
-	/* localName entries divided by URI */
-	struct exiNamePartition * localNames;
-} exi_name_table_prepopulated_t;
-
-
-/* not used */
-#define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS 1
-#define EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES 1
-#define EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES 0
-#define EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES 0
-
-typedef enum {
-	EXI_NAME_PARTITION_URI,
-	EXI_NAME_PARTITION_LOCALNAME
-} exi_name_partition_type_t;
-
-typedef struct {
-	 char* uri;
-	 uint16_t uriID;
-} exi_uri_partition_t;
-
-typedef struct {
-	 char* localName;
-	 uint16_t localNameID;
-	 uint16_t uriID;
-} exi_localname_partition_t;
-
-typedef struct {
-	exi_name_partition_type_t namePartitionType;
-    struct
-    {
-		exi_uri_partition_t uriPartition;
-        exi_localname_partition_t localNamePartition;
-    } entry;
-} exi_name_partition_t;
-
-typedef struct exiNameTableRuntime {
-	/* maximum number of characters in the name partitions entries PLUS null terminators */
-	char characters[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS + EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES];
-	uint16_t numberOfUsedCharacters; /* initially zero <= EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_CHARACTERS */
-	/* maximum number of name partitions entries. Name partitions entries consist in all uri, and local-name partition entries */
-	exi_name_partition_t namePartitionsEntries[EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES];
-	/* uint16_t numberOfUsedNamePartitions; */ /* initially zero */
-	/* added entries */
-	uint16_t addedUriEntries; /* initially zero */
-	uint16_t addedLocalNameEntries; /* initially zero */
-} exi_name_table_runtime_t;
-
-
-
-
-
-
-typedef struct {
-	/* stack of grammar states */
-	int16_t grammarStack[EXI_ELEMENT_STACK_SIZE];
-	/* stack of grammar elements */
-	eqname_t elementStack[EXI_ELEMENT_STACK_SIZE];
-	uint16_t stackIndex;
-	/* event-code */
-	uint32_t eventCode;
-	/* string table entries */
-	exi_name_table_prepopulated_t nameTablePrepopulated;
-	exi_name_table_runtime_t nameTableRuntime;
-} exi_state_t;
-
-typedef struct {
-	/* type of value */
-	exi_datatype_t type;
-
-	/* base types */
-	int boolean;
-	integer_t integer;
-
-	/*uint16_t uint8;
-	uint16_t uint16;
-	uint32_t uint32;
-	uint64_t uint64;
-	int8_t int8;
-	int16_t int16;
-	int32_t int32;
-	int64_t int64;*/
-
-	uint32_t enumeration;
-
-	/* Bytes, Strings and Lists are not native types anymore */
-	bytes_t binary;
-	string_ucs_t string;
-	float_me_t float_me;
-	decimal_t decimal;
-	datetime_t datetime;
-	list_t list;
-	eqname_t eqname;
-} exi_value_t;
-
-/*
- * ERROR-Codes
- */
-#define EXI_ERROR_INPUT_STREAM_EOF -10
-#define EXI_ERROR_OUTPUT_STREAM_EOF -11
-#define EXI_ERROR_INPUT_FILE_HANDLE -12
-#define EXI_ERROR_OUTPUT_FILE -13
-
-#define EXI_ERROR_OUT_OF_BOUNDS -100
-#define EXI_ERROR_OUT_OF_STRING_BUFFER -101
-#define EXI_ERROR_OUT_OF_ASCII_BUFFER -102
-#define EXI_ERROR_OUT_OF_BYTE_BUFFER -103
-#define EXI_ERROR_OUT_OF_GRAMMAR_STACK -104
-
-#define EXI_ERROR_UNKOWN_EVENT -109
-#define EXI_ERROR_UNKOWN_EVENT_CODE -110
-#define EXI_ERROR_UNEXPECTED_EVENT_LEVEL1 -111
-#define EXI_ERROR_UNEXPECTED_EVENT_LEVEL2 -112
-
-#define EXI_ERROR_UNEXPECTED_START_DOCUMENT -113
-#define EXI_ERROR_UNEXPECTED_END_DOCUMENT -114
-#define EXI_ERROR_UNEXPECTED_START_ELEMENT -115
-#define EXI_ERROR_UNEXPECTED_START_ELEMENT_GENERIC -116
-#define EXI_ERROR_UNEXPECTED_END_ELEMENT -117
-#define EXI_ERROR_UNEXPECTED_CHARACTERS -118
-#define EXI_ERROR_UNEXPECTED_ATTRIBUTE -119
-#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_TYPE -120
-#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_XSI_NIL -121
-#define EXI_ERROR_UNEXPECTED_GRAMMAR_ID -122
-#define EXI_ERROR_UNEXPECTED_ATTRIBUTE_MOVE_TO_CONTENT_RULE -123
-
-
-#define EXI_UNSUPPORTED_STRING_TABLE_LOCAL_HIT -130
-#define EXI_UNSUPPORTED_STRING_TABLE_GLOBAL_HIT -131
-#define EXI_UNSUPPORTED_NBIT_INTEGER_LENGTH -132
-#define EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS -133
-#define EXI_UNSUPPORTED_INTEGER_VALUE_TYPE -134
-#define EXI_UNSUPPORTED_INTEGER_VALUE -135
-#define EXI_NEGATIVE_UNSIGNED_INTEGER_VALUE -136
-#define EXI_UNSUPPORTED_LIST_VALUE_TYPE -137
-#define EXI_UNSUPPORTED_HEADER_COOKIE -138
-#define EXI_UNSUPPORTED_HEADER_OPTIONS -139
-
-#define EXI_ERROR_UNEXPECTED_BYTE_VALUE -200
-#define EXI_ERROR_UNEXPECTED_DATETIME_TYPE -201
-
-#define EXI_ERROR_CONVERSION_NO_ASCII_CHARACTERS -300
-#define EXI_ERROR_CONVERSION_TYPE_TO_STRING -301
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 180
src/codec/EncoderChannel.h

@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-#ifndef ENCODER_CHANNEL_H
-#define ENCODER_CHANNEL_H
-
-/**
- * Encode a byte value.
- */
-int encode(bitstream_t* stream, uint8_t b);
-
-/**
- * Encode a single boolean value. A false value is encoded as 0 and true
- * value is encode as 1.
- */
-int encodeBoolean(bitstream_t* stream, int b);
-
-
-/**
- * Encode n-bit unsigned integer. The n least significant bits of parameter
- * b starting with the most significant, i.e. from left to right.
- */
-int encodeNBitUnsignedInteger(bitstream_t* stream, uint16_t nbits, uint32_t val);
-
-/**
- * Encode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int encodeUnsignedInteger(bitstream_t* stream, integer_t* iv);
-
-
-/**
- * Encode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n);
-
-/**
- * Encode an arbitrary precision non negative integer using a sequence of
- * octets. The most significant bit of the last octet is set to zero to
- * indicate sequence termination. Only seven bits per octet are used to
- * store the integer's value.
- */
-int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n);
-
-
-/**
- * Encode an arbitrary precision integer using a sign boolean followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int encodeInteger(bitstream_t* stream, integer_t* iv);
-
-/**
- * Encode an arbitrary precision integer using a sign boolean followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int encodeInteger32(bitstream_t* stream, int32_t n);
-
-/**
- * Encode an arbitrary precision integer using a sign bit followed by a
- * sequence of octets. The most significant bit of the last octet is set to
- * zero to indicate sequence termination. Only seven bits per octet are used
- * to store the integer's value.
- */
-int encodeInteger64(bitstream_t* stream, int64_t n);
-
-/**
- * Encode a Float datatype as two consecutive Integers.
- * The first Integer represents the mantissa of the floating point
- * number and the second Integer represents the base-10 exponent
- * of the floating point number.
- */
-int encodeFloat(bitstream_t* stream, float_me_t* f);
-
-/**
- * Encode a decimal represented as a Boolean sign followed by two Unsigned
- * Integers. A sign value of zero (0) is used to represent positive Decimal
- * values and a sign value of one (1) is used to represent negative Decimal
- * values The first Integer represents the integral portion of the Decimal
- * value. The second positive integer represents the fractional portion of
- * the decimal with the digits in reverse order to preserve leading zeros.
- */
-int encodeDecimal(bitstream_t* stream, decimal_t* d);
-
-/**
- * Encode a length prefixed sequence of characters.
- */
-int encodeString(bitstream_t* stream, string_ucs_t* string);
-int encodeASCII(bitstream_t* stream, const char* ascii);
-
-/**
- * Encode a length prefixed sequence of characters in the sense of string tables
- */
-int encodeStringValue(bitstream_t* stream, string_ucs_t* string);
-
-/**
- * Restricted character set
- */
-int encodeRCSStringValue(bitstream_t* stream, rcs_t* rcs, string_ucs_t* string);
-
-/**
- * Encode a sequence of characters according to a given length.
- * Each character is represented by its UCS [ISO/IEC 10646]
- * code point encoded as an Unsigned Integer
- */
-int encodeUCSCharacters(bitstream_t* stream, uint32_t* chars, uint16_t len);
-
-int encodeASCIICharacters(bitstream_t* stream, const char* chars, uint16_t len);
-
-/**
- * Encode a binary value as a length-prefixed sequence of octets.
- */
-int encodeBinary(bitstream_t* stream, bytes_t* bytes);
-
-/**
- * Encode a datetime representation which is a sequence of values
- * representing the individual components of the Date-Time
- */
-int encodeDateTime(bitstream_t* stream, datetime_t* datetime);
-
-/**
- * Flush underlying bit output stream
- */
-int encodeFinish(bitstream_t* stream);
-
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-
-
-
-
-

+ 0 - 106
src/codec/MethodsBag.c

@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifndef METHODS_BAG_C
-#define METHODS_BAG_C
-
-#include "MethodsBag.h"
-#include "EXITypes.h"
-
-static const int smallLengths[] = { 0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4,
-		4, 4, 4 };
-
-int exiGetCodingLength(uint32_t characteristics, uint16_t* codingLength) {
-	if (characteristics < 17) {
-		*codingLength = smallLengths[characteristics];
-		return 0;
-	} else if (characteristics < 33) {
-		/* 17 .. 32 */
-		*codingLength = 5;
-		return 0;
-	} else if (characteristics < 65) {
-		/* 33 .. 64 */
-		*codingLength = 6;
-		return 0;
-	} else if (characteristics < 129) {
-		/* 65 .. 128 */
-		*codingLength = 7;
-		return 0;
-	} else if (characteristics < 257) {
-		/* 129 .. 256 */
-		*codingLength = 8;
-		return 0;
-	} else if (characteristics < 513) {
-		/* 257 .. 512 */
-		*codingLength = 9;
-		return 0;
-	} else if (characteristics < 1025) {
-		/* 513 .. 1024 */
-		*codingLength = 10;
-		return 0;
-	} else {
-		/*
-		return (int) Math.ceil(Math.log((double) (characteristics))
-				/ Math.log(2.0)); */
-		return EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
-	}
-
-}
-
-
-uint8_t numberOf7BitBlocksToRepresent(uint32_t n) {
-	/* assert (n >= 0); */
-
-	/* 7 bits */
-	if (n < 128) {
-		return 1;
-	}
-	/* 14 bits */
-	else if (n < 16384) {
-		return 2;
-	}
-	/* 21 bits */
-	else if (n < 2097152) {
-		return 3;
-	}
-	/* 28 bits */
-	else if (n < 268435456) {
-		return 4;
-	}
-	/* 35 bits */
-	else {
-		/* int, 32 bits */
-		return 5;
-	}
-}
-
-
-
-#endif
-

+ 0 - 59
src/codec/MethodsBag.h

@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifndef METHODS_BAG_H
-#define METHODS_BAG_H
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-
-/**
- * Returns the number of bits to identify the characteristics.
- *
- * @param characteristics
- * @param codingLength (return value)
- *
- */
-int exiGetCodingLength(uint32_t characteristics, uint16_t* codingLength);
-
-/**
- * Returns the least number of 7 bit-blocks that is needed to represent the
- * int <param>n</param>. Returns 1 if <param>n</param> is 0.
- *
- * @param n
- *            integer value
- *
- */
-uint8_t numberOf7BitBlocksToRepresent(uint32_t n);
-
-
-#endif
-

+ 0 - 64
src/codec/NameTableEntries.c

@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifndef EXI__NAME_TABLE_ENTRIES_C
-#define EXI__NAME_TABLE_ENTRIES_C
-
-#include "NameTableEntries.h"
-
-
-
-/* ==================================== */
-/* String Table Population */
-
-
-#if EXI_DEBUG == EXI_DEBUG_OFF
-static struct exiNamePartition localNamePartitions[9] = {
- { 9 },
- { 4 },
- { 2 },
- { 46 },
- { 70 },
- { 117 },
- { 186 },
- { 6 },
- { 3 }
-};
-#endif /*EXI_DEBUG*/
-
-
-#if EXI_DEBUG == EXI_DEBUG_OFF
-exi_name_table_prepopulated_t exiNameTablePrepopulated = { 9, localNamePartitions };
-#endif /*EXI_DEBUG*/
-
-
-
-
-#endif
-

+ 0 - 41
src/codec/NameTableEntries.h

@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifndef EXI__NAME_TABLE_ENTRIES_H
-#define EXI__NAME_TABLE_ENTRIES_H
-
-#include "EXITypes.h"
-
-/* ==================================== */
-/* String Table Population */
-
-extern exi_name_table_prepopulated_t exiNameTablePrepopulated;
-
-#endif
-

+ 0 - 249
src/codec/StringTable.c

@@ -1,249 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifndef STRING_TABLE_C
-#define STRING_TABLE_C
-
-#include <string.h>
-
-#include "StringTable.h"
-#include "NameTableEntries.h"
-
-#if EXI_DEBUG == EXI_DEBUG_ON
-
-int exiGetUri(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID,
-		const char** uri) {
-	if (uriID < prepopulatedTable->len) {
-		*uri = prepopulatedTable->uris[uriID];
-	} else {
-		int i = 0;
-		uriID -= prepopulatedTable->len;
-		for(i=0; i<(runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries); i++) {
-			if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_URI ) {
-				if (uriID == 0) {
-					*uri = runtimeTable->namePartitionsEntries[i].entry.uriPartition.uri;
-					return 0;
-				}
-				uriID--;
-			}
-		}
-
-		return EXI_ERROR_OUT_OF_BOUNDS;
-	}
-
-	return 0;
-}
-
-
-/*  0 ... Success, 1 ... Miss, -1 ... Error */
-int exiGetUriID(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, const char* uri,
-		uint16_t* uriID) {
-	unsigned int i;
-	for (i = 0; i < prepopulatedTable->len; i++) {
-		if (strcmp(uri, prepopulatedTable->uris[i]) == 0) {
-			*uriID = i;
-			return 0;
-		}
-	}
-	if (runtimeTable->addedUriEntries > 0) {
-		*uriID = prepopulatedTable->len - 1;
-		for(i=0; i< (runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries); i++) {
-			if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_URI ) {
-				*uriID = *uriID + 1;
-				if (strcmp(uri, runtimeTable->namePartitionsEntries[i].entry.uriPartition.uri) == 0) {
-					return 0;
-				}
-			}
-		}
-	}
-	/* no URI ID found */
-	return +1;
-}
-
-#endif /*EXI_DEBUG*/
-
-int exiGetUriSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t* uriLength) {
-	*uriLength = prepopulatedTable->len;
-	return 0;
-}
-
-#if EXI_DEBUG == EXI_DEBUG_ON
-
-int exiGetLocalName(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID,
-		uint16_t localNameID, const char** localName) {
-	int i;
-	if (uriID < prepopulatedTable->len) {
-		if (localNameID < prepopulatedTable->localNames[uriID].len) {
-			*localName = prepopulatedTable->localNames[uriID].names[localNameID];
-			return 0;
-		} else {
-			localNameID -= prepopulatedTable->localNames[uriID].len;
-		}
-	}
-
-	/* runtime tables */
-	for(i=0; i<(runtimeTable->addedLocalNameEntries+runtimeTable->addedUriEntries); i++) {
-		if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_LOCALNAME &&
-				runtimeTable->namePartitionsEntries[i].entry.localNamePartition.uriID == uriID ) {
-			if (localNameID == 0) {
-				*localName = runtimeTable->namePartitionsEntries[i].entry.localNamePartition.localName;
-				return 0;
-			}
-			localNameID--;
-		}
-	}
-
-	return EXI_ERROR_OUT_OF_BOUNDS;
-}
-
-
-/*  0 ... Success, 1 ... Miss, -1 ... Error */
-int exiGetLocalNameID(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID,
-		const char* localName, uint16_t* localNameID) {
-	unsigned int i;
-	if (uriID < prepopulatedTable->len) {
-		/* pre-populated names */
-		/* TODO binary search */
-		for (i = 0; i < prepopulatedTable->localNames[uriID].len; i++) {
-			if (strcmp(localName, prepopulatedTable->localNames[uriID].names[i]) == 0) {
-				*localNameID = i;
-				return 0;
-			}
-		}
-		/* runtime names */
-		for (i = 0; i < (runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries); i++) {
-			if (runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_LOCALNAME &&
-					strcmp(localName, runtimeTable->namePartitionsEntries[i].entry.localNamePartition.localName ) == 0) {
-				*localNameID = runtimeTable->namePartitionsEntries[i].entry.localNamePartition.localNameID;
-				return 0;
-			}
-		}
-
-		/* no localName ID found */
-		return +1;
-	} else if (uriID == prepopulatedTable->len) {
-		/* UCD profile */
-		/* no localName ID found */
-		return +1;
-	} else {
-		return EXI_ERROR_OUT_OF_BOUNDS;
-	}
-}
-
-#endif /*EXI_DEBUG*/
-
-int exiGetLocalNameSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable,
-		uint16_t uriID, uint16_t* localNameLength) {
-	*localNameLength = 0;
-	/* 1. pre-populated entries*/
-	if (uriID < prepopulatedTable->len) {
-		(*localNameLength) += prepopulatedTable->localNames[uriID].len;
-	} else {
-		/* range check */
-		if (uriID >= ( prepopulatedTable->len + runtimeTable->addedUriEntries )) {
-			return EXI_ERROR_OUT_OF_BOUNDS;
-		}
-	}
-	/* 2. runtime entries */
-	if (runtimeTable->addedLocalNameEntries > 0 ) {
-		int i;
-		for(i=0; i<(runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries); i++) {
-			if ( runtimeTable->namePartitionsEntries[i].namePartitionType == EXI_NAME_PARTITION_LOCALNAME &&
-					runtimeTable->namePartitionsEntries[i].entry.localNamePartition.uriID == uriID ) {
-				(*localNameLength)++;
-			}
-		}
-	}
-
-	return 0;
-}
-
-
-/* inline */
-static int _max(int a, int b) {
-	return (a > b) ? a : b;
-}
-
-int exiInitNameTableRuntime(exi_name_table_runtime_t* runtimeTable) {
-	runtimeTable->numberOfUsedCharacters = 0;
-	runtimeTable->addedLocalNameEntries = 0;
-	runtimeTable->addedUriEntries = 0;
-	return 0;
-}
-
-int exiAddUri(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, char* uri) {
-	if (runtimeTable->addedUriEntries < EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES
-			|| runtimeTable->addedUriEntries
-					< (EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES - _max(
-							runtimeTable->addedLocalNameEntries,
-							EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES))) {
-		uint16_t index = runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries;
-		int charsIndex = runtimeTable->numberOfUsedCharacters+runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries;
-		runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_URI;
-		strcpy(runtimeTable->characters+charsIndex, uri);
-		runtimeTable->namePartitionsEntries[index].entry.uriPartition.uri = runtimeTable->characters+charsIndex;
-		runtimeTable->namePartitionsEntries[index].entry.uriPartition.uriID = prepopulatedTable->len + runtimeTable->addedUriEntries;
-		runtimeTable->addedUriEntries++;
-		runtimeTable->numberOfUsedCharacters += strlen(uri);
-		return 0;
-	} else {
-		return -1;
-	}
-}
-
-int exiAddLocalName(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID,
-		char* localName) {
-	if (runtimeTable->addedUriEntries < EXI_RESERVED_NUMBER_LOCALNAME_PARTITION_ENTRIES
-			|| runtimeTable->addedLocalNameEntries
-					< (EXI_MAXIMUM_NUMBER_OF_NAME_PARTITION_ENTRIES - _max(
-							runtimeTable->addedUriEntries,
-							EXI_RESERVED_NUMBER_URI_PARTITION_ENTRIES))) {
-		uint16_t index = runtimeTable->addedUriEntries + runtimeTable->addedLocalNameEntries;
-		int charsIndex = runtimeTable->numberOfUsedCharacters+runtimeTable->addedUriEntries+runtimeTable->addedLocalNameEntries;
-		uint16_t localNameID;
-		int errn = exiGetLocalNameSize(prepopulatedTable, runtimeTable, uriID, &localNameID);
-		if (errn < 0) {
-			return errn;
-		}
-
-		runtimeTable->namePartitionsEntries[index].namePartitionType = EXI_NAME_PARTITION_LOCALNAME;
-		strcpy(runtimeTable->characters+charsIndex, localName);
-		runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localName = runtimeTable->characters+charsIndex;
-		runtimeTable->namePartitionsEntries[index].entry.localNamePartition.localNameID = localNameID;
-		runtimeTable->namePartitionsEntries[index].entry.localNamePartition.uriID = uriID;
-		runtimeTable->addedLocalNameEntries++;
-		runtimeTable->numberOfUsedCharacters += strlen(localName);
-		return 0;
-	} else {
-		return -1;
-	}
-}
-
-#endif
-

+ 0 - 69
src/codec/StringTable.h

@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef STRING_TABLE_H
-#define STRING_TABLE_H
-
-#include "EXITypes.h"
-
-#if EXI_DEBUG == EXI_DEBUG_ON
-int exiGetUri(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, const char** uri);
-/*  0 ... Success, 1 ... Miss, -1 ... Error */
-int exiGetUriID(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, const char* uri, uint16_t* uriID);
-#endif /*EXI_DEBUG*/
-
-int exiGetUriSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t* uriLength);
-
-#if EXI_DEBUG == EXI_DEBUG_ON
-int exiGetLocalName(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, uint16_t localNameID, const char** localName);
-/*  0 ... Success, 1 ... Miss, -1 ... Error */
-int exiGetLocalNameID(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, const char* localName, uint16_t* localNameID);
-#endif /*EXI_DEBUG*/
-
-int exiGetLocalNameSize(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, uint16_t* localNameLength);
-
-/* inits counter et cetera */
-int exiInitNameTableRuntime(exi_name_table_runtime_t* runtimeTable);
-
-/* add runtime URI entry */
-int exiAddUri(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, char* uri);
-
-/* add runtime local-name entry */
-int exiAddLocalName(exi_name_table_prepopulated_t* prepopulatedTable, exi_name_table_runtime_t* runtimeTable, uint16_t uriID, char* localName);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-

+ 0 - 66
src/codec/UCSString.c

@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#include <string.h>
-
-#include "DecoderChannel.h"
-#include "BitInputStream.h"
-#include "EXITypes.h"
-
-#ifndef UCS_STRING_C
-#define UCS_STRING_C
-
-int toUCSString(char* chars, string_ucs_t* s) {
-	unsigned int i;
-	s->len = strlen(chars);
-
-	if (s->len <= s->size) {
-		for(i=0; i<s->len; i++) {
-			s->codepoints[i] = chars[i];
-		}
-		return 0;
-	} else {
-		return EXI_ERROR_OUT_OF_STRING_BUFFER;
-	}
-}
-
-/* Note A: fails if string contains non ASCII characters */
-/* Note B: causes harm if char array is not sufficiently long */
-int toASCIIString(string_ucs_t* string, char* outASCII) {
-	unsigned int i;
-	for(i=0; i<string->len; i++) {
-		outASCII[i] = (char)string->codepoints[i];
-	}
-	outASCII[string->len] = '\0';
-
-	return 0;
-}
-
-#endif
-

+ 0 - 52
src/codec/UCSString.h

@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2007-2012 Siemens AG
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*******************************************************************
- *
- * @author Daniel.Peintner.EXT@siemens.com
- * @version 0.6 
- * @contact Joerg.Heuer@siemens.com
- *
- * <p>Code generated by EXIdizer</p>
- ********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXITypes.h"
-
-/* TODO utf8/cstring//wchar_t/char16_t/char32_t methods */
-
-
-#ifndef UCS_STRING_H
-#define UCS_STRING_H
-
-int toUCSString(char* chars, string_ucs_t* s);
-
-/* Note: fails if string contains non ASCII characters */
-int toASCIIString(string_ucs_t* string, char* outASCII);
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif

Some files were not shown because too many files changed in this diff