Просмотр исходного кода

ksym: Add 'permanent' and 'sync' attrs

Serj Kalichev 2 лет назад
Родитель
Сommit
170e049e55
2 измененных файлов с 19 добавлено и 0 удалено
  1. 12 0
      klish/kscheme/ksym.c
  2. 7 0
      klish/ksym.h

+ 12 - 0
klish/kscheme/ksym.c

@@ -14,6 +14,8 @@
 struct ksym_s {
 	char *name;
 	ksym_fn function;
+	tri_t permanent;
+	tri_t sync;
 };
 
 
@@ -27,6 +29,14 @@ KSET_STR_ONCE(sym, name);
 KGET(sym, ksym_fn, function);
 KSET(sym, ksym_fn, function);
 
+// Permanent
+KGET(sym, tri_t, permanent);
+KSET(sym, tri_t, permanent);
+
+// Sync
+KGET(sym, tri_t, sync);
+KSET(sym, tri_t, sync);
+
 
 ksym_t *ksym_new(const char *name, ksym_fn function)
 {
@@ -43,6 +53,8 @@ ksym_t *ksym_new(const char *name, ksym_fn function)
 	// Initialize
 	sym->name = faux_str_dup(name);
 	sym->function = function;
+	sym->permanent = TRI_UNDEFINED;
+	sym->sync = TRI_UNDEFINED;
 
 	return sym;
 }

+ 7 - 0
klish/ksym.h

@@ -21,9 +21,16 @@ ksym_t *ksym_new(const char *name, ksym_fn function);
 void ksym_free(ksym_t *sym);
 
 const char *ksym_name(const ksym_t *sym);
+
 ksym_fn ksym_function(const ksym_t *sym);
 bool_t ksym_set_function(ksym_t *sym, ksym_fn fn);
 
+tri_t ksym_permanent(const ksym_t *sym);
+bool_t ksym_set_permanent(ksym_t *sym, tri_t permanent);
+
+tri_t ksym_sync(const ksym_t *sym);
+bool_t ksym_set_sync(ksym_t *sym, tri_t sync);
+
 C_DECL_END
 
 #endif // _klish_ksym_h