Ejemplo n.º 1
0
        //добавление фиктивного метода (если метод содерж. вложенные, создается заглушка)
        //т. е. метод не добавл. в таблицу
        public MethInfo AddFictiveMethod(IFunctionNode func, MethodBuilder mi)
        {
            MethInfo m = new MethInfo(mi);

            //defs[func] = m;
            return(m);
        }
Ejemplo n.º 2
0
        //добавление функции (метода)
        public MethInfo AddMethod(IFunctionNode func, MethodInfo mi)
        {
            MethInfo m = new MethInfo(mi);

            defs[func] = m;
            return(m);
        }
Ejemplo n.º 3
0
        //добавление функции, вложенной в функцию
        public MethInfo AddMethod(IFunctionNode func, MethodInfo mi, MethInfo up)
        {
            MethInfo m = new MethInfo(mi);

            m.up_meth  = up;
            defs[func] = m;
            return(m);
        }
Ejemplo n.º 4
0
        //добавление конструктора
        public MethInfo AddConstructor(IFunctionNode func, ConstructorInfo ci)
        {
            //ConstrInfo m = new ConstrInfo(ci);
            MethInfo mi = new MethInfo();

            mi.cnstr   = ci;
            defs[func] = mi;
            return(mi);
        }
Ejemplo n.º 5
0
        public ConstructorBuilder GetConstructorBuilder(IFunctionNode meth)
        {
            MethInfo ci = defs[meth] as MethInfo;

            if (ci != null)
            {
                return(ci.cnstr as ConstructorBuilder);
            }
            return(null);
        }
Ejemplo n.º 6
0
        public MethodBuilder GetMethodBuilder(IFunctionNode meth)
        {
            MethInfo mi = defs[meth] as MethInfo;

            if (mi != null)
            {
                return(mi.mi as MethodBuilder);
            }
            return(null);
        }
Ejemplo n.º 7
0
        static ShaderTraverseResult Traverse(this IFunctionNode node, ShaderTraverseResult result = null)
        {
            if (result.LocalDeclarations.ContainsKey(node))
            {
                return(result);
            }

            foreach (var arg in node.NodeArguments)
            {
                arg.Traverse(result);
            }

            result.FunctionDeclarations[node.Name] = node.Code;

            var args = node.NodeArguments.Select(a => result.GetPhrase(a));

            result.LocalDeclarations[node] = node.CreateShaderCallAssignment($"var{result.LocalDeclarations.Count}", args);

            return(result);
        }
Ejemplo n.º 8
0
        //ssyy
        public static string GetFullMethodHeaderString(IFunctionNode member)
        {
            string s = member.name;

            IParameterNode[] ps = member.parameters;
            if (ps.Length > 0)
            {
                s += '(';
                s += ps[0].type.name;
                for (int i = 1; i < ps.Length; i++)
                {
                    s += "," + ps[i].type.name;
                }
                s += ')';
            }
            if (member.return_value_type != null)
            {
                s += ":" + member.return_value_type.name;
            }
            return(s);
        }
Ejemplo n.º 9
0
        //добавление конструктора
		public MethInfo AddConstructor(IFunctionNode func, ConstructorInfo ci)
		{
			//ConstrInfo m = new ConstrInfo(ci);
			MethInfo mi = new MethInfo();
			mi.cnstr = ci;
			defs[func] = mi;
			return mi;
		}
Ejemplo n.º 10
0
 public string GetPhrase(IFunctionNode node) => LocalDeclarations[node].Identifier;
 public virtual void visit(IFunctionNode value)
 {
 }
Ejemplo n.º 12
0
 public void visit(IFunctionNode value)
 {
     string s = value.GetType().Name + ".";
     prepare_string_node(value.name, s + "name");
     prepare_string_node(value.node_kind.ToString(), s + "node_kind");
     prepare_string_node(value.node_location_kind.ToString(), s + "node_location_kind");
     //prepare_collection(value.parameters, s + "parameters", "parameters", value.parameters.Length);
     //value.return_value_type 
     prepare_node(value.return_value_type, s + "return_value_type"); 
 }
Ejemplo n.º 13
0
		public virtual void visit(IFunctionNode value)
		{
		}
Ejemplo n.º 14
0
 private string GetPossibleAccessorName(IFunctionNode fn, out bool get_set)
 {
     /*string name = accessors_names[fn] as string;
     get_set = false;
     if (name == null) return fn.name;
     get_set = true;
     return name;*/
     get_set = false;
     return fn.name;
 }
Ejemplo n.º 15
0
        //получение метода
		public MethInfo GetMethod(IFunctionNode func)
		{
			return (MethInfo)defs[func];
		}
Ejemplo n.º 16
0
        //добавление функции, вложенной в функцию
		public MethInfo AddMethod(IFunctionNode func, MethodInfo mi, MethInfo up)
		{
			MethInfo m = new MethInfo(mi);
			m.up_meth = up;
			defs[func] = m;
			return m;
		}
Ejemplo n.º 17
0
        //добавление функции (метода)
		public MethInfo AddMethod(IFunctionNode func, MethodInfo mi)
		{
			MethInfo m = new MethInfo(mi);
			defs[func] = m;
			return m;
		}
Ejemplo n.º 18
0
 //добавление фиктивного метода (если метод содерж. вложенные, создается заглушка)
 //т. е. метод не добавл. в таблицу
 public MethInfo AddFictiveMethod(IFunctionNode func, MethodBuilder mi)
 {
     MethInfo m = new MethInfo(mi);
     //defs[func] = m;
     return m;
 }
Ejemplo n.º 19
0
        //получение конструктора
		public MethInfo GetConstructor(IFunctionNode func)
		{
			MethInfo mi = (MethInfo)defs[func];
			return mi;
		}
Ejemplo n.º 20
0
		public MethodBuilder GetMethodBuilder(IFunctionNode meth)
		{
			MethInfo mi = defs[meth] as MethInfo;
			if (mi != null)
			return mi.mi as MethodBuilder;
			return null;
		}
Ejemplo n.º 21
0
 //получение метода
 public MethInfo GetMethod(IFunctionNode func)
 {
     return((MethInfo)defs[func]);
 }
Ejemplo n.º 22
0
		public ConstructorBuilder GetConstructorBuilder(IFunctionNode meth)
		{
			MethInfo ci = defs[meth] as MethInfo;
			if (ci != null)
			return ci.cnstr as ConstructorBuilder;
			return null;
		}
Ejemplo n.º 23
0
        //получение конструктора
        public MethInfo GetConstructor(IFunctionNode func)
        {
            MethInfo mi = (MethInfo)defs[func];

            return(mi);
        }
Ejemplo n.º 24
0
 public void visit(IFunctionNode value)
 {
     throw new System.NotSupportedException(value.GetType().ToString());
 }