29 internal class ASTMap : Z3Object
38 Contract.Requires(k != null);
40 return Native.Z3_ast_map_contains(Context.nCtx, NativeObject, k.NativeObject) != 0;
50 public AST Find(AST k)
52 Contract.Requires(k != null);
53 Contract.Ensures(Contract.Result<AST>() != null);
55 return new AST(Context, Native.Z3_ast_map_find(Context.nCtx, NativeObject, k.NativeObject));
63 public void Insert(AST k, AST v)
65 Contract.Requires(k != null);
66 Contract.Requires(v != null);
68 Native.Z3_ast_map_insert(Context.nCtx, NativeObject, k.NativeObject, v.NativeObject);
75 public void Erase(AST k)
77 Contract.Requires(k != null);
79 Native.Z3_ast_map_erase(Context.nCtx, NativeObject, k.NativeObject);
87 Native.Z3_ast_map_reset(Context.nCtx, NativeObject);
95 get {
return Native.Z3_ast_map_size(Context.nCtx, NativeObject); }
105 ASTVector res =
new ASTVector(Context, Native.Z3_ast_map_keys(Context.nCtx, NativeObject));
106 return res.ToArray();
113 public override string ToString()
115 return Native.Z3_ast_map_to_string(Context.nCtx, NativeObject);
119 internal ASTMap(Context ctx, IntPtr obj)
122 Contract.Requires(ctx != null);
124 internal ASTMap(Context ctx)
125 : base(ctx, Native.Z3_mk_ast_map(ctx.nCtx))
127 Contract.Requires(ctx != null);
130 internal class DecRefQueue : IDecRefQueue
132 public DecRefQueue() : base() { }
133 public DecRefQueue(uint move_limit) : base(move_limit) { }
134 internal override void IncRef(Context ctx, IntPtr obj)
136 Native.Z3_ast_map_inc_ref(ctx.nCtx, obj);
139 internal override void DecRef(Context ctx, IntPtr obj)
141 Native.Z3_ast_map_dec_ref(ctx.nCtx, obj);
145 internal override void IncRef(IntPtr o)
147 Context.ASTMap_DRQ.IncAndClear(Context, o);
151 internal override void DecRef(IntPtr o)
153 Context.ASTMap_DRQ.Add(o);