mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
PgfVector -> Vector
This commit is contained in:
@@ -15,7 +15,7 @@ void PgfAbsFun::release(ref<PgfAbsFun> absfun)
|
||||
pgf_expr_free(eq->body);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ struct PGF_INTERNAL_DECL PgfFlag {
|
||||
|
||||
typedef struct {
|
||||
PgfExpr body;
|
||||
PgfVector<PgfPatt> patts;
|
||||
Vector<PgfPatt> patts;
|
||||
} PgfEquation;
|
||||
|
||||
struct PGF_INTERNAL_DECL PgfAbsFun {
|
||||
@@ -80,7 +80,7 @@ struct PGF_INTERNAL_DECL PgfAbsFun {
|
||||
|
||||
ref<PgfDTyp> type;
|
||||
int arity;
|
||||
ref<PgfVector<ref<PgfEquation>>> defns;
|
||||
ref<Vector<ref<PgfEquation>>> defns;
|
||||
PgfExprProb ep;
|
||||
PgfText name;
|
||||
|
||||
@@ -90,7 +90,7 @@ struct PGF_INTERNAL_DECL PgfAbsFun {
|
||||
struct PGF_INTERNAL_DECL PgfAbsCat {
|
||||
size_t ref_count;
|
||||
|
||||
ref<PgfVector<PgfHypo>> context;
|
||||
ref<Vector<PgfHypo>> context;
|
||||
prob_t prob;
|
||||
PgfText name;
|
||||
|
||||
@@ -106,7 +106,7 @@ typedef struct {
|
||||
|
||||
struct PGF_INTERNAL_DECL PgfConcrLincat {
|
||||
size_t ref_count;
|
||||
ref<PgfVector<ref<PgfText>>> fields;
|
||||
ref<Vector<ref<PgfText>>> fields;
|
||||
PgfText name;
|
||||
|
||||
static void release(ref<PgfConcrLincat> lincat);
|
||||
@@ -180,9 +180,9 @@ struct PGF_INTERNAL_DECL PgfSymbolALLCAPIT {
|
||||
struct PGF_INTERNAL_DECL PgfConcrLin {
|
||||
size_t ref_count;
|
||||
|
||||
ref<PgfVector<PgfPArg>> args;
|
||||
ref<PgfVector<ref<PgfLParam>>> res;
|
||||
ref<PgfVector<ref<PgfVector<PgfSymbol>>>> seqs;
|
||||
ref<Vector<PgfPArg>> args;
|
||||
ref<Vector<ref<PgfLParam>>> res;
|
||||
ref<Vector<ref<Vector<PgfSymbol>>>> seqs;
|
||||
|
||||
PgfText name;
|
||||
|
||||
|
||||
@@ -1105,7 +1105,7 @@ void pgf_expr_free(PgfExpr expr)
|
||||
}
|
||||
|
||||
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++) {
|
||||
PgfDB::free(vector_elem(hypos, i)->cid);
|
||||
@@ -1136,7 +1136,7 @@ void pgf_patt_free(PgfPatt patt)
|
||||
auto papp = ref<PgfPattApp>::untagged(patt);
|
||||
PgfDB::free(papp->ctor);
|
||||
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);
|
||||
}
|
||||
PgfDB::free(papp);
|
||||
|
||||
@@ -30,8 +30,8 @@ struct PGF_INTERNAL_DECL PgfHypo {
|
||||
};
|
||||
|
||||
struct PGF_INTERNAL_DECL PgfDTyp {
|
||||
ref<PgfVector<PgfHypo>> hypos;
|
||||
ref<PgfVector<PgfExpr>> exprs;
|
||||
ref<Vector<PgfHypo>> hypos;
|
||||
ref<Vector<PgfExpr>> exprs;
|
||||
PgfText name;
|
||||
};
|
||||
|
||||
@@ -95,7 +95,7 @@ struct PGF_INTERNAL_DECL PgfPattApp {
|
||||
static const uint8_t tag = 0;
|
||||
|
||||
ref<PgfText> ctor;
|
||||
PgfVector<PgfPatt> args;
|
||||
Vector<PgfPatt> args;
|
||||
};
|
||||
|
||||
struct PGF_INTERNAL_DECL PgfPattVar {
|
||||
@@ -278,7 +278,7 @@ PGF_INTERNAL_DECL
|
||||
void pgf_expr_free(PgfExpr expr);
|
||||
|
||||
PGF_INTERNAL_DECL
|
||||
void pgf_context_free(ref<PgfVector<PgfHypo>> hypos);
|
||||
void pgf_context_free(ref<Vector<PgfHypo>> hypos);
|
||||
|
||||
PGF_INTERNAL_DECL
|
||||
void pgf_type_free(ref<PgfDTyp> dtyp);
|
||||
|
||||
@@ -171,21 +171,21 @@ Namespace<V> PgfReader::read_namespace(ref<V> (PgfReader::*read_value)())
|
||||
}
|
||||
|
||||
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();
|
||||
ref<C> loc = vector_new<C,V>(field,len);
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
ref<PgfVector<V>> vec = vector_new<V>(len);
|
||||
ref<Vector<V>> vec = vector_new<V>(len);
|
||||
for (size_t i = 0; i < len; 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<PgfVector<PgfHypo>> hypos =
|
||||
ref<Vector<PgfHypo>> hypos =
|
||||
read_vector<PgfHypo>(&PgfReader::read_hypo);
|
||||
ref<PgfDTyp> tp = read_name<PgfDTyp>(&PgfDTyp::name);
|
||||
tp->hypos = hypos;
|
||||
|
||||
@@ -45,10 +45,10 @@ public:
|
||||
Namespace<V> read_namespace(ref<V> (PgfReader::*read_value)());
|
||||
|
||||
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>
|
||||
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();
|
||||
PgfExpr read_expr();
|
||||
@@ -89,7 +89,7 @@ private:
|
||||
void read_text2(ref<ref<PgfText>> r) { *r = read_text(); };
|
||||
void read_lparam(ref<ref<PgfLParam>> r) { *r = read_lparam(); };
|
||||
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>
|
||||
ref<I> read_symbol_idx();
|
||||
|
||||
@@ -2,30 +2,30 @@
|
||||
#define VECTOR_H
|
||||
|
||||
template <class A>
|
||||
struct PgfVector {
|
||||
struct Vector {
|
||||
size_t len;
|
||||
A data[];
|
||||
};
|
||||
|
||||
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;
|
||||
return res;
|
||||
}
|
||||
|
||||
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);
|
||||
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;
|
||||
return res;
|
||||
}
|
||||
|
||||
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]);
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ void PgfWriter::write_namespace_helper(Namespace<V> nmsp, void (PgfWriter::*writ
|
||||
}
|
||||
|
||||
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);
|
||||
for (size_t i = 0; i < vec->len; i++) {
|
||||
@@ -262,7 +262,7 @@ void PgfWriter::write_patt(PgfPatt patt)
|
||||
case PgfPattApp::tag: {
|
||||
auto papp = ref<PgfPattApp>::untagged(patt);
|
||||
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;
|
||||
}
|
||||
case PgfPattVar::tag: {
|
||||
@@ -304,7 +304,7 @@ void PgfWriter::write_defn(ref<ref<PgfEquation>> 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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
void write_namespace(Namespace<V> nmsp, void (PgfWriter::*write_value)(ref<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_expr(PgfExpr expr);
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
void write_lparam(ref<PgfLParam> lparam);
|
||||
void write_parg(ref<PgfPArg> linarg);
|
||||
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_printname(ref<PgfConcrPrintname> printname);
|
||||
|
||||
@@ -60,7 +60,7 @@ private:
|
||||
void write_patt(ref<PgfPatt> r) { write_patt(*r); };
|
||||
void write_text(ref<ref<PgfText>> r) { write_text(&(**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); };
|
||||
|
||||
FILE *out;
|
||||
|
||||
Reference in New Issue
Block a user