diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/utils/asymptote/virtualfieldaccess.cc | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/virtualfieldaccess.cc')
-rw-r--r-- | Build/source/utils/asymptote/virtualfieldaccess.cc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/virtualfieldaccess.cc b/Build/source/utils/asymptote/virtualfieldaccess.cc new file mode 100644 index 00000000000..aed130f33a6 --- /dev/null +++ b/Build/source/utils/asymptote/virtualfieldaccess.cc @@ -0,0 +1,45 @@ +/***** + * virtualfieldaccess.cc + * Andy Hammerlindl 2009/07/23 + * + * Implements the access subclass used to read and write virtual fields. + *****/ + +#include "virtualfieldaccess.h" +#include "coder.h" + +namespace trans { + +void virtualFieldAccess::encode(action act, position pos, coder &e) +{ + switch(act) { + case CALL: + if (caller) { + caller->encode(CALL, pos, e); + } else { + this->encode(READ, pos, e); + e.encode(inst::popcall); + } + return; + case READ: + assert(getter); + getter->encode(CALL, pos, e); + return; + case WRITE: + if (setter) + setter->encode(CALL, pos, e); + else { + em.error(pos); + em << "virtual field is read-only"; + } + return; + } +} + +void virtualFieldAccess::encode(action act, position pos, coder &e, frame *) +{ + e.encode(inst::pop); + encode(act, pos, e); +} + +} // namespace trans |