844 }
845 // extend arguments array
846 Object[] newArgs = Arrays.copyOf(initName.arguments, initName.arguments.length + 1);
847 newArgs[newArgs.length - 1] = ctorMN;
848 // replace function
849 final NamedFunction nf = new NamedFunction(linkerMN);
850 final Name linkedCtor = new Name(nf, newArgs);
851 linkedCtor.initIndex(initNameIndex);
852 lf.names[initNameIndex] = linkedCtor;
853 return cmh;
854 }
855
856 }
857
858 private static final Lookup LOOKUP = Lookup.IMPL_LOOKUP;
859
860 /**
861 * All subclasses must provide such a value describing their type signature.
862 */
863 static final SpeciesData SPECIES_DATA = SpeciesData.EMPTY;
864 }
|
844 }
845 // extend arguments array
846 Object[] newArgs = Arrays.copyOf(initName.arguments, initName.arguments.length + 1);
847 newArgs[newArgs.length - 1] = ctorMN;
848 // replace function
849 final NamedFunction nf = new NamedFunction(linkerMN);
850 final Name linkedCtor = new Name(nf, newArgs);
851 linkedCtor.initIndex(initNameIndex);
852 lf.names[initNameIndex] = linkedCtor;
853 return cmh;
854 }
855
856 }
857
858 private static final Lookup LOOKUP = Lookup.IMPL_LOOKUP;
859
860 /**
861 * All subclasses must provide such a value describing their type signature.
862 */
863 static final SpeciesData SPECIES_DATA = SpeciesData.EMPTY;
864
865 private static final SpeciesData[] SPECIES_DATA_CACHE = new SpeciesData[4];
866 private static SpeciesData checkCache(int index, String types) {
867 SpeciesData data = SPECIES_DATA_CACHE[index];
868 if (data != null) return data;
869 SPECIES_DATA_CACHE[index] = data = getSpeciesData(types);
870 return data;
871 }
872 static SpeciesData speciesData_L() { return checkCache(1, "L"); }
873 static SpeciesData speciesData_LL() { return checkCache(2, "LL"); }
874 static SpeciesData speciesData_LLL() { return checkCache(3, "LLL"); }
875 }
|