mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Move binpac code into the main Zeek repository
This is based on commit 48f75b5f6415fe9d597e3e991cec635b1bc400dc from the binpac repository.
This commit is contained in:
parent
a2680d5eca
commit
ff26835976
112 changed files with 14586 additions and 8 deletions
77
tools/binpac/src/pac_cclass.h
Normal file
77
tools/binpac/src/pac_cclass.h
Normal file
|
@ -0,0 +1,77 @@
|
|||
#ifndef pac_cclass_h
|
||||
#define pac_cclass_h
|
||||
|
||||
class CClass;
|
||||
class CClassMember;
|
||||
class CClassMethod;
|
||||
class CType;
|
||||
class CVariable;
|
||||
|
||||
typedef vector<CClassMember*> CClassMemberList;
|
||||
typedef vector<CClassMethod*> CClassMethodList;
|
||||
typedef vector<CVariable*> CVariableList;
|
||||
|
||||
#include "pac_common.h"
|
||||
|
||||
// Represents a C++ class.
|
||||
//
|
||||
// For now we adopt a simple model:
|
||||
//
|
||||
// 1. All members have a protected member variable "name_" and a
|
||||
// public constant access method "name()".
|
||||
//
|
||||
// 2. All methods are public.
|
||||
//
|
||||
// 3. We do not check repeated names.
|
||||
|
||||
class CClass {
|
||||
public:
|
||||
CClass(const string& class_name);
|
||||
|
||||
void AddMember(CClassMember* member);
|
||||
void AddMethod(CClassMember* method);
|
||||
|
||||
void GenForwardDeclaration(Output* out_h);
|
||||
void GenCode(Output* out_h, Output* out_cc);
|
||||
|
||||
protected:
|
||||
string class_name_;
|
||||
CClassMemberList* members_;
|
||||
CClassMethodList* methods_;
|
||||
};
|
||||
|
||||
class CVariable {
|
||||
public:
|
||||
CClassMember(const string& name, CType* type);
|
||||
|
||||
string name() const { return name_; }
|
||||
CType* type() const { return type_; }
|
||||
|
||||
protected:
|
||||
string name_;
|
||||
CType* type_;
|
||||
};
|
||||
|
||||
class CClassMember {
|
||||
public:
|
||||
CClassMember(CVariable* var);
|
||||
void GenCode(Output* out_h, Output* out_cc);
|
||||
|
||||
string decl() const;
|
||||
|
||||
protected:
|
||||
CVariable* var_;
|
||||
};
|
||||
|
||||
class CClassMethod {
|
||||
public:
|
||||
CClassMethod(CVariable* var, CVariableList* params);
|
||||
|
||||
string decl() const;
|
||||
|
||||
protected:
|
||||
CVariable* var_;
|
||||
CVariableList* params_;
|
||||
};
|
||||
|
||||
#endif // pac_cclass_h
|
Loading…
Add table
Add a link
Reference in a new issue