PgfVector -> Vector

This commit is contained in:
krangelov
2021-11-09 02:10:17 +01:00
parent 6552bcf909
commit 2bed0b708c
9 changed files with 35 additions and 35 deletions

View File

@@ -15,7 +15,7 @@ void PgfAbsFun::release(ref<PgfAbsFun> absfun)
pgf_expr_free(eq->body); pgf_expr_free(eq->body);
for (size_t j = 0; j < eq->patts.len; j++) { for (size_t j = 0; j < eq->patts.len; j++) {
PgfPatt patt = *vector_elem(ref<PgfVector<PgfPatt>>::from_ptr(&eq->patts), j); PgfPatt patt = *vector_elem(ref<Vector<PgfPatt>>::from_ptr(&eq->patts), j);
pgf_patt_free(patt); pgf_patt_free(patt);
} }
} }

View File

@@ -72,7 +72,7 @@ struct PGF_INTERNAL_DECL PgfFlag {
typedef struct { typedef struct {
PgfExpr body; PgfExpr body;
PgfVector<PgfPatt> patts; Vector<PgfPatt> patts;
} PgfEquation; } PgfEquation;
struct PGF_INTERNAL_DECL PgfAbsFun { struct PGF_INTERNAL_DECL PgfAbsFun {
@@ -80,7 +80,7 @@ struct PGF_INTERNAL_DECL PgfAbsFun {
ref<PgfDTyp> type; ref<PgfDTyp> type;
int arity; int arity;
ref<PgfVector<ref<PgfEquation>>> defns; ref<Vector<ref<PgfEquation>>> defns;
PgfExprProb ep; PgfExprProb ep;
PgfText name; PgfText name;
@@ -90,7 +90,7 @@ struct PGF_INTERNAL_DECL PgfAbsFun {
struct PGF_INTERNAL_DECL PgfAbsCat { struct PGF_INTERNAL_DECL PgfAbsCat {
size_t ref_count; size_t ref_count;
ref<PgfVector<PgfHypo>> context; ref<Vector<PgfHypo>> context;
prob_t prob; prob_t prob;
PgfText name; PgfText name;
@@ -106,7 +106,7 @@ typedef struct {
struct PGF_INTERNAL_DECL PgfConcrLincat { struct PGF_INTERNAL_DECL PgfConcrLincat {
size_t ref_count; size_t ref_count;
ref<PgfVector<ref<PgfText>>> fields; ref<Vector<ref<PgfText>>> fields;
PgfText name; PgfText name;
static void release(ref<PgfConcrLincat> lincat); static void release(ref<PgfConcrLincat> lincat);
@@ -180,9 +180,9 @@ struct PGF_INTERNAL_DECL PgfSymbolALLCAPIT {
struct PGF_INTERNAL_DECL PgfConcrLin { struct PGF_INTERNAL_DECL PgfConcrLin {
size_t ref_count; size_t ref_count;
ref<PgfVector<PgfPArg>> args; ref<Vector<PgfPArg>> args;
ref<PgfVector<ref<PgfLParam>>> res; ref<Vector<ref<PgfLParam>>> res;
ref<PgfVector<ref<PgfVector<PgfSymbol>>>> seqs; ref<Vector<ref<Vector<PgfSymbol>>>> seqs;
PgfText name; PgfText name;

View File

@@ -1105,7 +1105,7 @@ void pgf_expr_free(PgfExpr expr)
} }
PGF_INTERNAL PGF_INTERNAL
void pgf_context_free(ref<PgfVector<PgfHypo>> hypos) void pgf_context_free(ref<Vector<PgfHypo>> hypos)
{ {
for (size_t i = 0; i < hypos->len; i++) { for (size_t i = 0; i < hypos->len; i++) {
PgfDB::free(vector_elem(hypos, i)->cid); PgfDB::free(vector_elem(hypos, i)->cid);
@@ -1136,7 +1136,7 @@ void pgf_patt_free(PgfPatt patt)
auto papp = ref<PgfPattApp>::untagged(patt); auto papp = ref<PgfPattApp>::untagged(patt);
PgfDB::free(papp->ctor); PgfDB::free(papp->ctor);
for (size_t i = 0; i < papp->args.len; i++) { for (size_t i = 0; i < papp->args.len; i++) {
PgfPatt patt = *vector_elem(ref<PgfVector<PgfPatt>>::from_ptr(&papp->args), i); PgfPatt patt = *vector_elem(ref<Vector<PgfPatt>>::from_ptr(&papp->args), i);
pgf_patt_free(patt); pgf_patt_free(patt);
} }
PgfDB::free(papp); PgfDB::free(papp);

View File

@@ -30,8 +30,8 @@ struct PGF_INTERNAL_DECL PgfHypo {
}; };
struct PGF_INTERNAL_DECL PgfDTyp { struct PGF_INTERNAL_DECL PgfDTyp {
ref<PgfVector<PgfHypo>> hypos; ref<Vector<PgfHypo>> hypos;
ref<PgfVector<PgfExpr>> exprs; ref<Vector<PgfExpr>> exprs;
PgfText name; PgfText name;
}; };
@@ -95,7 +95,7 @@ struct PGF_INTERNAL_DECL PgfPattApp {
static const uint8_t tag = 0; static const uint8_t tag = 0;
ref<PgfText> ctor; ref<PgfText> ctor;
PgfVector<PgfPatt> args; Vector<PgfPatt> args;
}; };
struct PGF_INTERNAL_DECL PgfPattVar { struct PGF_INTERNAL_DECL PgfPattVar {
@@ -278,7 +278,7 @@ PGF_INTERNAL_DECL
void pgf_expr_free(PgfExpr expr); void pgf_expr_free(PgfExpr expr);
PGF_INTERNAL_DECL PGF_INTERNAL_DECL
void pgf_context_free(ref<PgfVector<PgfHypo>> hypos); void pgf_context_free(ref<Vector<PgfHypo>> hypos);
PGF_INTERNAL_DECL PGF_INTERNAL_DECL
void pgf_type_free(ref<PgfDTyp> dtyp); void pgf_type_free(ref<PgfDTyp> dtyp);

View File

@@ -171,21 +171,21 @@ Namespace<V> PgfReader::read_namespace(ref<V> (PgfReader::*read_value)())
} }
template <class C, class V> template <class C, class V>
ref<C> PgfReader::read_vector(PgfVector<V> C::* field, void (PgfReader::*read_value)(ref<V> val)) ref<C> PgfReader::read_vector(Vector<V> C::* field, void (PgfReader::*read_value)(ref<V> val))
{ {
size_t len = read_len(); size_t len = read_len();
ref<C> loc = vector_new<C,V>(field,len); ref<C> loc = vector_new<C,V>(field,len);
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
(this->*read_value)(vector_elem(ref<PgfVector<V>>::from_ptr(&(loc->*field)),i)); (this->*read_value)(vector_elem(ref<Vector<V>>::from_ptr(&(loc->*field)),i));
} }
return loc; return loc;
} }
template <class V> template <class V>
ref<PgfVector<V>> PgfReader::read_vector(void (PgfReader::*read_value)(ref<V> val)) ref<Vector<V>> PgfReader::read_vector(void (PgfReader::*read_value)(ref<V> val))
{ {
size_t len = read_len(); size_t len = read_len();
ref<PgfVector<V>> vec = vector_new<V>(len); ref<Vector<V>> vec = vector_new<V>(len);
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
(this->*read_value)(vector_elem(vec,i)); (this->*read_value)(vector_elem(vec,i));
} }
@@ -309,7 +309,7 @@ void PgfReader::read_hypo(ref<PgfHypo> hypo)
ref<PgfDTyp> PgfReader::read_type() ref<PgfDTyp> PgfReader::read_type()
{ {
ref<PgfVector<PgfHypo>> hypos = ref<Vector<PgfHypo>> hypos =
read_vector<PgfHypo>(&PgfReader::read_hypo); read_vector<PgfHypo>(&PgfReader::read_hypo);
ref<PgfDTyp> tp = read_name<PgfDTyp>(&PgfDTyp::name); ref<PgfDTyp> tp = read_name<PgfDTyp>(&PgfDTyp::name);
tp->hypos = hypos; tp->hypos = hypos;

View File

@@ -45,10 +45,10 @@ public:
Namespace<V> read_namespace(ref<V> (PgfReader::*read_value)()); Namespace<V> read_namespace(ref<V> (PgfReader::*read_value)());
template <class C, class V> template <class C, class V>
ref<C> read_vector(PgfVector<V> C::* field, void (PgfReader::*read_value)(ref<V> val)); ref<C> read_vector(Vector<V> C::* field, void (PgfReader::*read_value)(ref<V> val));
template<class V> template<class V>
ref<PgfVector<V>> read_vector(void (PgfReader::*read_value)(ref<V> val)); ref<Vector<V>> read_vector(void (PgfReader::*read_value)(ref<V> val));
PgfLiteral read_literal(); PgfLiteral read_literal();
PgfExpr read_expr(); PgfExpr read_expr();
@@ -89,7 +89,7 @@ private:
void read_text2(ref<ref<PgfText>> r) { *r = read_text(); }; void read_text2(ref<ref<PgfText>> r) { *r = read_text(); };
void read_lparam(ref<ref<PgfLParam>> r) { *r = read_lparam(); }; void read_lparam(ref<ref<PgfLParam>> r) { *r = read_lparam(); };
void read_symbol2(ref<PgfSymbol> r) { *r = read_symbol(); }; void read_symbol2(ref<PgfSymbol> r) { *r = read_symbol(); };
void read_seq2(ref<ref<PgfVector<PgfSymbol>>> r) { *r = read_vector(&PgfReader::read_symbol2); } void read_seq2(ref<ref<Vector<PgfSymbol>>> r) { *r = read_vector(&PgfReader::read_symbol2); }
template<class I> template<class I>
ref<I> read_symbol_idx(); ref<I> read_symbol_idx();

View File

@@ -2,30 +2,30 @@
#define VECTOR_H #define VECTOR_H
template <class A> template <class A>
struct PgfVector { struct Vector {
size_t len; size_t len;
A data[]; A data[];
}; };
template <class A> inline template <class A> inline
ref<PgfVector<A>> vector_new(size_t len) ref<Vector<A>> vector_new(size_t len)
{ {
ref<PgfVector<A>> res = PgfDB::malloc<PgfVector<A>>(len*sizeof(A)); ref<Vector<A>> res = PgfDB::malloc<Vector<A>>(len*sizeof(A));
res->len = len; res->len = len;
return res; return res;
} }
template <class C, class A> inline template <class C, class A> inline
ref<C> vector_new(PgfVector<A> C::* field, size_t len) ref<C> vector_new(Vector<A> C::* field, size_t len)
{ {
ptrdiff_t offset = (ptrdiff_t) &(((C*) NULL)->*field); ptrdiff_t offset = (ptrdiff_t) &(((C*) NULL)->*field);
ref<C> res = PgfDB::malloc<PgfVector<A>>(offset+len*sizeof(A)).as_object()-offset; ref<C> res = PgfDB::malloc<Vector<A>>(offset+len*sizeof(A)).as_object()-offset;
(res->*field).len = len; (res->*field).len = len;
return res; return res;
} }
template <class A> inline template <class A> inline
ref<A> vector_elem(ref<PgfVector<A>> v, size_t index) ref<A> vector_elem(ref<Vector<A>> v, size_t index)
{ {
return ref<A>::from_ptr(&v->data[index]); return ref<A>::from_ptr(&v->data[index]);
} }

View File

@@ -151,7 +151,7 @@ void PgfWriter::write_namespace_helper(Namespace<V> nmsp, void (PgfWriter::*writ
} }
template<class V> template<class V>
void PgfWriter::write_vector(ref<PgfVector<V>> vec, void (PgfWriter::*write_value)(ref<V> val)) void PgfWriter::write_vector(ref<Vector<V>> vec, void (PgfWriter::*write_value)(ref<V> val))
{ {
write_len(vec->len); write_len(vec->len);
for (size_t i = 0; i < vec->len; i++) { for (size_t i = 0; i < vec->len; i++) {
@@ -262,7 +262,7 @@ void PgfWriter::write_patt(PgfPatt patt)
case PgfPattApp::tag: { case PgfPattApp::tag: {
auto papp = ref<PgfPattApp>::untagged(patt); auto papp = ref<PgfPattApp>::untagged(patt);
write_name(papp->ctor); write_name(papp->ctor);
write_vector(ref<PgfVector<PgfPatt>>::from_ptr(&papp->args), &PgfWriter::write_patt); write_vector(ref<Vector<PgfPatt>>::from_ptr(&papp->args), &PgfWriter::write_patt);
break; break;
} }
case PgfPattVar::tag: { case PgfPattVar::tag: {
@@ -304,7 +304,7 @@ void PgfWriter::write_defn(ref<ref<PgfEquation>> r)
{ {
ref<PgfEquation> equ = *r; ref<PgfEquation> equ = *r;
write_vector(ref<PgfVector<PgfPatt>>::from_ptr(&equ->patts), &PgfWriter::write_patt); write_vector(ref<Vector<PgfPatt>>::from_ptr(&equ->patts), &PgfWriter::write_patt);
write_expr(equ->body); write_expr(equ->body);
} }
@@ -451,7 +451,7 @@ void PgfWriter::write_symbol(PgfSymbol sym)
} }
} }
void PgfWriter::write_seq(ref<PgfVector<PgfSymbol>> seq) void PgfWriter::write_seq(ref<Vector<PgfSymbol>> seq)
{ {
write_vector(seq, &PgfWriter::write_symbol); write_vector(seq, &PgfWriter::write_symbol);
} }

View File

@@ -23,7 +23,7 @@ public:
void write_namespace(Namespace<V> nmsp, void (PgfWriter::*write_value)(ref<V>)); void write_namespace(Namespace<V> nmsp, void (PgfWriter::*write_value)(ref<V>));
template<class V> template<class V>
void write_vector(ref<PgfVector<V>> vec, void (PgfWriter::*write_value)(ref<V> val)); void write_vector(ref<Vector<V>> vec, void (PgfWriter::*write_value)(ref<V> val));
void write_literal(PgfLiteral literal); void write_literal(PgfLiteral literal);
void write_expr(PgfExpr expr); void write_expr(PgfExpr expr);
@@ -45,7 +45,7 @@ public:
void write_lparam(ref<PgfLParam> lparam); void write_lparam(ref<PgfLParam> lparam);
void write_parg(ref<PgfPArg> linarg); void write_parg(ref<PgfPArg> linarg);
void write_symbol(PgfSymbol sym); void write_symbol(PgfSymbol sym);
void write_seq(ref<PgfVector<PgfSymbol>> seq); void write_seq(ref<Vector<PgfSymbol>> seq);
void write_lin(ref<PgfConcrLin> lin); void write_lin(ref<PgfConcrLin> lin);
void write_printname(ref<PgfConcrPrintname> printname); void write_printname(ref<PgfConcrPrintname> printname);
@@ -60,7 +60,7 @@ private:
void write_patt(ref<PgfPatt> r) { write_patt(*r); }; void write_patt(ref<PgfPatt> r) { write_patt(*r); };
void write_text(ref<ref<PgfText>> r) { write_text(&(**r)); }; void write_text(ref<ref<PgfText>> r) { write_text(&(**r)); };
void write_lparam(ref<ref<PgfLParam>> r) { write_lparam(*r); }; void write_lparam(ref<ref<PgfLParam>> r) { write_lparam(*r); };
void write_seq(ref<ref<PgfVector<PgfSymbol>>> r) { write_seq(*r); }; void write_seq(ref<ref<Vector<PgfSymbol>>> r) { write_seq(*r); };
void write_symbol(ref<PgfSymbol> r) { write_symbol(*r); }; void write_symbol(ref<PgfSymbol> r) { write_symbol(*r); };
FILE *out; FILE *out;