public DynamicDatatypeLibraryFactory(string dir, string mask)
        {
            string[] fileNames = Directory.GetFiles(dir, mask);

            plugins = new DatatypeLibraryFactory[fileNames.Length];
            int idx = 0;

            // load assembly files
            foreach (string name in fileNames)
            {
                try
                {
                    AssemblyName n = new AssemblyName();
                    n.CodeBase = name;
                    Assembly a = Assembly.Load(n);
                    plugins[idx++] = (DatatypeLibraryFactory)Activator.CreateInstance(
                        a.GetType("DatatypeLibraryFactoryImpl"));
                }
                catch (Exception) {}                  // ignore this plug-in and proceed to next
            }
        }
Esempio n. 2
0
 private static Datatype[] createDatatypes( DatatypeLibraryFactory factory, object[] encodedDatatypes )
 {
     Datatype[] datatypes = new Datatype[encodedDatatypes.Length/3];
     for( int i=0; i<datatypes.Length; i++ ) {
         datatypes[i] = createDatatype( factory,
             (string)encodedDatatypes[i*3],
             (string)encodedDatatypes[i*3+1],
             (object[])encodedDatatypes[i*3+2] );
     }
     return datatypes;
 }
Esempio n. 3
0
        private static Datatype createDatatype( DatatypeLibraryFactory factory,
            string nsUri, string localName, object[] parameters)
        {
            if( nsUri.Length==0 ) {
                // since those parameters were compiled, we don't need to check the error.
                if( localName[0]=='t' )      return TokenType.theInstance;
                else                         return StringType.theInstance;
            }

            DatatypeLibrary lib = factory.CreateDatatypeLibrary(nsUri);
            if(lib==null)
                throw new DatatypeException("unable to locate a datatype library for "+nsUri);

            DatatypeBuilder builder = lib.CreateDatatypeBuilder(localName);

            for( int i=0; i<parameters.Length; i+=3 ) {
                ValidationContext context = createContext( (string[])parameters[i+2] );

                builder.AddParameter(
                    (string)parameters[i],
                    (string)parameters[i+1],
                    context );
            }

            return builder.CreateDatatype();
        }
Esempio n. 4
0
        public Schema(
            string nameLiterals,
            int defaultNameCode,
            string encStates,
            string encATr,
            string encDTr,
            string encETr,
            string encITr,
            string encLTr,
            string encNTr,
            string encVTr,
            object[] encDatatypes,
            object[] values,
            DatatypeLibraryFactory datatypeFactory)
            : this(nameLiterals, defaultNameCode, encStates,
				encATr, encDTr, encETr, encITr, encLTr, encNTr, encVTr,
				createDatatypes( datatypeFactory, encDatatypes ),
				values)
        {
        }