mirror of
https://github.com/zeek/zeek.git
synced 2025-10-08 09:38:19 +00:00
Initial import of svn+ssh:://svn.icir.org/bro/trunk/bro as of r7088
This commit is contained in:
commit
61757ac78b
1383 changed files with 380824 additions and 0 deletions
48
src/EquivClass.h
Normal file
48
src/EquivClass.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
// $Id: EquivClass.h 6219 2008-10-01 05:39:07Z vern $
|
||||
//
|
||||
// See the file "COPYING" in the main distribution directory for copyright.
|
||||
|
||||
#ifndef equiv_class_h
|
||||
#define equiv_class_h
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "CCL.h"
|
||||
|
||||
class EquivClass {
|
||||
public:
|
||||
EquivClass(int size);
|
||||
~EquivClass();
|
||||
|
||||
void UniqueChar(int sym);
|
||||
void CCL_Use(CCL* ccl);
|
||||
|
||||
// All done adding character usage info - generate equivalence
|
||||
// classes. Returns number of classes.
|
||||
int BuildECs();
|
||||
|
||||
void ConvertCCL(CCL* ccl);
|
||||
|
||||
int IsRep(int sym) const { return rep[sym] == sym; }
|
||||
int EquivRep(int sym) const { return rep[sym]; }
|
||||
int SymEquivClass(int sym) const { return equiv_class[sym]; }
|
||||
int* EquivClasses() const { return equiv_class; }
|
||||
|
||||
int NumSyms() const { return size; }
|
||||
int NumClasses() const { return num_ecs; }
|
||||
|
||||
void Dump(FILE* f);
|
||||
int Size() const;
|
||||
|
||||
protected:
|
||||
int size; // size of character set
|
||||
int num_ecs; // size of equivalence classes
|
||||
int* fwd; // forward list of different classes
|
||||
int* bck; // backward list
|
||||
int* equiv_class; // symbol's equivalence class
|
||||
int* rep; // representative for symbol's equivalence class
|
||||
int* ccl_flags;
|
||||
int ec_nil, no_class, no_rep;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue