Refactors to produce slightly less garbage
This commit is contained in:
@@ -26,33 +26,27 @@ enum KiwiErrKind {
|
||||
|
||||
enum KiwiRelOp { KIWI_OP_LE, KIWI_OP_GE, KIWI_OP_EQ };
|
||||
|
||||
struct KiwiVarRefType;
|
||||
struct KiwiConstraintRefType;
|
||||
|
||||
typedef struct KiwiVarRefType* KiwiVarRef;
|
||||
typedef struct KiwiConstraintRefType* KiwiConstraintRef;
|
||||
|
||||
struct KiwiTerm {
|
||||
typedef struct KiwiTerm {
|
||||
KiwiVarRef var;
|
||||
double coefficient;
|
||||
};
|
||||
} KiwiTerm;
|
||||
|
||||
typedef struct KiwiExpression {
|
||||
double constant;
|
||||
int term_count;
|
||||
struct KiwiTerm terms[1]; // LuaJIT: struct KiwiTerm terms_[?];
|
||||
}* KiwiExpressionPtr;
|
||||
|
||||
typedef const struct KiwiExpression* KiwiExpressionConstPtr;
|
||||
KiwiTerm terms[1]; // LuaJIT: struct KiwiTerm terms_[?];
|
||||
} KiwiExpression;
|
||||
|
||||
typedef struct KiwiErr {
|
||||
enum KiwiErrKind kind;
|
||||
const char* message;
|
||||
bool must_free;
|
||||
} const* KiwiErrPtr;
|
||||
} KiwiErr;
|
||||
|
||||
struct KiwiSolver;
|
||||
typedef struct KiwiSolver* KiwiSolverPtr;
|
||||
typedef struct KiwiSolver KiwiSolver;
|
||||
|
||||
KiwiVarRef kiwi_var_new(const char* name);
|
||||
void kiwi_var_del(KiwiVarRef var);
|
||||
@@ -64,32 +58,37 @@ double kiwi_var_value(KiwiVarRef var);
|
||||
void kiwi_var_set_value(KiwiVarRef var, double value);
|
||||
int kiwi_var_eq(KiwiVarRef var, KiwiVarRef other);
|
||||
|
||||
KiwiConstraintRef
|
||||
kiwi_constraint_new(KiwiExpressionConstPtr expression, enum KiwiRelOp op, double strength);
|
||||
void kiwi_expression_del_vars(KiwiExpression* expr);
|
||||
|
||||
KiwiConstraintRef kiwi_constraint_new(
|
||||
const KiwiExpression* lhs,
|
||||
const KiwiExpression* rhs,
|
||||
enum KiwiRelOp op,
|
||||
double strength
|
||||
);
|
||||
void kiwi_constraint_del(KiwiConstraintRef constraint);
|
||||
KiwiConstraintRef kiwi_constraint_clone(KiwiConstraintRef constraint);
|
||||
|
||||
double kiwi_constraint_strength(KiwiConstraintRef constraint);
|
||||
|
||||
enum KiwiRelOp kiwi_constraint_op(KiwiConstraintRef constraint);
|
||||
|
||||
bool kiwi_constraint_violated(KiwiConstraintRef constraint);
|
||||
int kiwi_constraint_expression(KiwiConstraintRef constraint, KiwiExpressionPtr out, int out_size);
|
||||
int kiwi_constraint_expression(KiwiConstraintRef constraint, KiwiExpression* out, int out_size);
|
||||
|
||||
KiwiErrPtr kiwi_solver_add_constraint(KiwiSolverPtr sp, KiwiConstraintRef constraint);
|
||||
KiwiErrPtr kiwi_solver_remove_constraint(KiwiSolverPtr sp, KiwiConstraintRef constraint);
|
||||
bool kiwi_solver_has_constraint(KiwiSolverPtr sp, KiwiConstraintRef constraint);
|
||||
KiwiErrPtr kiwi_solver_add_edit_var(KiwiSolverPtr sp, KiwiVarRef var, double strength);
|
||||
KiwiErrPtr kiwi_solver_remove_edit_var(KiwiSolverPtr sp, KiwiVarRef var);
|
||||
bool kiwi_solver_has_edit_var(KiwiSolverPtr sp, KiwiVarRef var);
|
||||
KiwiErrPtr kiwi_solver_suggest_value(KiwiSolverPtr sp, KiwiVarRef var, double value);
|
||||
void kiwi_solver_update_vars(KiwiSolverPtr sp);
|
||||
void kiwi_solver_reset(KiwiSolverPtr sp);
|
||||
void kiwi_solver_dump(KiwiSolverPtr sp);
|
||||
char* kiwi_solver_dumps(KiwiSolverPtr sp);
|
||||
KiwiSolver* kiwi_solver_new();
|
||||
void kiwi_solver_del(KiwiSolver* sp);
|
||||
|
||||
const KiwiErr* kiwi_solver_add_constraint(KiwiSolver* sp, KiwiConstraintRef constraint);
|
||||
const KiwiErr* kiwi_solver_remove_constraint(KiwiSolver* sp, KiwiConstraintRef constraint);
|
||||
bool kiwi_solver_has_constraint(const KiwiSolver* sp, KiwiConstraintRef constraint);
|
||||
const KiwiErr* kiwi_solver_add_edit_var(KiwiSolver* sp, KiwiVarRef var, double strength);
|
||||
const KiwiErr* kiwi_solver_remove_edit_var(KiwiSolver* sp, KiwiVarRef var);
|
||||
bool kiwi_solver_has_edit_var(const KiwiSolver* sp, KiwiVarRef var);
|
||||
const KiwiErr* kiwi_solver_suggest_value(KiwiSolver* sp, KiwiVarRef var, double value);
|
||||
void kiwi_solver_update_vars(KiwiSolver* sp);
|
||||
void kiwi_solver_reset(KiwiSolver* sp);
|
||||
void kiwi_solver_dump(const KiwiSolver* sp);
|
||||
char* kiwi_solver_dumps(const KiwiSolver* sp);
|
||||
|
||||
KiwiSolverPtr kiwi_solver_new();
|
||||
void kiwi_solver_del(KiwiSolverPtr sp);
|
||||
// LuaJIT end
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user