hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
hobbes::Record Class Reference

#include <type.H>

Inheritance diagram for hobbes::Record:
Inheritance graph
Collaboration diagram for hobbes::Record:
Collaboration graph

Classes

struct  Member
 

Public Types

typedef std::vector< MemberMembers
 
- Public Types inherited from hobbes::MonoType
typedef std::shared_ptr< MonoTypeptr
 
typedef std::set< std::string > TypeVarNames
 

Public Member Functions

void show (std::ostream &out) const
 
const Membersmembers () const
 
const MonoTypePtrmember (const std::string &mn) const
 
unsigned int index (const std::string &mn) const
 
const Membermmember (const std::string &mn) const
 
Member headMember () const
 
MonoTypePtr tailType () const
 
const MembersalignedMembers () const
 
unsigned int alignedIndex (const std::string &mn) const
 
unsigned int size () const
 
bool isTuple () const
 
- Public Member Functions inherited from hobbes::MonoTypeCase< Record >
 MonoTypeCase ()
 
- Public Member Functions inherited from hobbes::MonoType
virtual ~MonoType ()
 
bool operator== (const MonoType &rhs) const
 
int case_id () const
 
template<typename Class , typename T , typename ... Args>
MonoTypePtr makeType (const Args &... args)
 

Static Public Member Functions

static Members withExplicitPadding (const Members &, const std::string &pfx=".p")
 
static Members withResolvedMemoryLayout (const Members &)
 
static MonoTypePtr make (const Members &ms)
 
static MonoTypePtr make (const MonoTypePtr &hty, const Members &tty)
 
static MonoTypePtr make (const std::string &lbl, const MonoTypePtr &hty, const Members &tty)
 

Static Public Attributes

static const int type_case_id = 7
 

Private Member Functions

unsigned int maxFieldAlignment () const
 
unsigned int index (const Members &ms, const std::string &mn) const
 
 Record (const Members &ms)
 

Static Private Member Functions

static void showRecord (std::ostream &, const Members &)
 
static std::string showRecord (const Members &)
 

Private Attributes

Members ms
 
Members ams
 
unsigned int maxFieldAlignmentM
 

Friends

class MonoType
 

Additional Inherited Members

- Public Attributes inherited from hobbes::MonoType
TypeVarNames freeTVars
 
int tgenCount
 
unsigned int memorySize
 
ptr unaliasedType
 
- Protected Member Functions inherited from hobbes::MonoType
 MonoType (int cid)
 
- Static Protected Member Functions inherited from hobbes::MonoType
template<typename Class , typename T , typename ... Args>
static ptr makeType (const Args &... args)
 

Member Typedef Documentation

◆ Members

typedef std::vector<Member> hobbes::Record::Members

Constructor & Destructor Documentation

◆ Record()

hobbes::Record::Record ( const Members ms)
private

Member Function Documentation

◆ alignedIndex()

unsigned int hobbes::Record::alignedIndex ( const std::string &  mn) const

◆ alignedMembers()

const Record::Members & hobbes::Record::alignedMembers ( ) const

◆ headMember()

Record::Member hobbes::Record::headMember ( ) const

◆ index() [1/2]

unsigned int hobbes::Record::index ( const std::string &  mn) const

◆ index() [2/2]

unsigned int hobbes::Record::index ( const Members ms,
const std::string &  mn 
) const
private

◆ isTuple()

bool hobbes::Record::isTuple ( ) const

◆ make() [1/3]

MonoTypePtr hobbes::Record::make ( const Members ms)
static

◆ make() [2/3]

MonoTypePtr hobbes::Record::make ( const MonoTypePtr hty,
const Members tty 
)
static

◆ make() [3/3]

MonoTypePtr hobbes::Record::make ( const std::string &  lbl,
const MonoTypePtr hty,
const Members tty 
)
static

◆ maxFieldAlignment()

unsigned int hobbes::Record::maxFieldAlignment ( ) const
private

◆ member()

const MonoTypePtr & hobbes::Record::member ( const std::string &  mn) const

◆ members()

const Record::Members & hobbes::Record::members ( ) const

◆ mmember()

const Record::Member * hobbes::Record::mmember ( const std::string &  mn) const

◆ show()

void hobbes::Record::show ( std::ostream &  out) const
virtual

Implements hobbes::MonoType.

◆ showRecord() [1/2]

void hobbes::Record::showRecord ( std::ostream &  out,
const Members ms 
)
staticprivate

◆ showRecord() [2/2]

std::string hobbes::Record::showRecord ( const Members ms)
staticprivate

◆ size()

unsigned int hobbes::Record::size ( ) const

◆ tailType()

MonoTypePtr hobbes::Record::tailType ( ) const

◆ withExplicitPadding()

Record::Members hobbes::Record::withExplicitPadding ( const Members ms,
const std::string &  pfx = ".p" 
)
static

◆ withResolvedMemoryLayout()

Record::Members hobbes::Record::withResolvedMemoryLayout ( const Members ms)
static

Friends And Related Function Documentation

◆ MonoType

friend class MonoType
friend

Member Data Documentation

◆ ams

Members hobbes::Record::ams
private

◆ maxFieldAlignmentM

unsigned int hobbes::Record::maxFieldAlignmentM
mutableprivate

◆ ms

Members hobbes::Record::ms
private

◆ type_case_id

const int hobbes::Record::type_case_id = 7
static

The documentation for this class was generated from the following files: