📄 compositeparser.c
字号:
/*
========================================================================
DEVise Data Visualization Software
(c) Copyright 1992-1996
By the DEVise Development Group
Madison, Wisconsin
All Rights Reserved.
========================================================================
Under no circumstances is this software to be copied, distributed,
or altered in any way without prior permission from the DEVise
Development Group.
*/
/*
$Id: CompositeParser.c,v 1.4 1996/09/05 23:14:16 kmurli Exp $
$Log: CompositeParser.c,v $
Revision 1.4 1996/09/05 23:14:16 kmurli
Added a destructor to free the fileType char pointer after use.
CVS ----------------------------------------------------------------------
Revision 1.3 1996/03/26 20:22:01 jussi
Added copyright notice and cleaned up the code a bit.
Revision 1.2 1995/09/05 22:14:35 jussi
Added CVS header.
*/
#include <stdio.h>
#include "RecInterp.h"
#include "CompositeParser.h"
#include "Exit.h"
#include <malloc.h>
CompositeEntry CompositeParser::_entries[MAX_COMPOSITE_ENTRIES];
int CompositeParser::_numEntries = 0;
int CompositeParser::_hintIndex = -1;
CompositeParser::~CompositeParser()
{
for(int i = 0; i < _numEntries; i++)
free(_entries[i].fileType);
}
void CompositeParser::Register(char *fileType, UserComposite *userComposite){
if (_numEntries >= MAX_COMPOSITE_ENTRIES) {
fprintf(stderr,"CompositeParser:: too many entries\n");
Exit::DoExit(2);
}
_entries[_numEntries].fileType = (char * )fileType;
_entries[_numEntries].userComposite = userComposite;
_numEntries++;
}
void CompositeParser::Decode(char *fileType, RecInterp *recInterp)
{
if (_hintIndex >= 0 && !strcmp(fileType, _entries[_hintIndex].fileType)) {
/* found it */
_entries[_hintIndex].userComposite->Decode(recInterp);
return;
}
/* search for a matching file type */
for(int i = 0; i < _numEntries; i++) {
if (!strcmp(fileType,_entries[i].fileType)) {
/* found it */
_hintIndex = i;
_entries[_hintIndex].userComposite->Decode(recInterp);
return;
}
}
/* not found */
fprintf(stderr, "Can't find user composite function for file type %s\n",
fileType);
Exit::DoExit(2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -