Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
value.hh File Reference
#include <cassert>
#include <climits>
#include <functional>
#include <ranges>
#include <span>
#include "lix/libexpr/gc-alloc.hh"
#include "lix/libexpr/symbol-table.hh"
#include "lix/libexpr/value/context.hh"
#include "lix/libutil/source-path.hh"
#include "lix/libexpr/print-options.hh"
#include "lix/libutil/checked-arithmetic.hh"
#include "lix/libutil/concepts.hh"
#include "lix/libutil/json-fwd.hh"

Go to the source code of this file.

Classes

class  nix::ExternalValueBase
struct  nix::NewValueAs
struct  nix::NewValueAs::integer_t
struct  nix::NewValueAs::floating_t
struct  nix::NewValueAs::boolean_t
struct  nix::NewValueAs::string_t
struct  nix::NewValueAs::path_t
struct  nix::NewValueAs::list_t
struct  nix::NewValueAs::attrs_t
struct  nix::NewValueAs::thunk_t
struct  nix::NewValueAs::null_t
struct  nix::NewValueAs::app_t
struct  nix::NewValueAs::primop_t
struct  nix::NewValueAs::primOpApp_t
struct  nix::NewValueAs::lambda_t
struct  nix::NewValueAs::external_t
struct  nix::NewValueAs::blackhole_t
struct  nix::Value

Macros

#define USING_VALUETYPE(name)

Typedefs

using nix::NixInt = checked::Checked<int64_t>
using nix::NixFloat = double
using nix::ValueVector = GcVector<Value *>
using nix::ValueMap = GcMap<Symbol, Value *>
using nix::ValueVectorMap = std::map<Symbol, ValueVector>
typedef std::shared_ptr< Value * > nix::RootValue

Enumerations

enum  InternalType {
  tInt = 1 , tBool , tString , tPath ,
  tNull , tAttrs , tList1 , tList2 ,
  tListN , tThunk , tApp , tLambda ,
  tPrimOp , tPrimOpApp , tExternal , tFloat
}
enum  nix::ValueType {
  nThunk , nInt , nFloat , nBool ,
  nString , nPath , nNull , nAttrs ,
  nList , nFunction , nExternal
}

Functions

std::ostream & nix::operator<< (std::ostream &str, const ExternalValueBase &v)
RootValue nix::allocRootValue (Value *v)

Macro Definition Documentation

◆ USING_VALUETYPE

#define USING_VALUETYPE ( name)
Value:
using name = NewValueAs::name

Typedef Documentation

◆ RootValue

typedef std::shared_ptr<Value *> nix::RootValue

A value allocated in traceable memory.

Enumeration Type Documentation

◆ ValueType

This type abstracts over all actual value types in the language, grouping together implementation details like tList*, different function types, and types in non-normal form (so thunks and co.)