| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- const nnef = {};
- nnef.ModelFactory = class {
- async match(context) {
- const identifier = context.identifier;
- const extension = identifier.lastIndexOf('.') > 0 ? identifier.split('.').pop().toLowerCase() : '';
- switch (extension) {
- case 'nnef': {
- const reader = await nnef.TextReader.open(context);
- if (reader) {
- return context.set('nnef.graph', reader);
- }
- break;
- }
- case 'dat': {
- const stream = context.stream;
- if (stream && stream.length > 2) {
- const buffer = stream.peek(2);
- if (buffer[0] === 0x4E && buffer[1] === 0xEF) {
- return context.set('nnef.dat', stream);
- }
- }
- break;
- }
- default:
- break;
- }
- return null;
- }
- filter(context, match) {
- return context.type !== 'nnef.graph' || match.type !== 'nnef.dat';
- }
- async open(context) {
- switch (context.type) {
- case 'nnef.graph': {
- const reader = context.value;
- throw new nnef.Error(`NNEF v${reader.version} support not implemented.`);
- }
- case 'nnef.dat': {
- throw new nnef.Error('NNEF dat format support not implemented.');
- }
- default: {
- throw new nnef.Error(`Unsupported NNEF format '${context.type}'.`);
- }
- }
- }
- };
- nnef.TextReader = class {
- static async open(context) {
- const reader = await context.read('text', 65536);
- for (let i = 0; i < 32; i++) {
- const line = reader.read('\n');
- const match = /version\s*(\d+\.\d+);/.exec(line);
- if (match) {
- return new nnef.TextReader(context, match[1]);
- }
- if (line === undefined) {
- break;
- }
- }
- return null;
- }
- constructor(context, version) {
- this.context = context;
- this.version = version;
- }
- };
- nnef.Error = class extends Error {
- constructor(message) {
- super(message);
- this.name = 'Error loading NNEF model.';
- }
- };
- export const ModelFactory = nnef.ModelFactory;
|