Ignore:
Timestamp:
Jul 2, 2015, 6:49:13 PM (4 years ago)
Author:
cameron
Message:

Add ExtensionPropertyObject? for scx

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/UCD/PropertyObjects.h

    r4631 r4633  
    2222        public:
    2323        enum class ClassTypeId : unsigned {
    24             NumericProperty, CodepointProperty, StringProperty, MiscellaneousProperty, EnumeratedProperty, CatalogProperty, BinaryProperty,  UnsupportedProperty
     24            NumericProperty, CodepointProperty, StringProperty, MiscellaneousProperty, EnumeratedProperty, ExtensionProperty, CatalogProperty, BinaryProperty,  UnsupportedProperty
    2525        };
    2626        inline ClassTypeId getClassTypeId() const {
     
    4747        };
    4848       
    49         class EnumeratedPropertyObject : public PropertyObject {
    50         public:
     49        class EnumeratedPropertyObject : public PropertyObject {
     50        public:
    5151        static inline bool classof(const PropertyObject * p) {
    5252            return p->getClassTypeId() == ClassTypeId::EnumeratedProperty;
     
    5555            return false;
    5656        }
    57                
     57               
    5858
    59                 EnumeratedPropertyObject(UCD::property_t p,
     59                EnumeratedPropertyObject(UCD::property_t p,
    6060                                 const std::vector<std::string> & enum_names,
    6161                                 const std::vector<std::string> & names,
     
    7575        const UnicodeSet & GetCodepointSet(const std::string & value_spec);
    7676        const UnicodeSet & GetCodepointSet(const int property_enum_val) const;
    77                
    78         private:
     77               
     78        private:
    7979        const std::vector<std::string> & property_value_enum_names;  // never changes
    8080        const std::vector<std::string> & property_value_full_names;  // never changes
     
    8282        bool uninitialized; // full names must be added dynamically.
    8383        const std::vector<const UnicodeSet *> property_value_sets;
    84         };
    85        
     84        };
     85       
     86        class ExtensionPropertyObject : public PropertyObject {
     87        public:
     88        static inline bool classof(const PropertyObject * p) {
     89            return p->getClassTypeId() == ClassTypeId::ExtensionProperty;
     90        }
     91        static inline bool classof(const void *) {
     92            return false;
     93        }
     94               
     95
     96                ExtensionPropertyObject(UCD::property_t p,
     97                                 UCD::property_t base,
     98                                 std::vector<const UnicodeSet *> && sets)
     99        : PropertyObject(p, ClassTypeId::ExtensionProperty)
     100        , base_property(base)
     101        , property_value_sets(sets) {
     102
     103
     104        }
     105
     106        virtual int GetPropertyValueEnumCode(const std::string & value_spec);
     107        const UnicodeSet & GetCodepointSet(const std::string & value_spec);
     108        const UnicodeSet & GetCodepointSet(const int property_enum_val) const;
     109               
     110        private:
     111        const property_t base_property;
     112        const std::vector<const UnicodeSet *> property_value_sets;
     113        };
     114       
    86115        class BinaryPropertyObject : public PropertyObject {
    87116        public:
Note: See TracChangeset for help on using the changeset viewer.