In order to represent data, ODS uses Tags. In order to save data to a file/memory, you need to create a tag to wrap that data.
Tag Types
A tag for every primary data type exists (plus a few advanced one.) While similar for the most part, there can be some variation in the name of tags for each implementation of ODS. Below is a table with all of the names.
Java
C#
Rust
StringTag
StringTag
StringTag
IntegerTag
IntegerTag
IntegerTag
FloatTag
FloatTag
FloatTag
DoubleTag
DoubleTag
DoubleTag
ShortTag
ShortTag
ShortTag
LongTag
LongTag
LongTag
ByteTag
ByteTag
ByteTag
ListTag
ListTag
VectorTag
MapTag
DictionaryTag
N/A
ObjectTag
ObjectTag
ObjectTag
Compressed Object
Compressed Object
N/A
Creating a Tag
Creating a tag is a very simple process. All you need to do is construct that tag and provide it with the name and the value of the tag.
Names like "StringTag" are just a type definitions in the Rust implementation. To understand how Rust Tags work internally, please view the Rust specific documentation. Note: This information is not important to know to use the library
use object_data_structure::tags::general::{StringTag}letmut string_tag:StringTag= StringTag::new("MyString".to_string(), "My Value!".to_string());
The code above will create a new StringTag for you to use. All of the other tags have the exact same syntax for creating them. It is the name followed by the value.
Saving Tags
ODS allows you to save a list of tags to a file (or the memory buffer). When using the save method, the file or buffer is overwritten causing all data already there to be deleted. (If the file does not exist, ODS will automatically create it.)
letmut ods =ObjectDataStructure::new_file(PathBuf::from("./file.ods"));letmut string_tag:StringTag=StringTag::new("MyString".to_string(), "My Value!".to_string());ods.append(string_tag);
You can also use appendAll to append a list of tags to the end of the file/buffer.
Additional Notes
Utility methods and macros exist in the different implementations to make it easier (to an extent) to create tags.
In Java you can use the ODS utility class to wrap supported data types into Tags. (This can also serialize classes into ObjectTags. See the serialization section for more info).
In C# you can use the ODSUtil utility class to wrap supported data types into Tags. (This can also serialize classes into ObjectTags. See the serialization section for more info).
Due to some of the limitations of C# generics, this method is not as useful as it's Java counterpart as you must downcast it from an ITag. (This will work fine if feeding it into an ITag list though.)