public static StateBuffer run_qstr(YVALUE v, StateBuffer sb) { var nsb = sb; var item = nsb.m_pvitem; item.o = v.GetString(); nsb.m_pvitem = item; return(nsb); }
public static StateBuffer run_name(YVALUE v, StateBuffer sb) { var nsb = sb; var name = v.GetString(); PointervarItem item = nsb.m_pvitem; var preobj = item.o; //先行ロケーションアイテムの値 if (preobj == null) //先行値がないのでNAMEとしてバッファを検索し、なければリテラルとして処理を以降に任せる { if (nsb.exist(name)) { item.o = nsb.get(name); } else { var literal = new Literal(); literal.s = name; item.o = literal; } nsb.m_pvitem = item; return(nsb); } var pretype = preobj.GetType(); if (pretype == typeof(Literal)) { var literal = (Literal)preobj; item = GetObj(literal.s, name, item); nsb.m_pvitem = item; return(nsb); } if (pretype == typeof(Hashtable)) { var ht = (Hashtable)preobj; var nameo = name.ToUpper(); item.o = ht[nameo]; item.getter = () => ht[nameo]; item.setter_parametertype = null; item.setter = (x) => ht[nameo] = x; nsb.m_pvitem = item; return(nsb); } item = GetObj(preobj, name, item); nsb.m_pvitem = item; return(nsb); }