Inflection
Morphology Inflection
Loading...
Searching...
No Matches
SemanticFeatureModel.hpp
1/*
2 * Copyright 2017-2024 Apple Inc. All rights reserved.
3 */
4#pragma once
5
6#include <inflection/dialog/fwd.hpp>
7#include <inflection/dialog/SemanticFeature.hpp>
8#include <inflection/dialog/SemanticFeatureModel_DisplayData.hpp>
9#include <inflection/dialog/SemanticValue.hpp>
10#include <inflection/util/ULocale.hpp>
11#include <inflection/Object.hpp>
12#include <map>
13#include <memory>
14#include <set>
15#include <string>
16#include <tuple>
17
21class INFLECTION_CLASS_API inflection::dialog::SemanticFeatureModel final
23{
24
25public:
27 typedef ::inflection::Object super;
29
30private:
31 ::std::map<::std::u16string, ::inflection::dialog::SemanticFeature, std::less<>> featureMap { };
32 ::std::map<::std::u16string, ::std::pair<::inflection::dialog::SemanticFeature*, ::std::u16string>, std::less<>> featuresAliases { };
33 ::std::map<SemanticValue, SemanticFeatureModel_DisplayData> semanticValueMap { };
34 ::std::map<::inflection::dialog::SemanticFeature, DefaultFeatureFunction*> defaultFeatureFunctions { };
36 std::unique_ptr<DefaultDisplayFunction> defaultDisplayFunction;
37
38public:
42 static constexpr auto SPEAK = u"speak";
43
47 ::std::set<inflection::dialog::SemanticValue> getKnownSemanticValues() const;
56 const SemanticFeature* getFeature(::std::u16string_view name) const;
65 ::std::pair<::inflection::dialog::SemanticFeature*, ::std::u16string> getFeatureAlias(::std::u16string_view name) const;
69 const util::ULocale& getLocale() const;
75 const DefaultFeatureFunction* getDefaultFeatureFunction(const SemanticFeature& feature) const;
83 void putDefaultFeatureFunction(const SemanticFeature& feature, DefaultFeatureFunction* function);
91 void putDefaultFeatureFunctionByName(::std::u16string_view feature, DefaultFeatureFunction* function);
98 const DefaultDisplayFunction* getDefaultDisplayFunction() const;
105 void setDefaultDisplayFunction(DefaultDisplayFunction* defaultDisplayFunction);
106
107public:
111 explicit SemanticFeatureModel(const ::inflection::util::ULocale& locale);
118 SemanticFeatureModel(const ::inflection::util::ULocale& locale, const ::std::map<SemanticValue, SemanticFeatureModel_DisplayData>& semanticValueMap);
123private:
124 SemanticFeatureModel(const SemanticFeatureModel& other) = delete;
125 SemanticFeatureModel& operator=(const SemanticFeatureModel&) = delete;
126};
Inflection's root object.
Definition Object.hpp:14
Provides a mapping between constraints and their corresponding SemanticValue.
A semantic model that contains display data for semantic values and provides feature functions for de...
void setDefaultDisplayFunction(DefaultDisplayFunction *defaultDisplayFunction)
const DefaultFeatureFunction * getDefaultFeatureFunction(const SemanticFeature &feature) const
const util::ULocale & getLocale() const
const SemanticFeature * getFeature(::std::u16string_view name) const
void putDefaultFeatureFunction(const SemanticFeature &feature, DefaultFeatureFunction *function)
SemanticFeatureModel(const ::inflection::util::ULocale &locale, const ::std::map< SemanticValue, SemanticFeatureModel_DisplayData > &semanticValueMap)
void putDefaultFeatureFunctionByName(::std::u16string_view feature, DefaultFeatureFunction *function)
const SemanticFeatureModel_DisplayData * getDisplayData(const SemanticValue &semantic) const
const DefaultDisplayFunction * getDefaultDisplayFunction() const
::std::pair<::inflection::dialog::SemanticFeature *, ::std::u16string > getFeatureAlias(::std::u16string_view name) const
::std::set< inflection::dialog::SemanticValue > getKnownSemanticValues() const
SemanticFeatureModel(const ::inflection::util::ULocale &locale)
Represents a single semantic feature.
Represents an ontological label with a value.
An object that represents a specific geographical, political, or cultural region.
Definition ULocale.hpp:83
The C++ namespace for Inflection.
Definition fwd.hpp:11