All Downloads are FREE. Search and download functionalities are using the official Maven repository.

.argot.1.4.0-rc2.source-code.meta.argot Maven / Gradle / Ivy

There is a newer version: 1.4.0
Show newest version
/*
 * Copyright (c) 2003-2019, Live Media Pty. Ltd.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are permitted
 * provided that the following conditions are met:
 *
 *  1. Redistributions of source code must retain the above copyright notice, this list of
 *     conditions and the following disclaimer.
 *  2. Redistributions in binary form must reproduce the above copyright notice, this list of
 *     conditions and the following disclaimer in the documentation and/or other materials
 *     provided with the distribution.
 *  3. Neither the name of Live Media nor the names of its contributors may be used to endorse
 *     or promote products derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

 
 /*
 * The meta dictionary.
 *
 * This is the core dictionary used to describe data types.
 *
 */
(library.list [

/*
 * BASE_ID 0
 */

(library.entry
	(library.base)
	(meta.cluster))

/*
 * The u8 type is unsigned 8bit big endian.
 * UINT8_ID 1
 */

(library.entry
	(library.definition meta.name:"uint8" meta.version:"1.3")
	(meta.atom uvint28:8 uvint28:8
		[ (meta.attribute.size uvint28:8)
	  	  (meta.attribute.integer)
	  	  (meta.attribute.unsigned)
	  	  (meta.attribute.bigendian) ] ))

/*
 * UVINT28_ID 2
 */

(library.entry
	(library.definition meta.name:"uvint28" meta.version:"1.3")
	(meta.atom uvint28:8 uvint28:32
		[ (meta.attribute.size uvint28:28)
	  	  (meta.attribute.integer)
	  	  (meta.attribute.unsigned)
	  	  (meta.attribute.bigendian) ] ))

/*
 * META_GROUP_ID 3
 */

(library.entry 
	(library.name meta.name:"meta" )
	(meta.cluster))


/*
 * meta.id is used to identify a type.
 * META_ID_ID 4
 */
 
(library.entry 
	(library.definition meta.name:"meta.id" meta.version:"1.3")
	(meta.reference #uvint28))


/*
 * META_CLUSTER_ID 5
 */

(library.entry
	(library.definition meta.name:"meta.cluster" meta.version:"1.3")
	(meta.sequence []))

/*
 * A map is used to map an abstract data type to a
 * concrete data type.  Two U16 values are used to specify
 * the data types in the dictionary being defined.
 * ABSTRACT_MAP_ID 6
 */
			
(library.entry 
	(library.definition meta.name:"meta.abstract_map" meta.version:"1.3") 
	(meta.sequence [
		(meta.tag u8utf8:"id" (meta.reference #meta.id))
	]))

/*
 * A type defined as abstract has an empty definition.
 * ABSTRACT_ID 7
 */
	
(library.entry
	(library.definition meta.name:"meta.abstract" meta.version:"1.3")
	(meta.sequence [
		(meta.array 
			(meta.reference #uint8)
			(meta.reference #meta.abstract_map))]))


/*
 * u8utf8 is a simple ASCII encoded string of maxiumum length 255
 * characters.
 * U8UTF8_ID 8
 */

(library.entry
	(library.definition meta.name:"u8utf8" meta.version:"1.3") 
	(meta.encoding 
		(meta.array 
			(meta.reference #uint8) 
			(meta.reference #uint8))
		u8utf8:"UTF-8")) 


/*
 *  meta.name defines all type names. 
 *  NAME_ID 9
 */

(library.entry 
	(library.definition meta.name:"meta.name" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"group" (meta.reference #meta.id))
		(meta.tag u8utf8:"name" (meta.reference #u8utf8))
	]))
	

/*
 * VERSION_ID 10
 */

(library.entry 
	(library.definition meta.name:"meta.version" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"major" (meta.reference #uint8))
		(meta.tag u8utf8:"minor" (meta.reference #uint8))
	]))

/*
 * DEFINITION_ID 11
 */
 
(library.entry
	(library.definition meta.name:"meta.definition" meta.version:"1.3")
	(meta.abstract [
		(meta.abstract_map #meta.cluster)
		(meta.abstract_map #meta.atom)
		(meta.abstract_map #meta.abstract)
		(meta.abstract_map #meta.abstract_map)
		(meta.abstract_map #meta.expression)
	]))


/*
 *  An expression is an abstract type. It allows different
 *  expressions to be used to define data types.  New expressions
 *  can be added to expand specification language.
 *  EXPRESSION_ID 12
 */


(library.entry 
	(library.definition meta.name:"meta.expression" meta.version:"1.3")
	(meta.abstract [
		(meta.abstract_map #meta.reference)
		(meta.abstract_map #meta.tag)
		(meta.abstract_map #meta.sequence)
		(meta.abstract_map #meta.array)
		(meta.abstract_map #meta.envelope)
		(meta.abstract_map #meta.encoding)
		(meta.abstract_map #meta.identified)
	]))

/*
 *  A reference delcares a usage of another data tpye
 *  in the system.  The name data type is used to define
 *  a description of usage of that data type.
 *  REFERENCE_ID 13
 */

(library.entry 
	(library.definition meta.name:"meta.reference" meta.version:"1.3")
	(meta.sequence [(meta.reference #meta.id)]))

/*
 *  A tag is used to label a part of a sequence.  It is only
 *  used as meta data.
 *  TAG_ID 14
 */
 
(library.entry
	(library.definition meta.name:"meta.tag" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"name" 
			(meta.reference #u8utf8))
		(meta.tag u8utf8:"data" 
			(meta.reference #meta.expression))]))

		
/*
 *  A sequence defines a set of expressions which
 *  are executed in order.  In the most normal case,
 *  it defines an ordered set of types in a data buffer.
 *  SEQUENCE_ID 15
 */

(library.entry 
	(library.definition meta.name:"meta.sequence" meta.version:"1.3")
	(meta.array 
		(meta.reference #uint8)
		(meta.reference #meta.expression)))

		
/*
 *  An Array is used to define any collection of data with
 *  a size and a type.
 *  ARRAY_ID 16
 */
		
(library.entry
	(library.definition meta.name:"meta.array" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"size" (meta.reference #meta.expression))
		(meta.tag u8utf8:"data" (meta.reference #meta.expression))]))
		
/*
 *  An envelope is used to wrap any data.  This allows a group of data
 *  to be read without actually being decoded.  The decoding can take
 *  place when required.
 *  ENVELOPE_ID 17
 */

(library.entry
	(library.definition meta.name:"meta.envelope" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"size" (meta.reference #meta.expression))
		(meta.tag u8utf8:"type" (meta.reference #meta.expression)) ]))


/*
 *  Encoding specifies the data encoding used on a character
 *  string.  The data expression must return an array that
 *  can have encoding applied.
 *  ENCODING_ID 18
 */

(library.entry 
	(library.definition meta.name:"meta.encoding" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"data" (meta.reference #meta.expression))
		(meta.tag u8utf8:"encoding" (meta.reference #u8utf8))]))

/* IDENTIFIED_ID 19 */

(library.entry
	(library.definition meta.name:"meta.identified" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8ascii:"description" (meta.reference #meta.name))
	]))

/*
 * Basic types are defined by a width and set of flags.
 * META_ATOM_ID 20
 */

(library.entry 
	(library.definition meta.name:"meta.atom" meta.version:"1.3") 
	(meta.sequence [
		(meta.tag u8utf8:"min_bit_length" (meta.reference #uvint28))
		(meta.tag u8utf8:"max_bit_length" (meta.reference #uvint28))
	   	(meta.tag u8utf8:"attributes" 
			(meta.array 
				(meta.reference #uint8)
				(meta.reference #meta.atom_attribute)))]))

/* META_ATOM_ATTRIBUTE_ID 21 */

(library.entry
	(library.definition meta.name:"meta.atom_attribute" meta.version:"1.3")
	(meta.abstract [
		(meta.abstract_map #meta.attribute.size)
		(meta.abstract_map #meta.attribute.integer)
		(meta.abstract_map #meta.attribute.unsigned)
		(meta.abstract_map #meta.attribute.bigendian)
		(meta.abstract_map #meta.attribute.signed)
		(meta.abstract_map #meta.attribute.ieee756)
	]))

/* META_ATTRIBUTE_ID 22 */

(library.entry 
	(library.name meta.name:"meta.attribute" )
	(meta.cluster))


/* META_ATTRIBUTE_SIZE_ID 23 */

(library.entry
	(library.definition meta.name:"meta.attribute.size" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"size" (meta.reference #uvint28))
	]))


/* META_ATTRIBUTE_INTEGER_ID 24 */

(library.entry
	(library.definition meta.name:"meta.attribute.integer" meta.version:"1.3")
	(meta.sequence []))


/* META_ATTRIBUTE_UNSIGNED_ID 25 */

(library.entry 
	(library.definition meta.name:"meta.attribute.unsigned" meta.version:"1.3") 
	(meta.sequence []))


/* META_ATTRIBUTE_BIGENDIAN_ID 26 */

(library.entry 
	(library.definition meta.name:"meta.attribute.bigendian" meta.version:"1.3")
	(meta.sequence[]))

/* META_ATTRIBUTE_SIGNED_ID 27 */

(library.entry
	(library.definition meta.name:"meta.attribute.signed" meta.version:"1.3")
	(meta.sequence []))

/* META_ATTIRBUTE_IEEE756_ID 28 */
(library.entry
	(library.definition meta.name:"meta.attribute.IEEE756" meta.version:"1.3")
	(meta.sequence []))
	

/* DICTIONARY_CLUSTER_ID 29 */

(library.entry
    (library.name meta.name:"dictionary")
    (meta.cluster))
 
/* DICTIONARY_BASE_ID 30 */

(library.entry
	(library.definition meta.name:"dictionary.base" meta.version:"1.3")
	(meta.sequence []))

/* DICTIONARY_NAME_ID 31 */

(library.entry
	(library.definition meta.name:"dictionary.name" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"name" (meta.reference #meta.name))
	]))

/* DICTIONARY_DEFINITION_ID 32 */

(library.entry
	(library.definition meta.name:"dictionary.definition" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"id" (meta.reference #meta.id))
		(meta.tag u8utf8:"version" (meta.reference #meta.version))
	]))

/* DICTIONARY_RELATION_ID 33 */
(library.entry
	(library.definition meta.name:"dictionary.relation" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"id" (meta.reference #meta.id))
	]))

/* DICTIONARY_LOCATION_ID 34 */

(library.entry
	(library.definition meta.name:"dictionary.location" meta.version:"1.3")
	(meta.abstract [
		(meta.abstract_map #dictionary.base)
		(meta.abstract_map #dictionary.name)
		(meta.abstract_map #dictionary.definition)
		(meta.abstract_map #dictionary.relation)
	]))

/* DICTIONARY_DEFINITION_ENVELOPE_ID 35 */

(library.entry
	(library.definition meta.name:"dictionary.definition_envelope" meta.version:"1.3")
	(meta.envelope
			(meta.reference #uvint28)
			(meta.reference #meta.definition)))

/* DEFINITION_ENTRY_ID 36 */

(library.entry 
	(library.definition meta.name:"dictionary.entry" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8utf8:"id" (meta.reference #meta.id))
		(meta.tag u8utf8:"location" (meta.reference #dictionary.location))
		(meta.tag u8utf8:"definition" (meta.reference #dictionary.definition_envelope))]))


/* DEFINITION_ENTRY_LIST_ID 37 */

(library.entry
	(library.definition meta.name:"dictionary.entry_list" meta.version:"1.3")
	(meta.array 
		(meta.reference #uvint28)
		(meta.reference #dictionary.entry )))

/* DICTIONARY_FILE 38 */

(library.entry
	(library.definition meta.name:"dictionary.file" meta.version:"1.3")
	(meta.sequence [
		(meta.tag u8ascii:"core" 
			(meta.array
				(meta.reference #uint8)
				(meta.reference #dictionary.entry_list)))
		(meta.tag u8ascii:"meta"
			(meta.array
				(meta.reference #uint8)
				(meta.reference #dictionary.entry_list)))
		(meta.tag u8ascii:"message"
			(meta.identified u8ascii:"message"))
	]))

])





© 2015 - 2025 Weber Informatics LLC | Privacy Policy