/**
* The eds backend module entry point.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public void module_init (BackendStore backend_store)
{
/**
* The eds backend module exit point.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public void module_finalize (BackendStore backend_store)
{
*
* See {@link Folks.Backend.is_prepared}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override bool is_prepared
{
*
* See {@link Folks.PersonaStore.type_id}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override string type_id { get { return BACKEND_NAME; } }
*
* See {@link Folks.PersonaStore.can_add_personas}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override MaybeBool can_add_personas
{
*
* See {@link Folks.PersonaStore.can_alias_personas}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override MaybeBool can_alias_personas
{
*
* See {@link Folks.PersonaStore.can_group_personas}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override MaybeBool can_group_personas
{
*
* See {@link Folks.PersonaStore.can_remove_personas}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override MaybeBool can_remove_personas
{
*
* See {@link Folks.PersonaStore.is_prepared}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override bool is_prepared
{
*
* See {@link Folks.PersonaStore.personas}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override Map<string, Persona> personas
{
*
* @param s the e-d-s source being represented by the persona store
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public PersonaStore (E.Source s)
{
*
* See {@link Folks.PersonaStore.add_persona_from_details}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override async Folks.Persona? add_persona_from_details (
HashTable<string, Value?> details) throws Folks.PersonaStoreError
*
* @param persona the persona that should be removed
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override async void remove_persona (Folks.Persona persona)
throws Folks.PersonaStoreError
*
* See {@link Folks.PersonaStore.prepare}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override async void prepare () throws PersonaStoreError
{
* is still considered experimental, hence the "X-" prefix in the
* attribute name. So this might change.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static const string gender_attribute_name = "X-GENDER";
* Based on:
* [[http://tools.ietf.org/html/draft-ietf-vcarddav-vcardrev-22]]
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static const string gender_male = "M";
* Based on:
* [[http://tools.ietf.org/html/draft-ietf-vcarddav-vcardrev-22]]
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static const string gender_female = "F";
*
* A list of postal addresses associated to the contact.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Set<PostalAddressFieldDetails> postal_addresses
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Set<PhoneFieldDetails> phone_numbers
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Set<EmailFieldDetails> email_addresses
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Set<NoteFieldDetails> notes
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override string[] linkable_properties
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override string[] writeable_properties
{
*
* See {@link Folks.AvatarDetails.avatar}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public LoadableIcon? avatar
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public StructuredName structured_name
{
/**
* The e-d-s contact uid
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public string contact_id { get; private set; }
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public string full_name
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public string nickname
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public Gender gender
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Set<UrlFieldDetails> urls
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public MultiMap<string, ImFieldDetails> im_addresses
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Set<string> groups
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public async void change_group (string group, bool is_member)
throws GLib.Error
* @param contact the Contact
* @return a valid IID
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
internal static string build_iid_from_contact (string store_id,
E.Contact contact)
* @param contact_id the id belonging to the Contact
* @return a valid IID
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
internal static string build_iid (string store_id, string contact_id)
{
* Create a new persona for the {@link PersonaStore} `store`, representing
* the EDS contact given by `contact`.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public Persona (PersonaStore store, E.Contact contact)
{
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public override void linkable_property_to_links (string prop_name,
Folks.Persona.LinkablePropertyCallback callback)
* presents it as a {@link GLib.LoadableIcon}. This allows inlined avatars to be
* returned as {@link GLib.LoadableIcon}s.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
internal class Edsf.MemoryIcon : Object, Icon, LoadableIcon
{
*
* @param image_type the content type of the image
* @param image_data the binary data of the image
- * @since UNRELEASED
+ * @since 0.6.0
*/
public MemoryIcon (string image_type, uint8[] image_data)
{
*
* @param icon2 the {@link MemoryIcon} instance to compare against
* @return `true` if the instances are equal, `false` otherwise
- * @since UNRELEASED
+ * @since 0.6.0
*/
public bool equal (Icon icon2)
{
* hash table key. This is not a cryptographic hash.
*
* @return hash value over the image type and data
- * @since UNRELEASED
+ * @since 0.6.0
*/
public uint hash ()
{
* @param type return location for the content type of the image, or `null`
* @param cancellable optional {@link GLib.Cancellable}, or `null`
* @return an input stream providing access to the image data
- * @since UNRELEASED
+ * @since 0.6.0
*/
public InputStream load (int size, out string? type,
Cancellable? cancellable = null)
* @param cancellable optional {@link GLib.Cancellable}, or `null`
* @param type return location for the content type of the image, or `null`
* @return an input stream providing access to the image data
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async InputStream load_async (int size,
GLib.Cancellable? cancellable, out string? type)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override string[] writeable_properties
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override string[] writeable_properties
{
*
* See {@link Folks.AvatarDetails.avatar}.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public LoadableIcon? avatar { get; private set; }
* # In contact list? (`b`)
* # Avatar file URI (`s`)
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
internal class Tpf.PersonaStoreCache : Folks.ObjectCache<Tpf.Persona>
{
*
* See {@link Folks.AvatarDetails.avatar}.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public LoadableIcon? avatar { get; private set; }
*
* See {@link Folks.PresenceDetails.presence_status}.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public string presence_status { get; private set; }
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override string[] writeable_properties
{
* have no avatar.
* @return A new {@link Tpf.Persona} representing the cached persona.
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
internal Persona.from_cache (PersonaStore store, string uid, string iid,
string im_address, string protocol, HashSet<string> groups,
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override string[] writeable_properties
{
*
* See {@link Folks.AvatarDetails.avatar}.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public LoadableIcon? avatar
{
# If not 1, append datestamp to the version number
-m4_define([folks_released], [0])
+m4_define([folks_released], [1])
m4_define([folks_major_version], [0])
-m4_define([folks_minor_version], [5])
-m4_define([folks_micro_version], [2])
-m4_define([folks_nano_version], [1])
+m4_define([folks_minor_version], [6])
+m4_define([folks_micro_version], [0])
+m4_define([folks_nano_version], [0])
# If library source has changed since last release, increment revision
# If interfaces have been added, removed or changed since last release,
# increment current and set revision to 0
# If interfaces have been added since last release, increment age
# If interfaces have been removed since last release, set age to 0
-m4_define([folks_lt_current], [24])
-m4_define([folks_lt_revision], [1])
+m4_define([folks_lt_current], [25])
+m4_define([folks_lt_revision], [0])
m4_define([folks_lt_age], [0])
# Display the nano_version only if it's not '0'
* See [[http://www.ietf.org/rfc/rfc2426.txt|RFC2426]] for more details on
* pre-defined parameter names and values.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract class Folks.AbstractFieldDetails<T> : Object
{
* The value of the field, the exact type and content of which depends on what
* the structure is used for.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public virtual T @value
{
* {@link Folks.AbstractFieldDetails.value}. The keys are the names of
* the parameters, while the values are a list of strings.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public virtual MultiMap<string, string> parameters
{
* @return a collection of values for `parameter_name` or `null` (i.e. no
* collection) if there are no such parameters.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public Collection<string>? get_parameter_values (string parameter_name)
{
* @param parameter_name the name of the parameter
* @param parameter_value the value to add
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public void add_parameter (string parameter_name, string parameter_value)
{
* @param parameter_name the name of the parameter
* @param parameter_value the value to add
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public void set_parameter (string parameter_name, string parameter_value)
{
*
* @param additional the parameters to add
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public void extend_parameters (MultiMap<string, string> additional)
{
*
* @param parameter_name the name of the parameter
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public void remove_parameter_all (string parameter_name)
{
*
* @return whether the elements are equal
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public virtual bool equal (AbstractFieldDetails<T> that)
{
*
* @return the hash value
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public virtual uint hash ()
{
* folks. Avatars may be added to the cache, and referred to by a persistent
* URI from that point onwards.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.AvatarCache : Object
{
* Private constructor for an instance of the avatar cache. The singleton
* instance should be retrieved by calling {@link AvatarCache.dup()} instead.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
private AvatarCache ()
{
* This function is thread-safe.
*
* @return Singleton {@link AvatarCache} instance
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static AvatarCache dup ()
{
* @param id the globally unique ID for the avatar
* @return Avatar from the cache, or `null` if it doesn't exist in the cache
* @throws GLib.Error if checking for existence of the cache file failed
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async LoadableIcon? load_avatar (string id) throws GLib.Error
{
* @return a URI for the file storing the cached avatar
* @throws GLib.Error if the avatar data couldn't be loaded, or if creating
* the avatar directory or cache file failed
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async string store_avatar (string id, LoadableIcon avatar)
throws GLib.Error
*
* @param id the globally unique ID for the avatar
* @throws GLib.Error if deleting the cache file failed
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async void remove_avatar (string id) throws GLib.Error
{
*
* @param id the globally unique ID for the avatar
* @return URI of the avatar file with the given globally unique ID
- * @since UNRELEASED
+ * @since 0.6.0
*/
public string build_uri_for_avatar (string id)
{
* `null` if unset. Otherwise, the image data may be asynchronously loaded
* using the methods of the {@link GLib.LoadableIcon} implementation.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract LoadableIcon? avatar { get; set; }
}
* See {@link Folks.AbstractFieldDetails} for details on common parameter names
* and values.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.EmailFieldDetails : AbstractFieldDetails<string>
{
*
* @return a new EmailFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public EmailFieldDetails (string value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
* “foo@bar.com”), rather than any other way of formatting an e-mail address
* (such as “John Smith <foo@bar.com>”).
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract Set<EmailFieldDetails> email_addresses { get; set; }
}
*
* See {@link Folks.AbstractFieldDetails}.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.ImFieldDetails : AbstractFieldDetails<string>
{
*
* @return a new ImFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public ImFieldDetails (string value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public LoadableIcon? avatar { get; private set; }
/**
* {@inheritDoc}
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public string presence_status { get; private set; }
* See {@link Folks.AbstractFieldDetails} for details on common parameter names
* and values.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.NoteFieldDetails : AbstractFieldDetails<string>
{
*
* @return a new NoteFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public NoteFieldDetails (string value,
MultiMap<string, string>? parameters = null,
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
* It's intended that this class be used for providing caching layers for
* {@link PersonaStore}s, for example.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract class Folks.ObjectCache<T> : Object
{
* If a smooth upgrade path is needed in future due to cache file format
* changes, this may be modified to take a version parameter.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
protected abstract VariantType get_serialised_object_type ();
* every time the variant type changes so that old cache files aren't
* misinterpreted.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
protected abstract uint8 get_serialised_object_version ();
* @param object the object to serialise
* @return serialised form of `object`
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
protected abstract Variant serialise_object (T object);
* @param variant the serialised form to deserialise
* @return the deserialised object
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
protected abstract T deserialise_object (Variant variant);
* can be an arbitrary non-empty string.
* @return A new cache instance
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
protected ObjectCache (string type_id, string id)
{
* @param cancellable A {@link GLib.Cancellable} for the operation, or `null`.
* @return A set of objects from the cache, or `null`.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async Set<T>? load_objects (Cancellable? cancellable = null)
{
* be `null`.
* @param cancellable A {@link GLib.Cancellable} for the operation, or `null`.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async void store_objects (Set<T> objects,
Cancellable? cancellable = null)
/**
* Clear this cache object, deleting its backing file.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public async void clear_cache ()
{
/**
* The operation was denied due to not having sufficient permissions.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
PERMISSION_DENIED,
* if no other error code (such as, e.g.,
* {@link PersonaStoreError.PERMISSION_DENIED}) is applicable.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
REMOVE_FAILED,
}
* been created, when its {@link PersonaStore} is being destroyed, or when
* it's moving between {@link Individual}s.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public weak Individual? individual
{
* subclass, but this isn't guaranteed; it's possible that Persona subclasses
* may vary the value of this property at run time.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract string[] writeable_properties { get; }
* See {@link Folks.AbstractFieldDetails} for details on common parameter names
* and values.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.PhoneFieldDetails : AbstractFieldDetails<string>
{
*
* @return a new PhoneFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public PhoneFieldDetails (string value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
*
* @return the normalised form of `number`
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public string get_normalised ()
{
* @return the number without its extension; if the number didn't have an
* extension in the first place, the number is returned unmodified
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
internal static string _drop_extension (string number)
{
*
* A list of phone numbers associated to the contact.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract Set<PhoneFieldDetails> phone_numbers { get; set; }
}
* See {@link Folks.AbstractFieldDetails} for details on common parameter names
* and values.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.PostalAddressFieldDetails :
AbstractFieldDetails<PostalAddress>
*
* @return a new PostalAddressFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public PostalAddressFieldDetails (PostalAddress value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<PostalAddress> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
* well-known set of strings, as defined in the Telepathy specification:
* [[http://telepathy.freedesktop.org/spec/Connection_Interface_Simple_Presence.html#description|Telepathy Specification]]
*
- * @since 0.5.UNRELEASED
+ * @since 0.6.0
*/
public abstract string presence_status { get; set; default = ""; }
*
* For example: “Programmer”
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public string role { get; set; }
*
* See {@link Folks.AbstractFieldDetails}.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.RoleFieldDetails : AbstractFieldDetails<Role>
{
*
* @return a new RoleFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public RoleFieldDetails (Role value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
/**
* The roles of the contact.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract Set<RoleFieldDetails> roles { get; set; }
}
* See {@link Folks.AbstractFieldDetails} for details on common parameter names
* and values.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.UrlFieldDetails : AbstractFieldDetails<string>
{
*
* @return a new UrlFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public UrlFieldDetails (string value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
* @param b another multi-map to compare
* @return `true` if the multi-maps are equal, `false` otherwise
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static bool multi_map_str_str_equal (
MultiMap<string, string> a,
* @param b another multi-map to compare
* @return `true` if the multi-maps are equal, `false` otherwise
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static bool multi_map_str_afd_equal (
MultiMap<string, AbstractFieldDetails> a,
* @param b another set to compare
* @return `true` if the sets are equal, `false` otherwise
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public static bool set_afd_equal (
Set<AbstractFieldDetails> a,
*
* See {@link Folks.AbstractFieldDetails}.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public class Folks.WebServiceFieldDetails : AbstractFieldDetails<string>
{
*
* @return a new WebServiceFieldDetails
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public WebServiceFieldDetails (string value,
MultiMap<string, string>? parameters = null)
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override bool equal (AbstractFieldDetails<string> that)
{
/**
* {@inheritDoc}
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public override uint hash ()
{
* Web service addresses are guaranteed to be unique per web service, but
* not necessarily unique amongst all web services.
*
- * @since UNRELEASED
+ * @since 0.6.0
*/
public abstract
Gee.MultiMap<string, WebServiceFieldDetails> web_service_addresses