summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/name.cc
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/utils/asymptote/name.cc
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/name.cc')
-rw-r--r--Build/source/utils/asymptote/name.cc326
1 files changed, 0 insertions, 326 deletions
diff --git a/Build/source/utils/asymptote/name.cc b/Build/source/utils/asymptote/name.cc
deleted file mode 100644
index d16e6e1e93b..00000000000
--- a/Build/source/utils/asymptote/name.cc
+++ /dev/null
@@ -1,326 +0,0 @@
-/*****
- * name.cc
- * Andy Hammerlindl2002/07/14
- *
- * Qualified names (such as x, f, builtin.sin, a.b.c.d, etc.) can be used
- * either as variables or a type names. This class stores qualified
- * names used in nameExp and nameTy in the abstract syntax, and
- * implements the exp and type functions.
- *****/
-
-#include "name.h"
-#include "frame.h"
-#include "record.h"
-#include "coenv.h"
-#include "inst.h"
-
-namespace absyntax {
-using namespace types;
-using trans::access;
-using trans::qualifiedAccess;
-using trans::action;
-using trans::READ;
-using trans::WRITE;
-using trans::CALL;
-using vm::inst;
-
-
-types::ty *signatureless(types::ty *t) {
- if (overloaded *o=dynamic_cast<overloaded *>(t))
- return o->signatureless();
- else
- return (t && !t->getSignature()) ? t : 0;
-}
-
-
-void name::forceEquivalency(action act, coenv &e,
- types::ty *target, types::ty *source)
-{
- if (act == READ)
- e.implicitCast(getPos(), target, source);
- else if (!equivalent(target, source)) {
- em.compiler(getPos());
- em << "type mismatch in variable: "
- << *target
- << " vs " << *source;
- }
-}
-
-frame *name::frameTrans(coenv &e)
-{
- if (types::ty *t=signatureless(varGetType(e))) {
- if (t->kind == types::ty_record) {
- varTrans(READ, e, t);
- return ((record *)t)->getLevel();
- }
- else
- return 0;
- }
- else
- return tyFrameTrans(e);
-}
-
-
-types::ty *name::getType(coenv &e, bool tacit)
-{
- types::ty *t=signatureless(varGetType(e));
- if (!tacit && t && t->kind == ty_error)
- // Report errors associated with regarding the name as a variable.
- varTrans(trans::READ, e, t);
- return t ? t : typeTrans(e, tacit);
-}
-
-
-varEntry *simpleName::getVarEntry(coenv &e)
-{
- types::ty *t=signatureless(varGetType(e));
- return t ? e.e.lookupVarByType(id, t) : 0;
-}
-
-void simpleName::varTrans(action act, coenv &e, types::ty *target)
-{
- varEntry *v = e.e.lookupVarByType(id, target);
-
- if (v) {
- v->encode(act, getPos(), e.c);
- forceEquivalency(act, e, target, v->getType());
- }
- else {
- em.error(getPos());
- em << "no matching variable of name \'" << id << "\'";
- }
-}
-
-types::ty *simpleName::varGetType(coenv &e)
-{
- return e.e.varGetType(id);
-}
-
-trans::varEntry *simpleName::getCallee(coenv &e, signature *sig)
-{
- varEntry *ve = e.e.lookupVarBySignature(id, sig);
- return ve;
-}
-
-types::ty *simpleName::typeTrans(coenv &e, bool tacit)
-{
- types::ty *t = e.e.lookupType(id);
- if (t) {
- return t;
- }
- else {
- if (!tacit) {
- em.error(getPos());
- em << "no type of name \'" << id << "\'";
- }
- return primError();
- }
-}
-
-tyEntry *simpleName::tyEntryTrans(coenv &e)
-{
- tyEntry *ent = e.e.lookupTyEntry(id);
- if (!ent) {
- em.error(getPos());
- em << "no type of name \'" << id << "\'";
- return new tyEntry(primError(), 0, 0, position());
- }
- return ent;
-}
-
-frame *simpleName::tyFrameTrans(coenv &e)
-{
- tyEntry *ent = e.e.lookupTyEntry(id);
- if (ent && ent->t->kind==types::ty_record && ent->v) {
- ent->v->encode(READ, getPos(), e.c);
- return ent->v->getLevel();
- }
- else
- return 0;
-}
-
-void simpleName::prettyprint(ostream &out, Int indent)
-{
- prettyindent(out, indent);
- out << "simpleName '" << id << "'\n";
-}
-
-
-record *qualifiedName::castToRecord(types::ty *t, bool tacit)
-{
- switch (t->kind) {
- case ty_overloaded:
- if (!tacit) {
- em.compiler(qualifier->getPos());
- em << "name::getType returned overloaded";
- }
- return 0;
- case ty_record:
- return (record *)t;
- case ty_error:
- return 0;
- default:
- if (!tacit) {
- em.error(qualifier->getPos());
- em << "type \'" << *t << "\' is not a structure";
- }
- return 0;
- }
-}
-
-bool qualifiedName::varTransVirtual(action act, coenv &e,
- types::ty *target, types::ty *qt)
-{
- varEntry *v = qt->virtualField(id, target->getSignature());
- if (v) {
- // Push qualifier onto stack.
- qualifier->varTrans(READ, e, qt);
-
- v->encode(act, getPos(), e.c);
-
- // A virtual field was used.
- return true;
- }
-
- // No virtual field.
- return false;
-}
-
-void qualifiedName::varTransField(action act, coenv &e,
- types::ty *target, record *r)
-{
- varEntry *v = r->e.lookupVarByType(id, target);
-
- if (v) {
- frame *f = qualifier->frameTrans(e);
- if (f)
- v->encode(act, getPos(), e.c, f);
- else
- v->encode(act, getPos(), e.c);
-
- forceEquivalency(act, e, target, v->getType());
- }
- else {
- em.error(getPos());
- em << "no matching field of name \'" << id << "\' in \'" << *r << "\'";
- }
-}
-
-void qualifiedName::varTrans(action act, coenv &e, types::ty *target)
-{
- types::ty *qt = qualifier->getType(e);
-
- // Use virtual fields if applicable.
- if (varTransVirtual(act, e, target, qt))
- return;
-
- record *r = castToRecord(qt);
- if (r)
- varTransField(act, e, target, r);
-}
-
-types::ty *qualifiedName::varGetType(coenv &e)
-{
- types::ty *qt = qualifier->getType(e, true);
-
- // Look for virtual fields.
- types::ty *t = qt->virtualFieldGetType(id);
- if (t)
- return t;
-
- record *r = castToRecord(qt, true);
- return r ? r->e.varGetType(id) : 0;
-}
-
-trans::varEntry *qualifiedName::getCallee(coenv &e, signature *sig)
-{
- // getTypeAsCallee is an optimization attempt. We don't try optimizing the
- // rarer qualifiedName call case.
- // TODO: See if this is worth implementing.
- //cout << "FAIL BY QUALIFIED NAME" << endl;
- return 0;
-}
-
-trans::varEntry *qualifiedName::getVarEntry(coenv &e)
-{
- varEntry *qv = qualifier->getVarEntry(e);
-
- types::ty *qt = qualifier->getType(e, true);
- record *r = castToRecord(qt, true);
- if (r) {
- types::ty *t = signatureless(r->e.varGetType(id));
- varEntry *v = t ? r->e.lookupVarByType(id, t) : 0;
- return trans::qualifyVarEntry(qv,v);
- }
- else
- return qv;
-}
-
-types::ty *qualifiedName::typeTrans(coenv &e, bool tacit)
-{
- types::ty *rt = qualifier->getType(e, tacit);
-
- record *r = castToRecord(rt, tacit);
- if (!r)
- return primError();
-
- tyEntry *ent = r->e.lookupTyEntry(id);
- if (ent) {
- if (!tacit)
- ent->reportPerm(READ, getPos(), e.c);
- return ent->t;
- }
- else {
- if (!tacit) {
- em.error(getPos());
- em << "no matching field or type of name \'" << id << "\' in \'"
- << *r << "\'";
- }
- return primError();
- }
-}
-
-tyEntry *qualifiedName::tyEntryTrans(coenv &e)
-{
- types::ty *rt = qualifier->getType(e, false);
-
- record *r = castToRecord(rt, false);
- if (!r)
- return new tyEntry(primError(), 0, 0, position());
-
- tyEntry *ent = r->e.lookupTyEntry(id);
- if (!ent) {
- em.error(getPos());
- em << "no matching type of name \'" << id << "\' in \'"
- << *r << "\'";
- return new tyEntry(primError(), 0, 0, position());
- }
- ent->reportPerm(READ, getPos(), e.c);
-
- return trans::qualifyTyEntry(qualifier->getVarEntry(e), ent);
-}
-
-frame *qualifiedName::tyFrameTrans(coenv &e)
-{
- frame *f=qualifier->frameTrans(e);
- tyEntry *ent = e.e.lookupTyEntry(id);
- if (ent && ent->t->kind==types::ty_record && ent->v) {
- if (f)
- ent->v->encode(READ, getPos(), e.c, f);
- else
- ent->v->encode(READ, getPos(), e.c);
- return ent->v->getLevel();
- }
- else
- return f;
-}
-
-void qualifiedName::prettyprint(ostream &out, Int indent)
-{
- prettyindent(out, indent);
- out << "qualifiedName '" << id << "'\n";
-
- qualifier->prettyprint(out, indent+1);
-}
-
-} // namespace absyntax