diff --git a/docs/libdonet/all.html b/docs/libdonet/all.html index 6fb932a..1f51342 100644 --- a/docs/libdonet/all.html +++ b/docs/libdonet/all.html @@ -1,3 +1,3 @@ List of all items in this crate

List of all items

Structs

Enums

Unions

Traits

Functions

Type Aliases

Statics

Constants

\ No newline at end of file +data-use_system_theme="false">

List of all items

Structs

Enums

Unions

Traits

Functions

Type Aliases

Statics

Constants

\ No newline at end of file diff --git a/docs/libdonet/dcatomic/index.html b/docs/libdonet/dcatomic/index.html index 5505a3d..0a8d195 100644 --- a/docs/libdonet/dcatomic/index.html +++ b/docs/libdonet/dcatomic/index.html @@ -1,6 +1,6 @@ libdonet::dcatomic - Rust

Module libdonet::dcatomic

source ·
Expand description

Data model for a DC Atomic Field, which represents a remote +data-use_system_theme="false">

Module libdonet::dcatomic

source ·
Expand description

Data model for a DC Atomic Field, which represents a remote procedure call method of a Distributed Class.

Structs

Crate libdonet

source ·
Expand description

DONET SOFTWARE

Copyright (c) 2024, Donet Authors.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3. diff --git a/docs/search-index.js b/docs/search-index.js index 98bfcf4..a590483 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -1,5 +1,5 @@ var searchIndex = JSON.parse('{\ -"libdonet":{"doc":"DONET SOFTWARE","t":"AAAAAAAAAAAAAAAAFFFFDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDILLLKLKLKLKLKLLKLLLLDIKLLLLLKLKLKLLKLLLLNEDINNNNELLLLLLLLLLLLKLKLKLKLLLLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLLLLLLLLLLKLDIDKLKLKLKLKLKLLLLLLLLLLLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLLLLLMMLLLLLLLNNDIDIGEGKLKLKLLLLLLLKLKLKLKLLLLLLLLKKLLKLKLKLKLKLKLLLLKKLLLLLLLLLLLDIGGLLLLKLKLKLKLKLKLKLLKLKLKLLLLNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNDNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLDLLLLLLLLDDILLLLLLLLLKLKLKLKLKLKLLLLMMKLLLLLKLKLKLLLLLLLLKLDLLLLLLLLFDLLLLLLLLLLLDETDIENNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLMLLLLMLLLLLLLKLKLKLKLKLMLLLLLLLLLKLKLLLLLMKLMLLLLLLLLLLLLLLLLLLLLMMRRRNNNNNNNNNNNNNNNNNNNRRGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGEGHHHHGRRNNGEGGGNNNGNHRRHNNNNNNGNNNGNEDNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLL","n":["byte_order","datagram","dcarray","dcatomic","dcfield","dcfile","dckeyword","dclass","dclexer","dcmolecular","dcnumeric","dcparameter","dcparser","dcstruct","dctype","globals","read_dc_files","swap_le_16","swap_le_32","swap_le_64","Datagram","DatagramIterator","add_blob","add_bool","add_buffer","add_channel","add_control_header","add_data","add_datagram","add_doid","add_f32","add_f64","add_i16","add_i32","add_i64","add_i8","add_location","add_server_header","add_size","add_string","add_u16","add_u32","add_u64","add_u8","add_zone","borrow","borrow","borrow_mut","borrow_mut","check_read_length","default","from","from","get_data","get_remaining","into","into","new","new","read_bool","read_channel","read_data","read_doid","read_f32","read_f64","read_i16","read_i32","read_i64","read_i8","read_msg_type","read_recipient_count","read_size","read_u16","read_u32","read_u64","read_u8","read_zone","seek","size","skip","tell","try_from","try_from","try_into","try_into","type_id","type_id","DCArrayType","DCArrayTypeInterface","borrow","borrow_mut","from","generate_hash","generate_hash","get_array_size","get_array_size","get_element_type","get_element_type","get_range","get_range","has_range","has_range","into","new","new","try_from","try_into","type_id","DCAtomicField","DCAtomicFieldInterface","add_element","add_element","borrow","borrow_mut","fmt","from","generate_hash","generate_hash","get_element","get_element","get_num_elements","get_num_elements","into","new","new","try_from","try_into","type_id","Atomic","ClassField","DCField","DCFieldInterface","Field","Field","Molecular","Molecular","StructField","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","from","from","from","generate_hash","generate_hash","get_dclass","get_dclass","get_field_id","get_field_id","has_default_value","has_default_value","into","into","into","is_airecv","is_airecv","is_bogus_field","is_bogus_field","is_broadcast","is_broadcast","is_clrecv","is_clrecv","is_clsend","is_clsend","is_db","is_db","is_ownrecv","is_ownrecv","is_ownsend","is_ownsend","is_ram","is_ram","is_required","is_required","new","new","set_bogus_field","set_bogus_field","set_default_value","set_default_value","set_field_id","set_field_id","set_field_name","set_field_name","set_field_type","set_field_type","set_parent_dclass","set_parent_dclass","set_parent_struct","set_parent_struct","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","validate_ranges","validate_ranges","DCFile","DCFileInterface","DCImport","add_dclass","add_dclass","add_field","add_field","add_keyword","add_keyword","add_python_import","add_python_import","add_struct","add_struct","add_typedef","add_typedef","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","from","from","generate_hash","generate_hash","get_dclass","get_dclass","get_dclass_by_id","get_dclass_by_id","get_dclass_by_name","get_dclass_by_name","get_hash","get_hash","get_keyword","get_keyword","get_next_dclass_id","get_next_dclass_id","get_num_dclasses","get_num_dclasses","get_num_imports","get_num_imports","get_num_keywords","get_num_keywords","get_num_structs","get_num_structs","get_pretty_hash","get_pretty_hash","get_python_import","get_python_import","get_struct","get_struct","has_keyword","has_keyword","into","into","new","new","python_module","symbols","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","ByName","ByStruct","DCKeyword","DCKeywordInterface","DCKeywordList","DCKeywordListInterface","HistoricalFlag","IdentifyKeyword","KeywordName2Keyword","_get_keyword_list","_get_keyword_list","_get_keywords_by_name_map","_get_keywords_by_name_map","add_keyword","add_keyword","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear_historical_flag","clear_historical_flag","clear_keywords","clear_keywords","compare_with","compare_with","copy_keywords","copy_keywords","default","eq","fmt","fmt","from","from","from","generate_hash","generate_hash","generate_hash","generate_hash","get_historical_flag","get_historical_flag","get_keyword","get_keyword","get_keyword_by_name","get_keyword_by_name","get_name","get_name","get_num_keywords","get_num_keywords","has_keyword","has_keyword","into","into","into","new","new","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","DClass","DClassInterface","FieldId2Field","FieldName2Field","borrow","borrow_mut","fmt","from","generate_hash","generate_hash","get_constructor","get_constructor","get_dclass_id","get_dclass_id","get_name","get_name","get_num_parents","get_num_parents","get_parent","get_parent","has_constructor","has_constructor","into","new","new","set_dclass_id","set_dclass_id","set_parent","set_parent","try_from","try_into","type_id","BinaryLiteral","Blob32T","BlobT","Break","Case","CharT","CharacterLiteral","CloseBraces","CloseBrackets","CloseParenthesis","Colon","Comma","Comment","DCKeyword","DCToken","DClass","DecimalLiteral","Default","Equals","EscapeCharacter","Float32T","Float64T","FloatLiteral","ForwardSlash","From","HexLiteral","Hyphen","Identifier","Import","Int16ArrayT","Int16T","Int32ArrayT","Int32T","Int64T","Int8ArrayT","Int8T","Keyword","Lexer","Newline","OctalLiteral","OpenBraces","OpenBrackets","OpenParenthesis","Percent","Period","Plus","Semicolon","Span","Star","StringLiteral","StringT","Struct","Switch","Typedef","UInt16ArrayT","UInt16T","UInt32ArrayT","UInt32T","UInt32UInt8ArrayT","UInt64T","UInt8ArrayT","UInt8T","ViewSuffix","Whitespace","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","eq","fmt","fmt","from","from","from","into","into","into","into_iter","line","max","min","new","next","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","DCMolecularField","borrow","borrow_mut","fmt","from","into","try_from","try_into","type_id","DCNumericRange","DCNumericType","DCNumericTypeInterface","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","contains","from","from","generate_hash","generate_hash","get_divisor","get_divisor","get_modulus","get_modulus","get_range","get_range","has_modulus","has_modulus","has_range","has_range","into","into","is_empty","max","min","new","new","new","new_floating_point_range","new_integer_range","new_unsigned_integer_range","set_divisor","set_divisor","set_modulus","set_modulus","set_range","set_range","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","within_range","within_range","DCParameter","borrow","borrow_mut","fmt","from","into","try_from","try_into","type_id","parse","DCStruct","borrow","borrow_mut","default","eq","fmt","from","into","new","try_from","try_into","type_id","DCNumber","DCNumberType","DCNumberValueUnion","DCTypeDefinition","DCTypeDefinitionInterface","DCTypeEnum","Float","Int","None","TArray","TBlob","TBlob32","TChar","TFloat32","TFloat64","TInt16","TInt32","TInt64","TInt8","TInvalid","TMethod","TString","TStruct","TUInt16","TUInt32","TUInt64","TUInt8","TVarArray","TVarBlob","TVarBlob32","TVarString","UInt","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","data_type","default","eq","eq","eq","floating_point","fmt","fmt","from","from","from","from","from","generate_hash","generate_hash","get_alias","get_alias","get_dc_type","get_dc_type","get_size","get_size","has_alias","has_alias","integer","into","into","into","into","into","is_float","is_int","is_none","is_u_int","is_variable_length","is_variable_length","new","new","new","new_floating_point","new_integer","new_unsigned_integer","number_type","set_alias","set_alias","size","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unsigned_integer","value","BCHAN_CLIENTS","BCHAN_DBSERVERS","BCHAN_STATESERVERS","CAAddInterest","CAAddInterestMultiple","CAAddPostRemove","CAAddSessionObject","CAClearPostRemoves","CACloseChannel","CADeclareObject","CADrop","CAEject","CAGetNetworkAddress","CAGetNetworkAddressResp","CAOpenChannel","CARemoveInterest","CARemoveSessionObject","CASendDatagram","CASetClientID","CASetFieldsSendable","CASetState","CAUndeclareObject","CHANNEL_MAX","CONTROL_CHANNEL","Channel","ClientAddInterest","ClientAddInterestMultiple","ClientDisconnect","ClientDoneInterestResp","ClientEject","ClientEnterObjectRequired","ClientEnterObjectRequiredOther","ClientEnterObjectRequiredOwner","ClientEnterObjectRequiredOwnerOther","ClientHeartbeat","ClientHello","ClientHelloResp","ClientObjectLeaving","ClientObjectLeavingOwner","ClientObjectLocation","ClientObjectSetField","ClientObjectSetFields","ClientRemoveInterest","DBCreateObject","DBCreateObjectResp","DBObjectDelete","DBObjectDeleteField","DBObjectDeleteFields","DBObjectGetAll","DBObjectGetAllResp","DBObjectGetField","DBObjectGetFieldResp","DBObjectGetFields","DBObjectGetFieldsResp","DBObjectSetField","DBObjectSetFieldIfEmpty","DBObjectSetFieldIfEmptyResp","DBObjectSetFieldIfEquals","DBObjectSetFieldIfEqualsResp","DBObjectSetFields","DBObjectSetFieldsIfEquals","DBObjectSetFieldsIfEqualsResp","DBSSObjectActivateWithDefaults","DBSSObjectActivateWithDefaultsOther","DBSSObjectDeleteDisk","DBSSObjectDeleteFieldDisk","DBSSObjectDeleteFieldsDisk","DBSSObjectGetActivated","DBSSObjectGetActivatedResp","DCFileHash","DCReadError","DCReadResult","DC_MULTIPLE_INHERITANCE","DC_SORT_INHERITANCE_BY_FILE","DC_VIEW_SUFFIXES","DC_VIRTUAL_INHERITANCE","DClassId","DG_SIZE_MAX","DOID_MAX","DatagramIteratorEOF","DatagramOverflow","DgBufferResult","DgError","DgResult","DgSizeTag","DoId","Err","Err","Err","FieldId","FileError","HISTORICAL_DC_KEYWORDS","INVALID_CHANNEL","INVALID_DOID","MAX_PRIME_NUMBERS","MDAddChannel","MDAddPostRemove","MDAddRange","MDClearPostRemoves","MDRemoveChannel","MDRemoveRange","MsgType","Ok","Ok","Ok","ParseError","ParseError","Protocol","ProtocolIter","SSCreateObjectWithRequired","SSCreateObjectWithRequiredOther","SSDeleteAIObjects","SSObjectChangingAI","SSObjectChangingLocation","SSObjectChangingOwner","SSObjectDeleteChildren","SSObjectDeleteFieldRAM","SSObjectDeleteFieldsRAM","SSObjectDeleteRAM","SSObjectDeleteZone","SSObjectDeleteZones","SSObjectEnterAIWithRequired","SSObjectEnterAIWithRequiredOther","SSObjectEnterLocationWithRequired","SSObjectEnterLocationWithRequiredOther","SSObjectEnterOwnerWithRequired","SSObjectEnterOwnerWithRequiredOther","SSObjectGetAI","SSObjectGetAIResp","SSObjectGetAll","SSObjectGetAllResp","SSObjectGetChildCount","SSObjectGetChildCountResp","SSObjectGetChildren","SSObjectGetField","SSObjectGetFieldResp","SSObjectGetFields","SSObjectGetFieldsResp","SSObjectGetLocation","SSObjectGetLocationResp","SSObjectGetOwner","SSObjectGetOwnerResp","SSObjectGetZoneCount","SSObjectGetZoneCountResp","SSObjectGetZoneObjects","SSObjectGetZonesCount","SSObjectGetZonesCountResp","SSObjectGetZonesObjects","SSObjectSetAI","SSObjectSetField","SSObjectSetFields","SSObjectSetLocation","SSObjectSetOwner","ZONE_BITS","ZONE_MAX","Zone","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from","into","into","into","into","into_iter","iter","len","msg_type","next","next_back","nth","size_hint","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id"],"q":[[0,"libdonet"],[17,"libdonet::byte_order"],[20,"libdonet::datagram"],[87,"libdonet::dcarray"],[108,"libdonet::dcatomic"],[128,"libdonet::dcfield"],[207,"libdonet::dcfile"],[275,"libdonet::dckeyword"],[343,"libdonet::dclass"],[375,"libdonet::dclexer"],[476,"libdonet::dcmolecular"],[485,"libdonet::dcnumeric"],[535,"libdonet::dcparameter"],[544,"libdonet::dcparser"],[545,"libdonet::dcstruct"],[557,"libdonet::dctype"],[676,"libdonet::globals"],[880,"alloc::string"],[881,"alloc::vec"],[882,"core::result"],[883,"core::any"],[884,"core::option"],[885,"core::fmt"],[886,"core::fmt"],[887,"alloc::sync"],[888,"core::iter::traits::iterator"]],"d":["Utils for swapping little-endian bytes to the compiling …","Provides structures to write network datagrams and tools …","Data model of the DC Array element, which is a parameter …","Data model for a DC Atomic Field, which represents a remote","Base data model for DC Field elements. Alone, it represents","Root structure that stores the collection of DC elements …","Representation of arbitrary and historical keywords as …","Data model for Distributed Class definitions in the DC …","Definition of the Lexer machine to process raw DC file …","Data model for a DC Molecular field, which represents a …","Structure representing data types supported in the DC …","Data model that represents a single parameter of an atomic …","Definition of the DC language context free grammar for the …","Data model representing a DC Struct element.","Represents all data types supported by the DC language and …","Includes definitions of type aliases for Donet concepts, …","Easy to use interface for the DC file parser. Handles …","Swaps 2 bytes in little endian byte order to big endian. …","Swaps 4 bytes in little endian byte order to big endian. …","Swaps 8 bytes in little endian byte order to big endian. …","","Utility for iterating value by value of a datagram message.","Adds a dclass blob value (binary data) to the end of the …","Adds an unsigned 8-bit integer to the datagram that is …","Reserves an amount of bytes in the datagram buffer.","Adds a 64-bit channel ID to the end of the datagram.","Appends a control header, which is very similar to a …","Adds raw bytes to the datagram via an unsigned 8-bit …","Appends another datagram’s binary data to this datagram.","Adds a 32-bit Distributed Object ID to the end of the …","32-bit IEEE 754 floating point. same bitwise operations.","64-bit IEEE 754 floating point. same bitwise operations.","","","","","Added for convenience, but also better performance than …","Appends a generic header for messages that are to be …","Adds a Datagram / Field length tag to the end of the …","Adds a dclass string value to the end of the datagram. A …","","","","Adds an unsigned 8-bit integer value to the datagram.","Adds a 32-bit zone ID to the end of the datagram.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the number of unread bytes left in the datagram","Calls U::from(self).","Calls U::from(self).","","","","","Reads the next number of bytes in the datagram.","","32-bit IEEE 754 floating point in native endianness.","64-bit IEEE 754 floating point in native endianness.","","","","","Returns the datagram’s message type. Does not advance …","Get the recipient count in a datagram message. Does not …","","","","","","","Manually sets the buffer_offset position.","","Increments the buffer_offset by bytes length. Returns …","Returns the value of self.index in bytes.","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","","","Calls U::from(self).","","","","","","Represents an atomic field of a Distributed Class. This …","","","","","","","Returns the argument unchanged.","","","","","","","Calls U::from(self).","","","","","","","Enumerator representing the 3 types of fields that inherit …","A field of a Distributed Class. The DCField struct is a …","","","","","","A different enumerator representing DC Field types used …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Data model that provides a high level representation of a …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Accumulates the elements of the DC file into the hash.","","","","","","","","Returns a 32-bit hash index associated with this file. …","","","","","","","","","","","","","","Returns a string with the hash as a pretty format …","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","This is a flag bitmask for historical keywords. Panda uses …","Represents the two types of inputs that …","A map of key/value pairs mapping keyword names to …","","Returns a clone of this object’s keyword array.","","Returns a clone of this object’s keyword name map.","","","","","","","","","","","","Clears the DCKeywords array, keyword name map, and …","","Compares this Keyword List with another DCKeywordList …","","Overwrites the DCKeywords of this list with the target’s …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","","","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","Numeric Range structs are used to represent a range of …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Generates the hash for this DC Type element.","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the enum is DCNumberType::Float otherwise …","Returns true if the enum is DCNumberType::Int otherwise …","Returns true if the enum is DCNumberType::None otherwise …","Returns true if the enum is DCNumberType::UInt otherwise …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sent by the client when it’s closing the connection. …","","","","","","","The client should send this message on a regular interval. …","","This is sent by the Client Agent to the client when the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Contains the error value","Contains the error value","Contains the error value","","","","","","","","","","","","","","Contains the success value","Contains the success value","Contains the success value","","","Enumerator for every message type in the Donet network …","An iterator over the variants of Protocol","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Utility for converting protocol enumerator to u16 (MsgType)","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,24,7,24,24,7,7,24,7,24,7,24,7,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,7,24,24,7,24,7,24,7,24,0,0,29,29,29,68,29,68,29,68,29,68,29,68,29,29,68,29,29,29,29,0,0,69,34,34,34,34,34,69,34,69,34,69,34,34,69,34,34,34,34,42,0,0,0,42,43,42,43,0,41,42,43,41,42,43,41,42,43,41,42,43,70,41,70,41,70,41,70,41,41,42,43,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,41,42,43,41,42,43,41,42,43,70,41,0,0,0,71,46,71,46,71,46,71,46,71,46,71,46,48,46,48,46,48,48,48,46,48,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,48,46,48,46,48,48,48,48,46,48,46,48,46,54,54,0,0,0,0,0,0,0,72,51,72,51,72,51,54,47,51,54,47,51,73,47,72,51,72,51,72,51,51,47,47,51,54,47,51,73,72,47,51,73,47,72,51,72,51,73,47,72,51,72,51,54,47,51,73,72,47,51,54,47,51,54,47,51,54,47,51,0,0,0,0,40,40,40,40,74,40,74,40,74,40,74,40,74,40,74,40,74,40,40,74,40,74,40,74,40,40,40,40,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,55,55,55,55,55,55,55,55,55,0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,57,55,56,57,55,56,55,56,55,56,55,56,55,56,57,55,56,57,55,56,57,56,56,56,57,57,55,56,57,55,56,57,55,56,57,55,56,0,58,58,58,58,58,58,58,58,0,0,0,60,32,60,32,32,32,32,60,32,75,60,75,60,75,60,75,60,75,60,75,60,60,32,32,32,32,75,60,32,32,32,32,75,60,75,60,75,60,32,60,32,60,32,60,32,75,60,0,33,33,33,33,33,33,33,33,0,0,45,45,45,45,45,45,45,45,45,45,45,0,0,0,0,0,0,64,64,64,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,64,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,30,59,61,59,64,63,61,30,61,30,63,59,64,76,30,76,30,76,30,76,30,76,30,63,61,30,63,59,64,64,64,64,64,76,30,76,30,59,59,59,59,59,76,30,30,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,63,59,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,66,66,0,0,0,0,0,3,9,12,0,67,0,0,0,0,25,25,25,25,25,25,0,3,9,12,0,67,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,67,66,25,65,67,66,25,65,25,65,25,65,66,25,67,66,25,65,67,66,25,65,67,66,25,65,65,25,65,0,65,65,65,65,25,65,67,66,25,65,67,66,25,65,67,66,25,65],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[2,[1]]],3],[4,4],[5,5],[6,6],0,0,[[7,[2,[8]]],9],[[7,10],9],[[7,11],12],[[7,13],9],[[7,14],9],[[7,[2,[8]]],9],[[7,7],9],[[7,15],9],[[7,16],9],[[7,17],9],[[7,18],9],[[7,19],9],[[7,20],9],[[7,21],9],[[7,15,22],9],[[7,[2,[13]],13,14],9],[[7,11],9],[[7,23],9],[[7,4],9],[[7,5],9],[[7,6],9],[[7,8],9],[[7,22],9],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[24,11],9],[[],7],[-1,-1,[]],[-1,-1,[]],[7,[[2,[8]]]],[24,11],[-1,-2,[],[]],[-1,-2,[],[]],[[],7],[7,24],[24,10],[24,13],[[24,11],[[2,[8]]]],[24,15],[24,16],[24,17],[24,18],[24,19],[24,20],[24,21],[24,25],[24,8],[24,11],[24,4],[24,5],[24,6],[24,8],[24,22],[[24,11],26],[7,11],[[24,11],9],[24,11],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],0,0,[-1,4,[]],[29,4],[-1,[[31,[30]]],[]],[29,[[31,[30]]]],[-1,[[31,[32]]],[]],[29,[[31,[32]]]],[-1,10,[]],[29,10],[-1,-2,[],[]],[[[31,[30]],[31,[32]]],-1,[]],[[[31,[30]],[31,[32]]],29],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,[[-1,33],26,[]],[[34,33],26],[-1,-2,[],[]],[-1,-2,[],[]],[[34,35],36],[-1,-1,[]],0,0,[[-1,37],[[31,[[39,[[38,[33]]]]]]],[]],[[34,37],[[31,[[39,[[38,[33]]]]]]]],[-1,37,[]],[34,37],[-1,-2,[],[]],[[23,[39,[[38,[40]]]],10],-1,[]],[[23,[39,[[38,[40]]]],10],34],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[41,35],36],[[42,35],36],[[43,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,[-1,[[39,[[38,[40]]]]],[]],[41,[[39,[[38,[40]]]]]],[-1,44,[]],[41,44],[-1,10,[]],[41,10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[[23,30],-1,[]],[[23,30],41],[[-1,10],26,[]],[[41,10],26],[[-1,[2,[8]]],26,[]],[[41,[2,[8]]],26],[[-1,44],26,[]],[[41,44],26],[[-1,1],26,[]],[[41,1],26],[[-1,30],26,[]],[[41,30],26],[[-1,[39,[[38,[40]]]]],26,[]],[[41,[39,[[38,[40]]]]],26],[[-1,[39,[[38,[45]]]]],26,[]],[[41,[39,[[38,[45]]]]],26],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[[-1,7],10,[]],[[41,7],10],0,0,0,[[-1,40],26,[]],[[46,40],26],[[-1,41],26,[]],[[46,41],26],[[-1,47],26,[]],[[46,47],26],[[-1,48],26,[]],[[46,48],26],[[-1,45],26,[]],[[46,45],26],[[-1,1],[[27,[26,26]]],[]],[[46,1],[[27,[26,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[48,48],[[-1,-2],26,[],[]],[[48,35],36],[[46,35],36],[-1,-1,[]],[-1,-1,[]],0,0,[[-1,37],[[39,[[38,[40]]]]],[]],[[46,37],[[39,[[38,[40]]]]]],[[-1,49],[[39,[[38,[40]]]]],[]],[[46,49],[[39,[[38,[40]]]]]],[[-1,23],[[39,[[38,[40]]]]],[]],[[46,23],[[39,[[38,[40]]]]]],[-1,50,[]],[46,50],[[-1,37],[[39,[47]]],[]],[[46,37],[[39,[47]]]],[-1,49,[]],[46,49],[-1,37,[]],[46,37],[-1,37,[]],[46,37],[-1,37,[]],[46,37],[-1,37,[]],[46,37],[-1,1,[]],[46,1],[[-1,37],48,[]],[[46,37],48],[[-1,37],[[39,[[38,[45]]]]],[]],[[46,37],[[39,[[38,[45]]]]]],[[-1,1],10,[]],[[46,1],10],[-1,-2,[],[]],[-1,-2,[],[]],[[1,[2,[1]]],48],[[],46],0,0,[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,[-1,[[2,[[39,[[38,[47]]]]]]],[]],[51,[[2,[[39,[[38,[47]]]]]]]],[-1,52,[]],[51,52],[[-1,47],[[27,[26,26]]],[]],[[51,47],[[27,[26,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,26,[]],[47,26],[-1,26,[]],[51,26],[[-1,51],10,[]],[[51,51],10],[[-1,51],26,[]],[[51,51],26],[[],51],[[47,47],10],[[47,35],36],[[51,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,0,0,[-1,53,[]],[47,53],[[-1,37],[[31,[[39,[[38,[47]]]]]]],[]],[[51,37],[[31,[[39,[[38,[47]]]]]]]],[[-1,1],[[31,[[39,[[38,[47]]]]]]],[]],[[51,1],[[31,[[39,[[38,[47]]]]]]]],[-1,1,[]],[47,1],[-1,37,[]],[51,37],[[-1,54],10,[]],[[51,54],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,[31,[53]]],-1,[]],[[],-1,[]],[[1,[31,[53]]],47],[[],51],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[40,35],36],[-1,-1,[]],0,0,[-1,[[31,[[39,[[38,[34]]]]]]],[]],[40,[[31,[[39,[[38,[34]]]]]]]],[-1,49,[]],[40,49],[-1,1,[]],[40,1],[-1,37,[]],[40,37],[[-1,37],[[31,[[39,[[38,[40]]]]]]],[]],[[40,37],[[31,[[39,[[38,[40]]]]]]]],[-1,10,[]],[40,10],[-1,-2,[],[]],[23,-1,[]],[23,40],[[-1,49],26,[]],[[40,49],26],[[-1,[39,[[38,[40]]]]],26,[]],[[40,[39,[[38,[40]]]]],26],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[55,55],[56,56],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[55,55],10],[[56,56],10],[[55,35],36],[[56,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[23,57],[57,[[31,[[26,[55,56]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[58,35],36],[-1,-1,[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,32],[[-1,-2],26,[],[]],[[32,59],10],[-1,-1,[]],[-1,-1,[]],0,0,[-1,4,[]],[60,4],[-1,17,[]],[60,17],[-1,32,[]],[60,32],[-1,10,[]],[60,10],[-1,10,[]],[60,10],[-1,-2,[],[]],[-1,-2,[],[]],[32,10],0,0,[61,-1,[]],[61,60],[[],32],[[17,17],32],[[20,20],32],[[6,6],32],[[-1,4],[[27,[26,26]]],[]],[[60,4],[[27,[26,26]]]],[[-1,17],[[27,[26,26]]],[]],[[60,17],[[27,[26,26]]]],[[-1,32],[[27,[26,26]]],[]],[[60,32],[[27,[26,26]]]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[[-1,[2,[8]],6],[[27,[26,26]]],[]],[[60,[2,[8]],6],[[27,[26,26]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[33,35],36],[-1,-1,[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,[[27,[46,[26,[[31,[[26,[55,56]]]],23]]]]],62],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],45],[[45,45],10],[[45,35],36],[-1,-1,[]],[-1,-2,[],[]],[[],45],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[61,61],[30,30],[63,63],[59,59],[64,64],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],0,[[],59],[[61,61],10],[[59,59],10],[[64,64],10],0,[[61,35],36],[[30,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,[-1,[[27,[1,26]]],[]],[30,[[27,[1,26]]]],[-1,61,[]],[30,61],[-1,11,[]],[30,11],[-1,10,[]],[30,10],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[64,10],[64,10],[64,10],[64,10],[-1,10,[]],[30,10],[[],-1,[]],[[],30],[[],59],[17,59],[20,59],[6,59],0,[[-1,1],26,[]],[[30,1],26],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,25],[65,65],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[66,66],10],[[25,25],10],[[67,35],36],[[66,35],36],[[25,35],36],[[65,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],65],[65,37],[25,14],[65,31],[65,31],[[65,37],31],[65,[[26,[37,[31,[37]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]]],"c":[],"p":[[3,"String",880],[3,"Vec",881],[6,"DCReadResult",676],[15,"u16"],[15,"u32"],[15,"u64"],[3,"Datagram",20],[15,"u8"],[6,"DgResult",676],[15,"bool"],[6,"DgSizeTag",676],[6,"DgBufferResult",676],[6,"Channel",676],[6,"MsgType",676],[6,"DoId",676],[15,"f32"],[15,"f64"],[15,"i16"],[15,"i32"],[15,"i64"],[15,"i8"],[6,"Zone",676],[15,"str"],[3,"DatagramIterator",20],[4,"Protocol",676],[15,"tuple"],[4,"Result",882],[3,"TypeId",883],[3,"DCArrayType",87],[3,"DCTypeDefinition",557],[4,"Option",884],[3,"DCNumericRange",485],[3,"DCParameter",535],[3,"DCAtomicField",108],[3,"Formatter",885],[6,"Result",885],[15,"usize"],[3,"Mutex",886],[3,"Arc",887],[3,"DClass",343],[3,"DCField",128],[4,"ClassField",128],[4,"StructField",128],[6,"FieldId",676],[3,"DCStruct",545],[3,"DCFile",207],[3,"DCKeyword",275],[3,"DCImport",207],[6,"DClassId",676],[6,"DCFileHash",676],[3,"DCKeywordList",275],[6,"KeywordName2Keyword",275],[6,"HistoricalFlag",275],[4,"IdentifyKeyword",275],[4,"DCToken",375],[3,"Span",375],[3,"Lexer",375],[3,"DCMolecularField",476],[3,"DCNumber",557],[3,"DCNumericType",485],[4,"DCTypeEnum",557],[8,"Iterator",888],[19,"DCNumberValueUnion",557],[4,"DCNumberType",557],[3,"ProtocolIter",676],[4,"DgError",676],[4,"DCReadError",676],[8,"DCArrayTypeInterface",87],[8,"DCAtomicFieldInterface",108],[8,"DCFieldInterface",128],[8,"DCFileInterface",207],[8,"DCKeywordListInterface",275],[8,"DCKeywordInterface",275],[8,"DClassInterface",343],[8,"DCNumericTypeInterface",485],[8,"DCTypeDefinitionInterface",557]],"b":[]}\ +"libdonet":{"doc":"DONET SOFTWARE","t":"AAAAAAAAAAAAAAAAFFFFDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDILLLKLKLKLKLKLLKLLLLDIKLLLLLKLKLKLLKLLLLNEDINNNNELLLLLLLLLLLLKLKLKLKLKLLLLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLLLLLLLLLLKLDIDKLKLKLKLKLKLLLLLLLLLLLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLLLLLMKLMLLLLLLLNNDIDIGEGKLKLKLLLLLLLKLKLKLKLLLLLLLLKKLLKLKLKLKLKLKLLLLKKLLLLLLLLLLLDIGGKLKLLLLLKLKLKLKLKLKLKLLKLKLKLKLLLLNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNDNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLDIKLLLLLKLKLKLLKLLLLDDILLLLLLLLLKLKLKLKLKLKLLLLMMKLLLLLKLKLKLLLLLLLLKLDILLLLKLKLKLKLLKLKLKLKLLLLFDLLLLLLLLLLLDETDIENNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLMLLLLMLLLLLLLKLKLKLKLKLMLLLLLLLLLKLKLLLLLMKLMLLLLLLLLLLLLLLLLLLLLMMRRRNNNNNNNNNNNNNNNNNNNRRGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGEGHHHHGRRNNGEGGGNNNGNHRRHNNNNNNGNNNGNEDNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLL","n":["byte_order","datagram","dcarray","dcatomic","dcfield","dcfile","dckeyword","dclass","dclexer","dcmolecular","dcnumeric","dcparameter","dcparser","dcstruct","dctype","globals","read_dc_files","swap_le_16","swap_le_32","swap_le_64","Datagram","DatagramIterator","add_blob","add_bool","add_buffer","add_channel","add_control_header","add_data","add_datagram","add_doid","add_f32","add_f64","add_i16","add_i32","add_i64","add_i8","add_location","add_server_header","add_size","add_string","add_u16","add_u32","add_u64","add_u8","add_zone","borrow","borrow","borrow_mut","borrow_mut","check_read_length","default","from","from","get_data","get_remaining","into","into","new","new","read_bool","read_channel","read_data","read_doid","read_f32","read_f64","read_i16","read_i32","read_i64","read_i8","read_msg_type","read_recipient_count","read_size","read_u16","read_u32","read_u64","read_u8","read_zone","seek","size","skip","tell","try_from","try_from","try_into","try_into","type_id","type_id","DCArrayType","DCArrayTypeInterface","borrow","borrow_mut","from","generate_hash","generate_hash","get_array_size","get_array_size","get_element_type","get_element_type","get_range","get_range","has_range","has_range","into","new","new","try_from","try_into","type_id","DCAtomicField","DCAtomicFieldInterface","add_element","add_element","borrow","borrow_mut","fmt","from","generate_hash","generate_hash","get_element","get_element","get_num_elements","get_num_elements","into","new","new","try_from","try_into","type_id","Atomic","ClassField","DCField","DCFieldInterface","Field","Field","Molecular","Molecular","StructField","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","from","from","from","generate_hash","generate_hash","get_dclass","get_dclass","get_field_id","get_field_id","get_field_name","get_field_name","has_default_value","has_default_value","into","into","into","is_airecv","is_airecv","is_bogus_field","is_bogus_field","is_broadcast","is_broadcast","is_clrecv","is_clrecv","is_clsend","is_clsend","is_db","is_db","is_ownrecv","is_ownrecv","is_ownsend","is_ownsend","is_ram","is_ram","is_required","is_required","new","new","set_bogus_field","set_bogus_field","set_default_value","set_default_value","set_field_id","set_field_id","set_field_name","set_field_name","set_field_type","set_field_type","set_parent_dclass","set_parent_dclass","set_parent_struct","set_parent_struct","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","validate_ranges","validate_ranges","DCFile","DCFileInterface","DCImport","add_dclass","add_dclass","add_field","add_field","add_keyword","add_keyword","add_python_import","add_python_import","add_struct","add_struct","add_typedef","add_typedef","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","from","from","generate_hash","generate_hash","get_dclass","get_dclass","get_dclass_by_id","get_dclass_by_id","get_dclass_by_name","get_dclass_by_name","get_hash","get_hash","get_keyword","get_keyword","get_next_dclass_id","get_next_dclass_id","get_num_dclasses","get_num_dclasses","get_num_imports","get_num_imports","get_num_keywords","get_num_keywords","get_num_structs","get_num_structs","get_pretty_hash","get_pretty_hash","get_python_import","get_python_import","get_struct","get_struct","has_keyword","has_keyword","into","into","new","new","python_module","semantic_analysis","semantic_analysis","symbols","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","ByName","ByStruct","DCKeyword","DCKeywordInterface","DCKeywordList","DCKeywordListInterface","HistoricalFlag","IdentifyKeyword","KeywordName2Keyword","_get_keyword_list","_get_keyword_list","_get_keywords_by_name_map","_get_keywords_by_name_map","add_keyword","add_keyword","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear_historical_flag","clear_historical_flag","clear_keywords","clear_keywords","compare_with","compare_with","copy_keywords","copy_keywords","default","eq","fmt","fmt","from","from","from","generate_hash","generate_hash","generate_hash","generate_hash","get_historical_flag","get_historical_flag","get_keyword","get_keyword","get_keyword_by_name","get_keyword_by_name","get_name","get_name","get_num_keywords","get_num_keywords","has_keyword","has_keyword","into","into","into","new","new","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","DClass","DClassInterface","FieldId2Field","FieldName2Field","add_class_field","add_class_field","add_parent","add_parent","borrow","borrow_mut","fmt","from","generate_hash","generate_hash","get_constructor","get_constructor","get_dclass_id","get_dclass_id","get_name","get_name","get_num_parents","get_num_parents","get_parent","get_parent","has_constructor","has_constructor","into","new","new","semantic_analysis","semantic_analysis","set_dcfile","set_dcfile","set_dclass_id","set_dclass_id","try_from","try_into","type_id","BinaryLiteral","Blob32T","BlobT","Break","Case","CharT","CharacterLiteral","CloseBraces","CloseBrackets","CloseParenthesis","Colon","Comma","Comment","DCKeyword","DCToken","DClass","DecimalLiteral","Default","Equals","EscapeCharacter","Float32T","Float64T","FloatLiteral","ForwardSlash","From","HexLiteral","Hyphen","Identifier","Import","Int16ArrayT","Int16T","Int32ArrayT","Int32T","Int64T","Int8ArrayT","Int8T","Keyword","Lexer","Newline","OctalLiteral","OpenBraces","OpenBrackets","OpenParenthesis","Percent","Period","Plus","Semicolon","Span","Star","StringLiteral","StringT","Struct","Switch","Typedef","UInt16ArrayT","UInt16T","UInt32ArrayT","UInt32T","UInt32UInt8ArrayT","UInt64T","UInt8ArrayT","UInt8T","ViewSuffix","Whitespace","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","eq","fmt","fmt","from","from","from","into","into","into","into_iter","line","max","min","new","next","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","DCMolecularField","DCMolecularFieldInterface","add_atomic_field","add_atomic_field","borrow","borrow_mut","fmt","from","generate_hash","generate_hash","get_atomic_field","get_atomic_field","get_num_atomics","get_num_atomics","into","new","new","try_from","try_into","type_id","DCNumericRange","DCNumericType","DCNumericTypeInterface","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","contains","from","from","generate_hash","generate_hash","get_divisor","get_divisor","get_modulus","get_modulus","get_range","get_range","has_modulus","has_modulus","has_range","has_range","into","into","is_empty","max","min","new","new","new","new_floating_point_range","new_integer_range","new_unsigned_integer_range","set_divisor","set_divisor","set_modulus","set_modulus","set_range","set_range","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","within_range","within_range","DCParameter","DCParameterInterface","borrow","borrow_mut","fmt","from","generate_hash","generate_hash","get_atomic_field","get_atomic_field","get_default_value","get_default_value","has_default_value","has_default_value","into","new","new","set_default_value","set_default_value","set_identifier","set_identifier","set_type","set_type","try_from","try_into","type_id","parse","DCStruct","borrow","borrow_mut","default","eq","fmt","from","into","new","try_from","try_into","type_id","DCNumber","DCNumberType","DCNumberValueUnion","DCTypeDefinition","DCTypeDefinitionInterface","DCTypeEnum","Float","Int","None","TArray","TBlob","TBlob32","TChar","TFloat32","TFloat64","TInt16","TInt32","TInt64","TInt8","TInvalid","TMethod","TString","TStruct","TUInt16","TUInt32","TUInt64","TUInt8","TVarArray","TVarBlob","TVarBlob32","TVarString","UInt","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","data_type","default","eq","eq","eq","floating_point","fmt","fmt","from","from","from","from","from","generate_hash","generate_hash","get_alias","get_alias","get_dc_type","get_dc_type","get_size","get_size","has_alias","has_alias","integer","into","into","into","into","into","is_float","is_int","is_none","is_u_int","is_variable_length","is_variable_length","new","new","new","new_floating_point","new_integer","new_unsigned_integer","number_type","set_alias","set_alias","size","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unsigned_integer","value","BCHAN_CLIENTS","BCHAN_DBSERVERS","BCHAN_STATESERVERS","CAAddInterest","CAAddInterestMultiple","CAAddPostRemove","CAAddSessionObject","CAClearPostRemoves","CACloseChannel","CADeclareObject","CADrop","CAEject","CAGetNetworkAddress","CAGetNetworkAddressResp","CAOpenChannel","CARemoveInterest","CARemoveSessionObject","CASendDatagram","CASetClientID","CASetFieldsSendable","CASetState","CAUndeclareObject","CHANNEL_MAX","CONTROL_CHANNEL","Channel","ClientAddInterest","ClientAddInterestMultiple","ClientDisconnect","ClientDoneInterestResp","ClientEject","ClientEnterObjectRequired","ClientEnterObjectRequiredOther","ClientEnterObjectRequiredOwner","ClientEnterObjectRequiredOwnerOther","ClientHeartbeat","ClientHello","ClientHelloResp","ClientObjectLeaving","ClientObjectLeavingOwner","ClientObjectLocation","ClientObjectSetField","ClientObjectSetFields","ClientRemoveInterest","DBCreateObject","DBCreateObjectResp","DBObjectDelete","DBObjectDeleteField","DBObjectDeleteFields","DBObjectGetAll","DBObjectGetAllResp","DBObjectGetField","DBObjectGetFieldResp","DBObjectGetFields","DBObjectGetFieldsResp","DBObjectSetField","DBObjectSetFieldIfEmpty","DBObjectSetFieldIfEmptyResp","DBObjectSetFieldIfEquals","DBObjectSetFieldIfEqualsResp","DBObjectSetFields","DBObjectSetFieldsIfEquals","DBObjectSetFieldsIfEqualsResp","DBSSObjectActivateWithDefaults","DBSSObjectActivateWithDefaultsOther","DBSSObjectDeleteDisk","DBSSObjectDeleteFieldDisk","DBSSObjectDeleteFieldsDisk","DBSSObjectGetActivated","DBSSObjectGetActivatedResp","DCFileHash","DCReadError","DCReadResult","DC_MULTIPLE_INHERITANCE","DC_SORT_INHERITANCE_BY_FILE","DC_VIEW_SUFFIXES","DC_VIRTUAL_INHERITANCE","DClassId","DG_SIZE_MAX","DOID_MAX","DatagramIteratorEOF","DatagramOverflow","DgBufferResult","DgError","DgResult","DgSizeTag","DoId","Err","Err","Err","FieldId","FileError","HISTORICAL_DC_KEYWORDS","INVALID_CHANNEL","INVALID_DOID","MAX_PRIME_NUMBERS","MDAddChannel","MDAddPostRemove","MDAddRange","MDClearPostRemoves","MDRemoveChannel","MDRemoveRange","MsgType","Ok","Ok","Ok","ParseError","ParseError","Protocol","ProtocolIter","SSCreateObjectWithRequired","SSCreateObjectWithRequiredOther","SSDeleteAIObjects","SSObjectChangingAI","SSObjectChangingLocation","SSObjectChangingOwner","SSObjectDeleteChildren","SSObjectDeleteFieldRAM","SSObjectDeleteFieldsRAM","SSObjectDeleteRAM","SSObjectDeleteZone","SSObjectDeleteZones","SSObjectEnterAIWithRequired","SSObjectEnterAIWithRequiredOther","SSObjectEnterLocationWithRequired","SSObjectEnterLocationWithRequiredOther","SSObjectEnterOwnerWithRequired","SSObjectEnterOwnerWithRequiredOther","SSObjectGetAI","SSObjectGetAIResp","SSObjectGetAll","SSObjectGetAllResp","SSObjectGetChildCount","SSObjectGetChildCountResp","SSObjectGetChildren","SSObjectGetField","SSObjectGetFieldResp","SSObjectGetFields","SSObjectGetFieldsResp","SSObjectGetLocation","SSObjectGetLocationResp","SSObjectGetOwner","SSObjectGetOwnerResp","SSObjectGetZoneCount","SSObjectGetZoneCountResp","SSObjectGetZoneObjects","SSObjectGetZonesCount","SSObjectGetZonesCountResp","SSObjectGetZonesObjects","SSObjectSetAI","SSObjectSetField","SSObjectSetFields","SSObjectSetLocation","SSObjectSetOwner","ZONE_BITS","ZONE_MAX","Zone","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from","into","into","into","into","into_iter","iter","len","msg_type","next","next_back","nth","size_hint","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id"],"q":[[0,"libdonet"],[17,"libdonet::byte_order"],[20,"libdonet::datagram"],[87,"libdonet::dcarray"],[108,"libdonet::dcatomic"],[128,"libdonet::dcfield"],[209,"libdonet::dcfile"],[279,"libdonet::dckeyword"],[347,"libdonet::dclass"],[385,"libdonet::dclexer"],[486,"libdonet::dcmolecular"],[506,"libdonet::dcnumeric"],[556,"libdonet::dcparameter"],[582,"libdonet::dcparser"],[583,"libdonet::dcstruct"],[595,"libdonet::dctype"],[714,"libdonet::globals"],[918,"alloc::string"],[919,"alloc::vec"],[920,"core::result"],[921,"core::any"],[922,"core::option"],[923,"core::fmt"],[924,"core::fmt"],[925,"alloc::sync"],[926,"core::iter::traits::iterator"]],"d":["Utils for swapping little-endian bytes to the compiling …","Provides structures to write network datagrams and tools …","Data model of the DC Array element, which is a parameter …","Data model for a DC Atomic Field, which represents a remote","Base data model for DC Field elements. Alone, it represents","Root structure that stores the collection of DC elements …","Representation of arbitrary and historical keywords as …","Data model for Distributed Class definitions in the DC …","Definition of the Lexer machine to process raw DC file …","Data model for a DC Molecular field, which represents a …","Structure representing data types supported in the DC …","Data model that represents a single parameter of an atomic …","Definition of the DC language context free grammar for the …","Data model representing a DC Struct element.","Represents all data types supported by the DC language and …","Includes definitions of type aliases for Donet concepts, …","Easy to use interface for the DC file parser. Handles …","Swaps 2 bytes in little endian byte order to big endian. …","Swaps 4 bytes in little endian byte order to big endian. …","Swaps 8 bytes in little endian byte order to big endian. …","","Utility for iterating value by value of a datagram message.","Adds a dclass blob value (binary data) to the end of the …","Adds an unsigned 8-bit integer to the datagram that is …","Reserves an amount of bytes in the datagram buffer.","Adds a 64-bit channel ID to the end of the datagram.","Appends a control header, which is very similar to a …","Adds raw bytes to the datagram via an unsigned 8-bit …","Appends another datagram’s binary data to this datagram.","Adds a 32-bit Distributed Object ID to the end of the …","32-bit IEEE 754 floating point. same bitwise operations.","64-bit IEEE 754 floating point. same bitwise operations.","","","","","Added for convenience, but also better performance than …","Appends a generic header for messages that are to be …","Adds a Datagram / Field length tag to the end of the …","Adds a dclass string value to the end of the datagram. A …","","","","Adds an unsigned 8-bit integer value to the datagram.","Adds a 32-bit zone ID to the end of the datagram.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the number of unread bytes left in the datagram","Calls U::from(self).","Calls U::from(self).","","","","","Reads the next number of bytes in the datagram.","","32-bit IEEE 754 floating point in native endianness.","64-bit IEEE 754 floating point in native endianness.","","","","","Returns the datagram’s message type. Does not advance …","Get the recipient count in a datagram message. Does not …","","","","","","","Manually sets the buffer_offset position.","","Increments the buffer_offset by bytes length. Returns …","Returns the value of self.index in bytes.","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","","","Calls U::from(self).","","","","","","Represents an atomic field of a Distributed Class. This …","","","","","","","Returns the argument unchanged.","","Accumulates the properties of this DC element into the …","","","","","Calls U::from(self).","","","","","","","Enumerator representing the 3 types of fields that inherit …","A field of a Distributed Class. The DCField struct is a …","","","","","","A different enumerator representing DC Field types used …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Accumulates the properties of this DC element into the …","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Data model that provides a high level representation of a …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Accumulates the elements of the DC file into the hash.","","","","","","","","Returns a 32-bit hash index associated with this file. …","","","","","","","","","","","","","","Returns a string with the hash as a pretty format …","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","Performs a semantic analysis on the object and its children","","","","","","","","","","","","","","","This is a flag bitmask for historical keywords. Panda uses …","Represents the two types of inputs that …","A map of key/value pairs mapping keyword names to …","","Returns a clone of this object’s keyword array.","","Returns a clone of this object’s keyword name map.","","","","","","","","","","","","Clears the DCKeywords array, keyword name map, and …","","Compares this Keyword List with another DCKeywordList …","","Overwrites the DCKeywords of this list with the target’s …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","Represents a Distributed Class defined in the DC file. …","","","","","Adds a newly allocated DC field to this class. The field …","","","","","","Returns the argument unchanged.","","Accumulates the properties of this DC element into the …","","","","","","","","","","","","","Calls U::from(self).","","","","Performs a semantic analysis on the object and its …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","An abstract field which provides an interface to access …","","","","","","","Returns the argument unchanged.","","Accumulates the properties of this DC element into the …","","","","","Calls U::from(self).","","","","","","Numeric Range structs are used to represent a range of …","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Represents the type specification of a parameter within an …","","","","","Returns the argument unchanged.","","Accumulates the properties of this DC element into the …","","","","","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Generates the hash for this DC Type element.","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the enum is DCNumberType::Float otherwise …","Returns true if the enum is DCNumberType::Int otherwise …","Returns true if the enum is DCNumberType::None otherwise …","Returns true if the enum is DCNumberType::UInt otherwise …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sent by the client when it’s closing the connection. …","","","","","","","The client should send this message on a regular interval. …","","This is sent by the Client Agent to the client when the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Contains the error value","Contains the error value","Contains the error value","","","","","","","","","","","","","","Contains the success value","Contains the success value","Contains the success value","","","Enumerator for every message type in the Donet network …","An iterator over the variants of Protocol","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Utility for converting protocol enumerator to u16 (MsgType)","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,24,7,24,24,7,7,24,7,24,7,24,7,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,7,24,24,7,24,7,24,7,24,0,0,29,29,29,68,29,68,29,68,29,68,29,68,29,29,68,29,29,29,29,0,0,69,34,34,34,34,34,69,34,69,34,69,34,34,69,34,34,34,34,42,0,0,0,42,43,42,43,0,41,42,43,41,42,43,41,42,43,41,42,43,70,41,70,41,70,41,70,41,70,41,41,42,43,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,70,41,41,42,43,41,42,43,41,42,43,70,41,0,0,0,71,46,71,46,71,46,71,46,71,46,71,46,48,46,48,46,48,48,48,46,48,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,71,46,48,46,48,46,48,71,46,48,48,48,46,48,46,48,46,54,54,0,0,0,0,0,0,0,72,51,72,51,72,51,54,47,51,54,47,51,73,47,72,51,72,51,72,51,51,47,47,51,54,47,51,73,72,47,51,73,47,72,51,72,51,73,47,72,51,72,51,54,47,51,73,72,47,51,54,47,51,54,47,51,54,47,51,0,0,0,0,74,40,74,40,40,40,40,40,74,40,74,40,74,40,74,40,74,40,74,40,74,40,40,74,40,74,40,74,40,74,40,40,40,40,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,55,55,55,55,55,55,55,55,55,0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,57,55,56,57,55,56,55,56,55,56,55,56,55,56,57,55,56,57,55,56,57,56,56,56,57,57,55,56,57,55,56,57,55,56,57,55,56,0,0,75,58,58,58,58,58,75,58,75,58,75,58,58,75,58,58,58,58,0,0,0,60,32,60,32,32,32,32,60,32,76,60,76,60,76,60,76,60,76,60,76,60,60,32,32,32,32,76,60,32,32,32,32,76,60,76,60,76,60,32,60,32,60,32,60,32,76,60,0,0,33,33,33,33,77,33,77,33,77,33,77,33,33,77,33,77,33,77,33,77,33,33,33,33,0,0,45,45,45,45,45,45,45,45,45,45,45,0,0,0,0,0,0,64,64,64,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,64,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,30,59,61,59,64,63,61,30,61,30,63,59,64,78,30,78,30,78,30,78,30,78,30,63,61,30,63,59,64,64,64,64,64,78,30,78,30,59,59,59,59,59,78,30,30,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,61,30,63,59,64,63,59,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,66,66,0,0,0,0,0,3,9,12,0,67,0,0,0,0,25,25,25,25,25,25,0,3,9,12,0,67,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,67,66,25,65,67,66,25,65,25,65,25,65,66,25,67,66,25,65,67,66,25,65,67,66,25,65,65,25,65,0,65,65,65,65,25,65,67,66,25,65,67,66,25,65,67,66,25,65],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[2,[1]]],3],[4,4],[5,5],[6,6],0,0,[[7,[2,[8]]],9],[[7,10],9],[[7,11],12],[[7,13],9],[[7,14],9],[[7,[2,[8]]],9],[[7,7],9],[[7,15],9],[[7,16],9],[[7,17],9],[[7,18],9],[[7,19],9],[[7,20],9],[[7,21],9],[[7,15,22],9],[[7,[2,[13]],13,14],9],[[7,11],9],[[7,23],9],[[7,4],9],[[7,5],9],[[7,6],9],[[7,8],9],[[7,22],9],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[24,11],9],[[],7],[-1,-1,[]],[-1,-1,[]],[7,[[2,[8]]]],[24,11],[-1,-2,[],[]],[-1,-2,[],[]],[[],7],[7,24],[24,10],[24,13],[[24,11],[[2,[8]]]],[24,15],[24,16],[24,17],[24,18],[24,19],[24,20],[24,21],[24,25],[24,8],[24,11],[24,4],[24,5],[24,6],[24,8],[24,22],[[24,11],26],[7,11],[[24,11],9],[24,11],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],0,0,[-1,4,[]],[29,4],[-1,[[31,[30]]],[]],[29,[[31,[30]]]],[-1,[[31,[32]]],[]],[29,[[31,[32]]]],[-1,10,[]],[29,10],[-1,-2,[],[]],[[[31,[30]],[31,[32]]],-1,[]],[[[31,[30]],[31,[32]]],29],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,[[-1,33],26,[]],[[34,33],26],[-1,-2,[],[]],[-1,-2,[],[]],[[34,35],36],[-1,-1,[]],0,0,[[-1,37],[[31,[[39,[[38,[33]]]]]]],[]],[[34,37],[[31,[[39,[[38,[33]]]]]]]],[-1,37,[]],[34,37],[-1,-2,[],[]],[[23,[39,[[38,[40]]]],10],-1,[]],[[23,[39,[[38,[40]]]],10],34],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[41,35],36],[[42,35],36],[[43,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,[-1,[[39,[[38,[40]]]]],[]],[41,[[39,[[38,[40]]]]]],[-1,44,[]],[41,44],[-1,1,[]],[41,1],[-1,10,[]],[41,10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[-1,10,[]],[41,10],[[23,30],-1,[]],[[23,30],41],[[-1,10],26,[]],[[41,10],26],[[-1,[2,[8]]],26,[]],[[41,[2,[8]]],26],[[-1,44],26,[]],[[41,44],26],[[-1,1],26,[]],[[41,1],26],[[-1,30],26,[]],[[41,30],26],[[-1,[39,[[38,[40]]]]],26,[]],[[41,[39,[[38,[40]]]]],26],[[-1,[39,[[38,[45]]]]],26,[]],[[41,[39,[[38,[45]]]]],26],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[[-1,7],10,[]],[[41,7],10],0,0,0,[[-1,40],26,[]],[[46,40],26],[[-1,41],26,[]],[[46,41],26],[[-1,47],26,[]],[[46,47],26],[[-1,48],26,[]],[[46,48],26],[[-1,45],26,[]],[[46,45],26],[[-1,1],[[27,[26,26]]],[]],[[46,1],[[27,[26,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[48,48],[[-1,-2],26,[],[]],[[48,35],36],[[46,35],36],[-1,-1,[]],[-1,-1,[]],0,0,[[-1,37],[[39,[[38,[40]]]]],[]],[[46,37],[[39,[[38,[40]]]]]],[[-1,49],[[39,[[38,[40]]]]],[]],[[46,49],[[39,[[38,[40]]]]]],[[-1,23],[[39,[[38,[40]]]]],[]],[[46,23],[[39,[[38,[40]]]]]],[-1,50,[]],[46,50],[[-1,37],[[39,[47]]],[]],[[46,37],[[39,[47]]]],[-1,49,[]],[46,49],[-1,37,[]],[46,37],[-1,37,[]],[46,37],[-1,37,[]],[46,37],[-1,37,[]],[46,37],[-1,1,[]],[46,1],[[-1,37],48,[]],[[46,37],48],[[-1,37],[[39,[[38,[45]]]]],[]],[[46,37],[[39,[[38,[45]]]]]],[[-1,1],10,[]],[[46,1],10],[-1,-2,[],[]],[-1,-2,[],[]],[[1,[2,[1]]],48],[[],46],0,[-1,[[27,[26,26]]],[]],[46,[[27,[26,26]]]],0,[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,[-1,[[2,[[39,[[38,[47]]]]]]],[]],[51,[[2,[[39,[[38,[47]]]]]]]],[-1,52,[]],[51,52],[[-1,47],[[27,[26,26]]],[]],[[51,47],[[27,[26,26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,26,[]],[47,26],[-1,26,[]],[51,26],[[-1,51],10,[]],[[51,51],10],[[-1,51],26,[]],[[51,51],26],[[],51],[[47,47],10],[[47,35],36],[[51,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,0,0,[-1,53,[]],[47,53],[[-1,37],[[31,[[39,[[38,[47]]]]]]],[]],[[51,37],[[31,[[39,[[38,[47]]]]]]]],[[-1,1],[[31,[[39,[[38,[47]]]]]]],[]],[[51,1],[[31,[[39,[[38,[47]]]]]]]],[-1,1,[]],[47,1],[-1,37,[]],[51,37],[[-1,54],10,[]],[[51,54],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,[31,[53]]],-1,[]],[[],-1,[]],[[1,[31,[53]]],47],[[],51],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],0,0,0,0,[[-1,42],26,[]],[[40,42],26],[[-1,[39,[[38,[40]]]]],26,[]],[[40,[39,[[38,[40]]]]],26],[-1,-2,[],[]],[-1,-2,[],[]],[[40,35],36],[-1,-1,[]],0,0,[-1,[[31,[[39,[[38,[34]]]]]]],[]],[40,[[31,[[39,[[38,[34]]]]]]]],[-1,49,[]],[40,49],[-1,1,[]],[40,1],[-1,37,[]],[40,37],[[-1,37],[[31,[[39,[[38,[40]]]]]]],[]],[[40,37],[[31,[[39,[[38,[40]]]]]]]],[-1,10,[]],[40,10],[-1,-2,[],[]],[23,-1,[]],[23,40],[-1,[[27,[26,26]]],[]],[40,[[27,[26,26]]]],[[-1,[39,[[38,[46]]]]],26,[]],[[40,[39,[[38,[46]]]]],26],[[-1,49],26,[]],[[40,49],26],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[55,55],[56,56],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[55,55],10],[[56,56],10],[[55,35],36],[[56,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[23,57],[57,[[31,[[26,[55,56]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],0,0,[[-1,[39,[[38,[34]]]]],26,[]],[[58,[39,[[38,[34]]]]],26],[-1,-2,[],[]],[-1,-2,[],[]],[[58,35],36],[-1,-1,[]],0,0,[[-1,37],[[31,[[39,[[38,[34]]]]]]],[]],[[58,37],[[31,[[39,[[38,[34]]]]]]]],[-1,37,[]],[58,37],[-1,-2,[],[]],[[23,[39,[[38,[40]]]]],-1,[]],[[23,[39,[[38,[40]]]]],58],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,32],[[-1,-2],26,[],[]],[[32,59],10],[-1,-1,[]],[-1,-1,[]],0,0,[-1,4,[]],[60,4],[-1,17,[]],[60,17],[-1,32,[]],[60,32],[-1,10,[]],[60,10],[-1,10,[]],[60,10],[-1,-2,[],[]],[-1,-2,[],[]],[32,10],0,0,[61,-1,[]],[61,60],[[],32],[[17,17],32],[[20,20],32],[[6,6],32],[[-1,4],[[27,[26,26]]],[]],[[60,4],[[27,[26,26]]]],[[-1,17],[[27,[26,26]]],[]],[[60,17],[[27,[26,26]]]],[[-1,32],[[27,[26,26]]],[]],[[60,32],[[27,[26,26]]]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[[-1,[2,[8]],6],[[27,[26,26]]],[]],[[60,[2,[8]],6],[[27,[26,26]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[33,35],36],[-1,-1,[]],0,0,[-1,[[39,[34]]],[]],[33,[[39,[34]]]],[-1,[[2,[8]]],[]],[33,[[2,[8]]]],[-1,10,[]],[33,10],[-1,-2,[],[]],[[[39,[34]],30,[31,[23]]],-1,[]],[[[39,[34]],30,[31,[23]]],33],[[-1,[2,[8]]],[[27,[26,26]]],[]],[[33,[2,[8]]],[[27,[26,26]]]],[[-1,23],[[27,[26,26]]],[]],[[33,23],[[27,[26,26]]]],[[-1,30],[[27,[26,26]]],[]],[[33,30],[[27,[26,26]]]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,[[27,[[39,[[38,[46]]]],[26,[[31,[[26,[55,56]]]],23]]]]],62],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],45],[[45,45],10],[[45,35],36],[-1,-1,[]],[-1,-2,[],[]],[[],45],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[61,61],[30,30],[63,63],[59,59],[64,64],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],0,[[],59],[[61,61],10],[[59,59],10],[[64,64],10],0,[[61,35],36],[[30,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,0,[-1,[[27,[1,26]]],[]],[30,[[27,[1,26]]]],[-1,61,[]],[30,61],[-1,11,[]],[30,11],[-1,10,[]],[30,10],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[64,10],[64,10],[64,10],[64,10],[-1,10,[]],[30,10],[[],-1,[]],[[],30],[[],59],[17,59],[20,59],[6,59],0,[[-1,1],26,[]],[[30,1],26],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,25],[65,65],[[-1,-2],26,[],[]],[[-1,-2],26,[],[]],[[66,66],10],[[25,25],10],[[67,35],36],[[66,35],36],[[25,35],36],[[65,35],36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],65],[65,37],[25,14],[65,31],[65,31],[[65,37],31],[65,[[26,[37,[31,[37]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,[[27,[-2]]],[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,28,[]]],"c":[],"p":[[3,"String",918],[3,"Vec",919],[6,"DCReadResult",714],[15,"u16"],[15,"u32"],[15,"u64"],[3,"Datagram",20],[15,"u8"],[6,"DgResult",714],[15,"bool"],[6,"DgSizeTag",714],[6,"DgBufferResult",714],[6,"Channel",714],[6,"MsgType",714],[6,"DoId",714],[15,"f32"],[15,"f64"],[15,"i16"],[15,"i32"],[15,"i64"],[15,"i8"],[6,"Zone",714],[15,"str"],[3,"DatagramIterator",20],[4,"Protocol",714],[15,"tuple"],[4,"Result",920],[3,"TypeId",921],[3,"DCArrayType",87],[3,"DCTypeDefinition",595],[4,"Option",922],[3,"DCNumericRange",506],[3,"DCParameter",556],[3,"DCAtomicField",108],[3,"Formatter",923],[6,"Result",923],[15,"usize"],[3,"Mutex",924],[3,"Arc",925],[3,"DClass",347],[3,"DCField",128],[4,"ClassField",128],[4,"StructField",128],[6,"FieldId",714],[3,"DCStruct",583],[3,"DCFile",209],[3,"DCKeyword",279],[3,"DCImport",209],[6,"DClassId",714],[6,"DCFileHash",714],[3,"DCKeywordList",279],[6,"KeywordName2Keyword",279],[6,"HistoricalFlag",279],[4,"IdentifyKeyword",279],[4,"DCToken",385],[3,"Span",385],[3,"Lexer",385],[3,"DCMolecularField",486],[3,"DCNumber",595],[3,"DCNumericType",506],[4,"DCTypeEnum",595],[8,"Iterator",926],[19,"DCNumberValueUnion",595],[4,"DCNumberType",595],[3,"ProtocolIter",714],[4,"DgError",714],[4,"DCReadError",714],[8,"DCArrayTypeInterface",87],[8,"DCAtomicFieldInterface",108],[8,"DCFieldInterface",128],[8,"DCFileInterface",209],[8,"DCKeywordListInterface",279],[8,"DCKeywordInterface",279],[8,"DClassInterface",347],[8,"DCMolecularFieldInterface",486],[8,"DCNumericTypeInterface",506],[8,"DCParameterInterface",556],[8,"DCTypeDefinitionInterface",595]],"b":[]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/docs/src/libdonet/dcatomic.rs.html b/docs/src/libdonet/dcatomic.rs.html index fc1352b..f95475c 100644 --- a/docs/src/libdonet/dcatomic.rs.html +++ b/docs/src/libdonet/dcatomic.rs.html @@ -79,6 +79,17 @@ 77 78 79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90

// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -101,10 +112,11 @@
 
 use crate::dcfield::{DCField, DCFieldInterface};
 use crate::dclass::DClass;
-use crate::dcparameter::DCParameter;
+use crate::dcparameter::{DCParameter, DCParameterInterface};
 use crate::dctype::{DCTypeDefinition, DCTypeDefinitionInterface};
 use crate::hashgen::DCHashGenerator;
-use std::sync::{Arc, Mutex};
+use std::ops::Deref;
+use std::sync::{Arc, Mutex, MutexGuard};
 
 /// Represents an atomic field of a Distributed Class.
 /// This defines the interface to a DClass object, and is
@@ -138,10 +150,20 @@
         }
     }
 
-    fn generate_hash(&self, hashgen: &mut DCHashGenerator) {
+    /// Accumulates the properties of this DC element into the file hash.
+    fn generate_hash(&self, hashgen: &mut DCHashGenerator) {
         self.base_field.generate_hash(hashgen);
-        // TODO!
-    }
+
+        hashgen.add_int(self.elements.len().try_into().unwrap());
+
+        for param_ptr in &self.elements {
+            let new_ptr: Arc<Mutex<DCParameter>> = param_ptr.clone();
+            let mutex_ref: &Mutex<DCParameter> = new_ptr.deref();
+            let param: MutexGuard<'_, DCParameter> = mutex_ref.lock().unwrap();
+
+            param.generate_hash(hashgen);
+        }
+    }
 
     fn get_num_elements(&self) -> usize {
         self.elements.len()
diff --git a/docs/src/libdonet/dcfield.rs.html b/docs/src/libdonet/dcfield.rs.html
index a07d388..e58ce4e 100644
--- a/docs/src/libdonet/dcfield.rs.html
+++ b/docs/src/libdonet/dcfield.rs.html
@@ -265,6 +265,16 @@
 263
 264
 265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
 
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -324,7 +334,7 @@
 /// is always implemented as a remote procedure call (RPC). Unlike
 /// attribute fields, atomic fields cannot be declared within structs.
 ///
-/// DC Molecular Fields represent a collection of DC Attribute or
+/// DC Molecular Fields represent a collection of one or more
 /// DC Atomic Fields as one field under one identifier. The parameters
 /// of a molecular field are the parameters of all the fields it
 /// represents, joined together in the order in which they were declared
@@ -349,6 +359,7 @@
     fn generate_hash(&self, hashgen: &mut DCHashGenerator);
 
     fn get_field_id(&self) -> globals::FieldId;
+    fn get_field_name(&self) -> String;
     fn get_dclass(&self) -> Arc<Mutex<DClass>>;
 
     fn set_field_id(&mut self, id: globals::FieldId);
@@ -408,7 +419,8 @@
         }
     }
 
-    fn generate_hash(&self, hashgen: &mut DCHashGenerator) {
+    /// Accumulates the properties of this DC element into the file hash.
+    fn generate_hash(&self, hashgen: &mut DCHashGenerator) {
         self.keyword_list.generate_hash(hashgen);
         self.field_type.generate_hash(hashgen);
 
@@ -431,17 +443,24 @@
         self.field_id
     }
 
+    #[inline(always)]
+    fn get_field_name(&self) -> String {
+        self.field_name.clone()
+    }
+
     fn get_dclass(&self) -> Arc<Mutex<DClass>> {
         assert!(self.parent_is_dclass);
         // clone option to unwrap w/o move, and clone Arc to return
         self.dclass.clone().unwrap().clone()
     }
 
-    fn set_field_id(&mut self, id: globals::FieldId) {
+    #[inline(always)]
+    fn set_field_id(&mut self, id: globals::FieldId) {
         self.field_id = id
     }
 
-    fn set_field_name(&mut self, name: String) {
+    #[inline(always)]
+    fn set_field_name(&mut self, name: String) {
         self.field_name = name
     }
 
@@ -457,7 +476,8 @@
         self.default_value_stale = false;
     }
 
-    fn set_bogus_field(&mut self, is_bogus: bool) {
+    #[inline(always)]
+    fn set_bogus_field(&mut self, is_bogus: bool) {
         self.bogus_field = is_bogus
     }
 
diff --git a/docs/src/libdonet/dcfile.rs.html b/docs/src/libdonet/dcfile.rs.html
index 62177d1..b0efa10 100644
--- a/docs/src/libdonet/dcfile.rs.html
+++ b/docs/src/libdonet/dcfile.rs.html
@@ -226,6 +226,24 @@
 224
 225
 226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
 
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -288,6 +306,7 @@
 pub trait DCFileInterface {
     fn get_hash(&mut self) -> globals::DCFileHash;
     fn generate_hash(&mut self, hashgen: &mut DCHashGenerator);
+    fn semantic_analysis(&self) -> Result<(), ()>;
     fn get_pretty_hash(&mut self) -> String;
     fn add_field(&mut self, field: DCField); // assigns unique ID for the whole DC file
 
@@ -361,6 +380,23 @@
         }
     }
 
+    /// Performs a semantic analysis on the object and its children
+    /// DC elements. In Panda, this is done on the go as you build the
+    /// DC file tree. Due to how we build it in memory, (and the fact
+    /// that we link all the objects together until we reduce to the
+    /// root production in the CFG) we have to perform this analysis
+    /// until the very end when all the elements are in the DCF struct.
+    fn semantic_analysis(&self) -> Result<(), ()> {
+        // Run semantic analysis chain of all distributed class objects.
+        // This should include semantic analysis for DC fields as well.
+        for dclass in &self.dclasses {
+            let locked_dclass: MutexGuard<'_, DClass> = dclass.lock().unwrap();
+            locked_dclass.semantic_analysis()?;
+        }
+        // TODO!
+        Ok(())
+    }
+
     /// Returns a string with the hash as a pretty format hexadecimal.
     fn get_pretty_hash(&mut self) -> String {
         format!("0x{:0width$x}", self.get_hash(), width = 8) // 2 hex / byte = 8 hex
diff --git a/docs/src/libdonet/dclass.rs.html b/docs/src/libdonet/dclass.rs.html
index 8622f4f..05b190e 100644
--- a/docs/src/libdonet/dclass.rs.html
+++ b/docs/src/libdonet/dclass.rs.html
@@ -142,6 +142,57 @@
 140
 141
 142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
 
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -164,6 +215,8 @@
 
 use crate::dcatomic::{DCAtomicField, DCAtomicFieldInterface};
 use crate::dcfield::{ClassField, DCFieldInterface};
+use crate::dcfile::DCFile;
+use crate::dcmolecular::DCMolecularFieldInterface;
 use crate::globals;
 use crate::hashgen::DCHashGenerator;
 use multimap::MultiMap;
@@ -173,9 +226,15 @@
 pub type FieldName2Field = MultiMap<String, Arc<Mutex<ClassField>>>;
 pub type FieldId2Field = MultiMap<globals::FieldId, Arc<Mutex<ClassField>>>;
 
-#[derive(Debug)]
+/// Represents a Distributed Class defined in the DC file.
+/// Contains a map of DC Fields, as well as atomic and
+/// molecular fields that are declared within the class.
+/// Also stores other properties such as its hierarchy.
+#[derive(Debug)]
 pub struct DClass {
-    class_name: String,
+    dcfile: Arc<Mutex<DCFile>>, // read comment below. should reference REAL dcf by parse end.
+    dcf_assigned: bool,         // due to how the parser works, we assign it 'til the end.
+    class_name: String,
     class_id: globals::DClassId,
     is_struct: bool,
     is_bogus_class: bool,
@@ -190,8 +249,11 @@
 pub trait DClassInterface {
     fn new(name: &str) -> Self;
     fn generate_hash(&mut self, hashgen: &mut DCHashGenerator);
+    fn semantic_analysis(&self) -> Result<(), ()>;
 
-    fn set_parent(&mut self, parent: Arc<Mutex<DClass>>);
+    fn set_dcfile(&mut self, dcf: Arc<Mutex<DCFile>>);
+    fn add_parent(&mut self, parent: Arc<Mutex<DClass>>);
+    fn add_class_field(&mut self, field: ClassField);
 
     fn get_name(&mut self) -> String;
     fn get_dclass_id(&mut self) -> globals::DClassId;
@@ -205,6 +267,8 @@
 impl DClassInterface for DClass {
     fn new(name: &str) -> Self {
         DClass {
+            dcfile: Arc::new(Mutex::new(DCFile::new())),
+            dcf_assigned: false,
             class_name: name.to_owned(),
             class_id: 0, // assigned later
             is_struct: false,
@@ -218,7 +282,8 @@
         }
     }
 
-    fn generate_hash(&mut self, hashgen: &mut DCHashGenerator) {
+    /// Accumulates the properties of this DC element into the file hash.
+    fn generate_hash(&mut self, hashgen: &mut DCHashGenerator) {
         hashgen.add_string(self.get_name());
         hashgen.add_int(self.get_num_parents().try_into().unwrap());
 
@@ -246,41 +311,78 @@
             match &field.deref() {
                 ClassField::Field(field) => field.generate_hash(hashgen),
                 ClassField::Atomic(atomic) => atomic.generate_hash(hashgen),
-                ClassField::Molecular(_) => todo!(),
+                ClassField::Molecular(molecular) => molecular.generate_hash(hashgen),
             }
         }
     }
 
-    fn set_parent(&mut self, parent: Arc<Mutex<DClass>>) {
+    /// Performs a semantic analysis on the object and its children.
+    fn semantic_analysis(&self) -> Result<(), ()> {
+        assert!(
+            self.dcf_assigned,
+            "No DC file pointer found in '{}' dclass!",
+            self.class_name,
+        );
+        // TODO!
+        Ok(())
+    }
+
+    fn set_dcfile(&mut self, dcf: Arc<Mutex<DCFile>>) {
+        assert!(
+            !self.dcf_assigned,
+            "Tried to reassign DC file pointer to '{}' class",
+            self.class_name
+        );
+        self.dcfile = dcf;
+        self.dcf_assigned = true;
+    }
+
+    #[inline(always)]
+    fn add_parent(&mut self, parent: Arc<Mutex<DClass>>) {
         self.class_parents.push(parent);
     }
 
-    fn get_name(&mut self) -> String {
+    /// Adds a newly allocated DC field to this class. The field structure
+    /// in memory is moved into ownership of this class structure, and is
+    /// wrapped in a Mutex and an Arc pointer to pass references to other
+    /// elements, such as molecular fields.
+    fn add_class_field(&mut self, field: ClassField) {
+        self.fields.push(Arc::new(Mutex::new(field)));
+    }
+
+    #[inline(always)]
+    fn get_name(&mut self) -> String {
         self.class_name.clone()
     }
 
-    fn get_dclass_id(&mut self) -> globals::DClassId {
+    #[inline(always)]
+    fn get_dclass_id(&mut self) -> globals::DClassId {
         self.class_id
     }
 
-    fn set_dclass_id(&mut self, id: globals::DClassId) {
+    #[inline(always)]
+    fn set_dclass_id(&mut self, id: globals::DClassId) {
         self.class_id = id;
     }
 
-    fn get_num_parents(&mut self) -> usize {
+    #[inline(always)]
+    fn get_num_parents(&mut self) -> usize {
         self.class_parents.len()
     }
 
-    fn get_parent(&mut self, index: usize) -> Option<Arc<Mutex<DClass>>> {
+    #[inline(always)]
+    fn get_parent(&mut self, index: usize) -> Option<Arc<Mutex<DClass>>> {
         // copy the reference inside the option instead of a reference to the reference
         self.class_parents.get(index).cloned()
     }
 
-    fn has_constructor(&mut self) -> bool {
+    #[inline(always)]
+    fn has_constructor(&mut self) -> bool {
         self.constructor.is_some()
     }
 
-    fn get_constructor(&mut self) -> Option<Arc<Mutex<DCAtomicField>>> {
+    #[inline(always)]
+    fn get_constructor(&mut self) -> Option<Arc<Mutex<DCAtomicField>>> {
         self.constructor.clone()
     }
 }
diff --git a/docs/src/libdonet/dcmolecular.rs.html b/docs/src/libdonet/dcmolecular.rs.html
index 0b5dfd5..f7b5f22 100644
--- a/docs/src/libdonet/dcmolecular.rs.html
+++ b/docs/src/libdonet/dcmolecular.rs.html
@@ -26,6 +26,66 @@
 24
 25
 26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
 
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -46,10 +106,70 @@
 //! Data model for a DC Molecular field, which represents
 //! a form of a field 'alias' for a collection of fields.
 
-use crate::dcfield::DCField;
+use crate::dcatomic::{DCAtomicField, DCAtomicFieldInterface};
+use crate::dcfield::{DCField, DCFieldInterface};
+use crate::dclass::DClass;
+use crate::dctype::{DCTypeDefinition, DCTypeDefinitionInterface};
+use crate::hashgen::DCHashGenerator;
+use std::ops::Deref;
+use std::sync::{Arc, Mutex, MutexGuard};
 
-#[derive(Debug)]
+/// An abstract field which provides an interface to access
+/// multiple atomic fields under one field and one identifier.
+#[derive(Debug)]
 pub struct DCMolecularField {
     base_field: DCField,
+    atomic_fields: Vec<Arc<Mutex<DCAtomicField>>>,
+}
+
+pub trait DCMolecularFieldInterface {
+    fn new(name: &str, parent: Arc<Mutex<DClass>>) -> Self;
+    fn generate_hash(&self, hashgen: &mut DCHashGenerator);
+
+    fn add_atomic_field(&mut self, atomic_ptr: Arc<Mutex<DCAtomicField>>);
+
+    fn get_num_atomics(&self) -> usize;
+    fn get_atomic_field(&self, index: usize) -> Option<Arc<Mutex<DCAtomicField>>>;
+}
+
+impl DCMolecularFieldInterface for DCMolecularField {
+    fn new(name: &str, parent: Arc<Mutex<DClass>>) -> Self {
+        Self {
+            base_field: {
+                let mut new_field = DCField::new(name, DCTypeDefinition::new());
+                new_field.set_parent_dclass(parent);
+                new_field
+            },
+            atomic_fields: vec![],
+        }
+    }
+
+    /// Accumulates the properties of this DC element into the file hash.
+    fn generate_hash(&self, hashgen: &mut DCHashGenerator) {
+        self.base_field.generate_hash(hashgen);
+
+        hashgen.add_int(self.atomic_fields.len().try_into().unwrap());
+
+        for atomic_ptr in &self.atomic_fields {
+            let new_ptr: Arc<Mutex<DCAtomicField>> = atomic_ptr.clone();
+            let mutex_ref: &Mutex<DCAtomicField> = new_ptr.deref();
+            let atomic_field: MutexGuard<'_, DCAtomicField> = mutex_ref.lock().unwrap();
+
+            atomic_field.generate_hash(hashgen);
+        }
+    }
+
+    fn add_atomic_field(&mut self, atomic_ptr: Arc<Mutex<DCAtomicField>>) {
+        self.atomic_fields.push(atomic_ptr);
+    }
+
+    #[inline(always)]
+    fn get_num_atomics(&self) -> usize {
+        self.atomic_fields.len()
+    }
+
+    fn get_atomic_field(&self, index: usize) -> Option<Arc<Mutex<DCAtomicField>>> {
+        self.atomic_fields.get(index).cloned()
+    }
 }
 
\ No newline at end of file diff --git a/docs/src/libdonet/dcparameter.rs.html b/docs/src/libdonet/dcparameter.rs.html index e4eceb3..19fd763 100644 --- a/docs/src/libdonet/dcparameter.rs.html +++ b/docs/src/libdonet/dcparameter.rs.html @@ -22,6 +22,84 @@ 20 21 22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -42,6 +120,84 @@
 //! Data model that represents a single parameter of an atomic
 //! field, which together form a RPC method signature.
 
+use crate::dcatomic::DCAtomicField;
+use crate::dctype::{DCTypeDefinition, DCTypeDefinitionInterface};
+use crate::hashgen::DCHashGenerator;
+use std::sync::Arc;
+
+/// Represents the type specification of a parameter within an atomic field.
 #[derive(Debug)]
-pub struct DCParameter {}
+pub struct DCParameter {
+    parent: Arc<DCAtomicField>,
+    base_type: DCTypeDefinition,
+    identifier: String,
+    type_alias: String,
+    default_value: Vec<u8>,
+    has_default_value: bool,
+}
+
+pub trait DCParameterInterface {
+    fn new(method: Arc<DCAtomicField>, dtype: DCTypeDefinition, name: Option<&str>) -> Self;
+    fn generate_hash(&self, hashgen: &mut DCHashGenerator);
+
+    fn get_atomic_field(&self) -> Arc<DCAtomicField>;
+    fn has_default_value(&self) -> bool;
+    fn get_default_value(&self) -> Vec<u8>;
+
+    fn set_type(&mut self, dtype: DCTypeDefinition) -> Result<(), ()>;
+    fn set_identifier(&mut self, name: &str) -> Result<(), ()>;
+    fn set_default_value(&mut self, v: Vec<u8>) -> Result<(), ()>;
+}
+
+impl DCParameterInterface for DCParameter {
+    fn new(method: Arc<DCAtomicField>, dtype: DCTypeDefinition, name: Option<&str>) -> Self {
+        Self {
+            parent: method,
+            base_type: dtype,
+            identifier: match name {
+                Some(n) => n.to_owned(),
+                None => String::new(),
+            },
+            type_alias: String::new(),
+            default_value: vec![],
+            has_default_value: false,
+        }
+    }
+
+    /// Accumulates the properties of this DC element into the file hash.
+    fn generate_hash(&self, hashgen: &mut DCHashGenerator) {
+        self.base_type.generate_hash(hashgen);
+    }
+
+    #[inline(always)]
+    fn get_atomic_field(&self) -> Arc<DCAtomicField> {
+        self.parent.clone() // clone new arc pointer
+    }
+
+    #[inline(always)]
+    fn has_default_value(&self) -> bool {
+        self.has_default_value
+    }
+
+    #[inline(always)]
+    fn get_default_value(&self) -> Vec<u8> {
+        self.default_value.clone()
+    }
+
+    fn set_type(&mut self, dtype: DCTypeDefinition) -> Result<(), ()> {
+        self.base_type = dtype;
+        Ok(())
+    }
+
+    fn set_identifier(&mut self, name: &str) -> Result<(), ()> {
+        self.identifier = name.to_owned();
+        Ok(())
+    }
+
+    fn set_default_value(&mut self, v: Vec<u8>) -> Result<(), ()> {
+        self.default_value = v;
+        self.has_default_value = true;
+        Ok(())
+    }
+}
 
\ No newline at end of file diff --git a/docs/src/libdonet/dcparser.rs.html b/docs/src/libdonet/dcparser.rs.html index 8a932e6..e09fc2b 100644 --- a/docs/src/libdonet/dcparser.rs.html +++ b/docs/src/libdonet/dcparser.rs.html @@ -891,6 +891,15 @@ 889 890 891 +892 +893 +894 +895 +896 +897 +898 +899 +900
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -931,6 +940,7 @@
 use crate::dclexer::{DCToken, Span};
 use crate::dcstruct;
 use plex::parser;
+use std::sync::{Arc, Mutex};
 
 /* To write the DC file elements to memory just as Panda and Astron do, I
  * initially stored the DCFile struct on static memory as mutable. This required
@@ -973,33 +983,40 @@
     }
 
     // root production of the grammar
-    dc_file: DCFile {
+    dc_file: Arc<Mutex<DCFile>> {
         type_declarations[tds] => {
-            let mut dc_file: DCFile = DCFile::new();
+
+            // Allocates a DC File struct on the heap; Wrapped in a Mutex for mutability.
+            let dc_file: Arc<Mutex<DCFile>> = Arc::new(Mutex::new(DCFile::new()));
 
             for type_declaration in tds {
                 match type_declaration {
                     TypeDeclaration::PythonImport(imports) => {
                         for import in imports {
-                            dc_file.add_python_import(import);
+                            dc_file.lock().unwrap().add_python_import(import);
                         }
                     },
                     TypeDeclaration::KeywordType(keyword) => {
-                        dc_file.add_keyword(keyword);
+                        dc_file.lock().unwrap().add_keyword(keyword);
                     },
                     TypeDeclaration::StructType(_) => {},
                     TypeDeclaration::SwitchType(_) => {},
                     TypeDeclaration::DClassType(mut dclass) => {
                         use dclass::DClassInterface;
 
-                        let next_class_id: usize = dc_file.get_num_dclasses();
+                        dclass.set_dcfile(dc_file.clone());
+
+                        let next_class_id: usize = dc_file.lock().unwrap().get_num_dclasses();
                         dclass.set_dclass_id(next_class_id.try_into().unwrap());
 
-                        dc_file.add_dclass(dclass);
+                        dc_file.lock().unwrap().add_dclass(dclass);
                     },
                     TypeDeclaration::TypedefType(_) => {},
                 }
             }
+            // TODO: maybe properly handle semantic errors in the future
+            assert!(dc_file.lock().unwrap().semantic_analysis().is_ok());
+
             dc_file
         },
     }
@@ -1576,19 +1593,20 @@
 
 pub fn parse<I: Iterator<Item = (DCToken, Span)>>(
     i: I,
-) -> Result<DCFile, (Option<(DCToken, Span)>, &'static str)> {
+) -> Result<Arc<Mutex<DCFile>>, (Option<(DCToken, Span)>, &'static str)> {
     parse_(i)
 }
 
 #[cfg(test)]
 mod unit_testing {
     use super::parse;
+    use super::{Arc, Mutex};
     use crate::dcfile::*;
     use crate::dclexer::Lexer;
 
-    fn parse_dcfile_string(input: &str) -> DCFile {
+    fn parse_dcfile_string(input: &str) -> Arc<Mutex<DCFile>> {
         let lexer = Lexer::new(input).inspect(|tok| eprintln!("token: {:?}", tok));
-        let dc_file: DCFile = parse(lexer).unwrap();
+        let dc_file: Arc<Mutex<DCFile>> = parse(lexer).unwrap();
         eprintln!("{:#?}", dc_file); // pretty print DC element tree to stderr
         dc_file
     }
@@ -1604,14 +1622,14 @@
                               * that may be lexed as tokens other than Id/Module.
                               */
                              from db.char import DistributedDonut\n";
-        let mut dc_file = parse_dcfile_string(dc_file);
+        let dc_file = parse_dcfile_string(dc_file);
 
         let expected_num_imports: usize = 10;
         let mut imports: Vec<DCImport> = vec![];
-        assert_eq!(dc_file.get_num_imports(), expected_num_imports);
+        assert_eq!(dc_file.lock().unwrap().get_num_imports(), expected_num_imports);
 
         for i in 0..expected_num_imports {
-            imports.push(dc_file.get_python_import(i));
+            imports.push(dc_file.lock().unwrap().get_python_import(i));
         }
 
         assert_eq!(imports[0].python_module, "example_views");
diff --git a/docs/src/libdonet/globals.rs.html b/docs/src/libdonet/globals.rs.html
index 26fc211..3cb5cc7 100644
--- a/docs/src/libdonet/globals.rs.html
+++ b/docs/src/libdonet/globals.rs.html
@@ -364,6 +364,7 @@
 362
 363
 364
+365
 
// DONET SOFTWARE
 // Copyright (c) 2024, Donet Authors.
 //
@@ -425,6 +426,7 @@
 
 cfg_if! {
     if #[cfg(feature = "dcfile")] {
+        use std::sync::{Arc, Mutex};
 
         // DC File Constants
         pub static HISTORICAL_DC_KEYWORDS: &[&str] = &[
@@ -445,7 +447,7 @@
             ParseError(ParseError),
             FileError(std::io::Error),
         }
-        pub type DCReadResult = Result<dcfile::DCFile, DCReadError>;
+        pub type DCReadResult = Result<Arc<Mutex<dcfile::DCFile>>, DCReadError>;
     }
 }
 
diff --git a/docs/src/libdonet/lib.rs.html b/docs/src/libdonet/lib.rs.html
index 054d2e1..713e1fa 100644
--- a/docs/src/libdonet/lib.rs.html
+++ b/docs/src/libdonet/lib.rs.html
@@ -171,6 +171,7 @@
 169
 170
 171
+172
 
//! DONET SOFTWARE
 //!
 //! Copyright (c) 2024, Donet Authors.
@@ -289,10 +290,10 @@
 ///
 /// let dc_read: DCReadResult = read_dc_files(vec![dc_file.into()]);
 ///
-/// if let Ok(mut dc_file) = dc_read {
-///     println!("{}", dc_file.get_pretty_hash()); // Print the DC File Hash
+/// if let Ok(dc_file) = dc_read {
+///     println!("{}", dc_file.lock().unwrap().get_pretty_hash()); // Print the DC File Hash
 ///     
-///     let avatar_class: Arc<Mutex<DClass>> = dc_file.get_dclass_by_id(3);
+///     let avatar_class: Arc<Mutex<DClass>> = dc_file.lock().unwrap().get_dclass_by_id(3);
 ///     let mut locked_class: MutexGuard<'_, DClass> = avatar_class.lock().unwrap();
 ///
 ///     println!("{}", locked_class.get_name());
@@ -312,6 +313,7 @@
     use crate::dcparser::parse;
     use std::fs::File;
     use std::io::Read;
+    use std::sync::{Arc, Mutex};
 
     let mut file_results: Vec<Result<File, std::io::Error>> = vec![];
     let mut lexer_input: String = String::new();
@@ -334,7 +336,7 @@
     }
 
     let lexer: Lexer<'_> = Lexer::new(&lexer_input);
-    let res: Result<dcfile::DCFile, globals::ParseError> = parse(lexer);
+    let res: Result<Arc<Mutex<dcfile::DCFile>>, globals::ParseError> = parse(lexer);
 
     if let Ok(res_ok) = res {
         Ok(res_ok)
diff --git a/docs/trait.impl/core/fmt/trait.Debug.js b/docs/trait.impl/core/fmt/trait.Debug.js
index fc761b3..0747a0a 100644
--- a/docs/trait.impl/core/fmt/trait.Debug.js
+++ b/docs/trait.impl/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"libdonet":[["impl Debug for DCKeywordList"],["impl Debug for DCStruct"],["impl Debug for StructField"],["impl Debug for DCFile"],["impl Debug for DCToken"],["impl Debug for DCMolecularField"],["impl Debug for DCImport"],["impl Debug for DCTypeEnum"],["impl Debug for DCTypeDefinition"],["impl Debug for DClass"],["impl Debug for DCParameter"],["impl Debug for DCReadError"],["impl Debug for DCKeyword"],["impl Debug for Protocol"],["impl Debug for DCField"],["impl Debug for ProtocolIter"],["impl Debug for DCAtomicField"],["impl Debug for ClassField"],["impl Debug for Span"],["impl Debug for DgError"]]
+"libdonet":[["impl Debug for DCKeywordList"],["impl Debug for DCStruct"],["impl Debug for StructField"],["impl Debug for DCFile"],["impl Debug for DCToken"],["impl Debug for DCImport"],["impl Debug for DCTypeEnum"],["impl Debug for DCTypeDefinition"],["impl Debug for DClass"],["impl Debug for DCReadError"],["impl Debug for DCMolecularField"],["impl Debug for DCKeyword"],["impl Debug for Protocol"],["impl Debug for DCField"],["impl Debug for ProtocolIter"],["impl Debug for DCAtomicField"],["impl Debug for ClassField"],["impl Debug for Span"],["impl Debug for DCParameter"],["impl Debug for DgError"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/trait.impl/libdonet/dcmolecular/trait.DCMolecularFieldInterface.js b/docs/trait.impl/libdonet/dcmolecular/trait.DCMolecularFieldInterface.js
new file mode 100644
index 0000000..45e99b1
--- /dev/null
+++ b/docs/trait.impl/libdonet/dcmolecular/trait.DCMolecularFieldInterface.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"libdonet":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/trait.impl/libdonet/dcparameter/trait.DCParameterInterface.js b/docs/trait.impl/libdonet/dcparameter/trait.DCParameterInterface.js
new file mode 100644
index 0000000..45e99b1
--- /dev/null
+++ b/docs/trait.impl/libdonet/dcparameter/trait.DCParameterInterface.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"libdonet":[]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file