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#include <vector>
18
22class INFLECTION_CLASS_API inflection::dialog::SemanticFeatureModel final
24{
25
26public:
28 typedef ::inflection::Object super;
30
31private:
32 ::std::map<::std::u16string, ::inflection::dialog::SemanticFeature*, std::less<>> featureMap { };
33 ::std::map<::std::u16string, ::std::pair<::inflection::dialog::SemanticFeature*, ::std::u16string>, std::less<>> featuresAliases { };
34 ::std::map<SemanticValue, SemanticFeatureModel_DisplayData> semanticValueMap { };
35 ::std::map<::inflection::dialog::SemanticFeature, DefaultFeatureFunction*> defaultFeatureFunctions { };
37 std::unique_ptr<DefaultDisplayFunction> defaultDisplayFunction;
38
39public:
43 static constexpr auto SPEAK = u"speak";
44
48 ::std::set<inflection::dialog::SemanticValue> getKnownSemanticValues() const;
57 const SemanticFeature* getFeature(::std::u16string_view name) const;
66 ::std::pair<::inflection::dialog::SemanticFeature*, ::std::u16string> getFeatureAlias(::std::u16string_view name) const;
70 const util::ULocale& getLocale() const;
76 const DefaultFeatureFunction* getDefaultFeatureFunction(const SemanticFeature& feature) const;
84 void putDefaultFeatureFunction(const SemanticFeature& feature, DefaultFeatureFunction* function);
92 void putDefaultFeatureFunctionByName(::std::u16string_view feature, DefaultFeatureFunction* function);
99 const DefaultDisplayFunction* getDefaultDisplayFunction() const;
106 void setDefaultDisplayFunction(DefaultDisplayFunction* defaultDisplayFunction);
107
108private:
109 static ::std::vector<::inflection::dialog::SemanticFeature*> createDefaultSemanticFeatures(const ::inflection::util::ULocale& locale);
110
111public:
115 explicit SemanticFeatureModel(const ::inflection::util::ULocale& locale);
122 SemanticFeatureModel(const ::inflection::util::ULocale& locale, const ::std::map<SemanticValue, SemanticFeatureModel_DisplayData>& semanticValueMap);
127private:
128 SemanticFeatureModel(const SemanticFeatureModel& other) = delete;
129 SemanticFeatureModel& operator=(const SemanticFeatureModel&) = delete;
130};
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