]> granicus.if.org Git - icinga2/commitdiff
Implement field attribute to hide fields in command auto-completion
authorGunnar Beutner <gunnar@beutner.name>
Fri, 31 Oct 2014 07:53:25 +0000 (08:53 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Fri, 31 Oct 2014 07:53:25 +0000 (08:53 +0100)
fixes #7403

lib/base/dynamicobject.ti
lib/base/type.hpp
lib/cli/clicommand.cpp
tools/mkclass/class_lexer.ll
tools/mkclass/classcompiler.hpp

index f123fbaf2df2bf91ea0b1aa29d1739fce61aa895..b9163262e96cc0289aaf529073b5bfc7ed989757 100644 (file)
@@ -35,7 +35,7 @@ public:
 
 abstract class DynamicObject
 {
-       [config] String __name (Name);
+       [config, internal] String __name (Name);
        [config] String name (ShortName) {
                get {{{
                        if (m_ShortName.IsEmpty())
@@ -44,9 +44,9 @@ abstract class DynamicObject
                                return m_ShortName;
                }}}
        };
-       [config, get_protected] String type (TypeName);
+       [config, internal, get_protected] String type (TypeName);
        [config] String zone;
-       [config, get_protected] Array::Ptr templates;
+       [config, internal, get_protected] Array::Ptr templates;
        [config] Dictionary::Ptr methods;
        [config] Dictionary::Ptr vars (VarsRaw);
        [get_protected] bool active;
index d8ebf804694191aa6a4ac91b58d3af7f5873578a..67ffceee93f892b09ca9439aa145e0cfb8ef45f8 100644 (file)
@@ -33,7 +33,8 @@ namespace icinga
 enum FieldAttribute
 {
        FAConfig = 1,
-       FAState = 2
+       FAState = 2,
+       FAInternal = 32
 }; 
 
 class Type;
index 36bd388b720c8b5400d1ddb79293ad8d1165338d..159f9d7e5fd2079937055936361539ff83fa1fe0 100644 (file)
@@ -75,7 +75,7 @@ std::vector<String> icinga::GetFieldCompletionSuggestions(const Type *type, cons
        for (int i = 0; i < type->GetFieldCount(); i++) {
                Field field = type->GetFieldInfo(i);
 
-               if (!(field.Attributes & FAConfig))
+               if (!(field.Attributes & FAConfig) || field.Attributes & FAInternal)
                        continue;
 
                if (field.FType != Type::GetByName("int") && field.FType != Type::GetByName("double")
@@ -84,9 +84,6 @@ std::vector<String> icinga::GetFieldCompletionSuggestions(const Type *type, cons
 
                String fname = field.Name;
 
-               if (fname == "__name" || fname == "templates" || fname == "type")
-                       continue;
-
                String suggestion = fname + "=";
 
                if (suggestion.Find(word) == 0)
index 00d1d89b390dfe8d8afa7e47b2054b24ab7cfec8..8ecf95da7e5e58158c65e5b31cfe54e416e53751 100644 (file)
@@ -139,6 +139,7 @@ enum                                { yylval->num = FAEnum; return T_FIELD_ATTRIBUTE; }
 get_protected                  { yylval->num = FAGetProtected; return T_FIELD_ATTRIBUTE; }
 set_protected                  { yylval->num = FASetProtected; return T_FIELD_ATTRIBUTE; }
 protected                      { yylval->num = FAGetProtected | FASetProtected; return T_FIELD_ATTRIBUTE; }
+internal                       { yylval->num = FAInternal; return T_FIELD_ATTRIBUTE; }
 default                                { yylval->num = FTDefault; return T_FIELD_ACCESSOR_TYPE; }
 get                            { yylval->num = FTGet; return T_FIELD_ACCESSOR_TYPE; }
 set                            { yylval->num = FTSet; return T_FIELD_ACCESSOR_TYPE; }
index f8ec30bf2c90c46303262defc04e373c8226d695..f317492f9aee663595b0a59ec6ef5c925564825c 100644 (file)
@@ -60,7 +60,8 @@ enum FieldAttribute
        FAState = 2,
        FAEnum = 4,
        FAGetProtected = 8,
-       FASetProtected = 16
+       FASetProtected = 16,
+       FAInternal = 32
 };
 
 struct Field