mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-22 09:32:53 -06:00
PgfVector -> Vector
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user