mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
binpac: Initial import of Bro's binpac subdirectory from SVN r7088.
This commit is contained in:
parent
5a1c4fd5fe
commit
c8665318e6
113 changed files with 15630 additions and 0 deletions
81
tools/binpac/src/pac_cclass.h
Normal file
81
tools/binpac/src/pac_cclass.h
Normal file
|
@ -0,0 +1,81 @@
|
|||
#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