aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/typval.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/eval/typval.h')
-rw-r--r--src/nvim/eval/typval.h35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/nvim/eval/typval.h b/src/nvim/eval/typval.h
index 33e2aa6b61..664bf7332c 100644
--- a/src/nvim/eval/typval.h
+++ b/src/nvim/eval/typval.h
@@ -413,11 +413,14 @@ static inline void list_log(const list_T *const l,
#define TV_DICT_HI2DI(hi) \
((dictitem_T *)((hi)->hi_key - offsetof(dictitem_T, di_key)))
+static inline void tv_list_ref(list_T *const l)
+ REAL_FATTR_ALWAYS_INLINE;
+
/// Increase reference count for a given list
///
/// Does nothing for NULL lists.
///
-/// @param[in] l List to modify.
+/// @param[in,out] l List to modify.
static inline void tv_list_ref(list_T *const l)
{
if (l == NULL) {
@@ -426,6 +429,20 @@ static inline void tv_list_ref(list_T *const l)
l->lv_refcount++;
}
+static inline void tv_list_set_ret(typval_T *const tv, list_T *const l)
+ REAL_FATTR_ALWAYS_INLINE REAL_FATTR_NONNULL_ARG(1);
+
+/// Set a list as the return value
+///
+/// @param[out] tv Object to receive the list
+/// @param[in,out] l List to pass to the object
+static inline void tv_list_set_ret(typval_T *const tv, list_T *const l)
+{
+ tv->v_type = VAR_LIST;
+ tv->vval.v_list = l;
+ tv_list_ref(l);
+}
+
static inline VarLockStatus tv_list_locked(const list_T *const l)
REAL_FATTR_PURE REAL_FATTR_WARN_UNUSED_RESULT;
@@ -588,6 +605,22 @@ static inline listitem_T *tv_list_last(const list_T *const l)
return l->lv_last;
}
+static inline void tv_dict_set_ret(typval_T *const tv, dict_T *const d)
+ REAL_FATTR_ALWAYS_INLINE REAL_FATTR_NONNULL_ARG(1);
+
+/// Set a dictionary as the return value
+///
+/// @param[out] tv Object to receive the dictionary
+/// @param[in,out] d Dictionary to pass to the object
+static inline void tv_dict_set_ret(typval_T *const tv, dict_T *const d)
+{
+ tv->v_type = VAR_DICT;
+ tv->vval.v_dict = d;
+ if (d != NULL) {
+ d->dv_refcount++;
+ }
+}
+
static inline long tv_dict_len(const dict_T *const d)
REAL_FATTR_PURE REAL_FATTR_WARN_UNUSED_RESULT;