Fanx.Fcode.FPod.nname C# (CSharp) Méthode

nname() public méthode

public nname ( int index ) : string
index int
Résultat string
        public string nname(int index)
        {
            return typeRef(index).nname();
        }

Usage Example

Exemple #1
0
        public static Assembly emitPod(FPod pod, bool load, string path)
        {
            string podName = pod.m_podName;
              Assembly assembly = (Assembly)assemblies[podName];
              if (assembly == null)
              {
            Emitter emitter = new Emitter(podName, path);

            // unzip the native.dll if one exists
            unzipToTemp(pod, podName + "Native_.dll");
            unzipToTemp(pod, podName + "Native_.pdb");

            // emit the pod class itself (which declares all constants)
            //FPodEmit.EmitAndLoad(emitter, pod);
            FPodEmit.emit(emitter, pod);

            // the Emitter needs base types to be defined before
            // descendant types, so make sure everything gets stubbed
            // out in the correct order ahead of time
            for (int i=0; i<pod.m_types.Length; i++)
              emitter.findType(pod.nname(pod.m_types[i].m_self));

            // emit all the rest of the types in this pod
            for (int i=0; i<pod.m_types.Length; i++)
            {
              FType ftype = pod.m_types[i];
              FTypeRef tref = ftype.m_pod.typeRef(ftype.m_self);
              Type parent = Type.find(tref.podName+"::"+tref.typeName, true);

              // make sure we have reflected to setup slots
              parent.reflect();

              // route based on type
              if ((ftype.m_flags & FConst.Mixin) != 0)
              {
            // interface
            FMixinInterfaceEmit iemit = new FMixinInterfaceEmit(emitter, parent, ftype);
            iemit.emit();

            // body class
            FMixinBodyEmit bemit = new FMixinBodyEmit(emitter, parent, ftype);
            bemit.emit();

            ftypes[ftype] = new FTypeEmit[] { iemit, bemit };
              }
              else if (parent.@is(Sys.ErrType))
              {
            // error
            FErrEmit emitErr = new FErrEmit(emitter, parent, ftype);
            emitErr.emit();

            FErrValEmit emitErrVal = new FErrValEmit(emitter, parent, ftype);
            emitErrVal.emit();

            ftypes[ftype] = new FTypeEmit[] { emitErr, emitErrVal };
              }
              else
              {
            // class
            FClassEmit emit = new FClassEmit(emitter, parent, ftype);
            emit.emit();
            ftypes[ftype] = new FTypeEmit[] { emit };
              }
            }

            // commit assembly
            byte[] buf = emitter.commit();
            if (load)
            {
              //long start = System.Environment.TickCount;

              // load assembly
              assembly = (buf == null)
            ? Assembly.LoadFile(emitter.fileName)
            : Assembly.Load(buf);
              assemblies[podName] = assembly;

              //long end = System.Environment.TickCount;
              //System.Console.WriteLine("load " + podName + " in " + (end-start) + " ms");

              // load $Pod type
              FPodEmit.load(assembly, pod);
            }
              }
              return assembly;
        }