Vireo  1.0
Compact runtime for Virtual Instruments
 All Classes Files Functions Variables Enumerations Enumerator Macros Groups Pages
Public Types | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Vireo::ClumpParseState Class Reference

Utility class used by decoders that can decode VIs and Clumps. More...

#include <VirtualInstrument.h>

Public Types

enum  ArgumentState {
  kArgumentNotResolved, kArgumentTooMany, kArgumentTooFew, kArgumentTypeMismatch,
  kArgumentNotOptional, kArgumentNotMutable, kArgumentResolved_FirstGood, kArgumentResolvedToVIElement = kArgumentResolved_FirstGood,
  kArgumentResolvedToGlobal, kArgumentResolvedToDefault, kArgumentResolvedToParameter, kArgumentResolvedToClump,
  kArgumentResolvedToPerch, kArgumentResolvedToStaticString, kArgumentResolvedToInstructionFunction, kArgumentResolved_LastGood = kArgumentResolvedToStaticString
}
 

Public Member Functions

void RecordNextHere (InstructionCore **startLocation)
 
 ClumpParseState (ClumpParseState *cps)
 
 ClumpParseState (VIClump *clump, InstructionAllocator *cia, EventLog *pLog)
 
void Construct (VIClump *clump, InstructionAllocator *cia, Int32 lineNumber, EventLog *pLog)
 
void StartSnippet (InstructionCore **startLocation)
 
TypeRef FormalParameterType ()
 
TypeRef ActualArgumentType ()
 
Boolean LastArgumentError ()
 
TypeRef ReadFormalParameterType ()
 
void SetClumpFireCount (Int32 fireCount)
 
TypeRef StartInstruction (SubString *opName)
 
TypeRef ReresolveInstruction (SubString *opName, bool allowErrors)
 
void ResolveActualArgumentAddress (SubString *argument, AQBlock1 **ppData)
 
void AddDataTargetArgument (SubString *argument, Boolean prependType)
 
void AddStaticString (SubString *argument)
 
void InternalAddArg (TypeRef actualType, void *arg)
 
void InternalAddArgNeedingPatch (PatchInfo::PatchType patchType, void **whereToPeek)
 
Boolean VarArgParameterDetected ()
 
Boolean GenericFunction ()
 
void AddVarArgCount ()
 
void MarkPerch (SubString *perchToken)
 
void AddBranchTargetArgument (SubString *branchTargetToken)
 
void AddClumpTargetArgument (SubString *clumpIndexToken)
 
void AddInstructionFunctionArgument (SubString *instructionNameToken)
 
VirtualInstrumentAddSubVITargetArgument (SubString *subVIName)
 
Int32 AddSubSnippet ()
 
void LogEvent (EventLog::EventSeverity severity, Int32 lineNumber, const char *message,...)
 
void LogArgumentProcessing (Int32 lineNumber)
 
InstructionCoreEmitCallVIInstruction ()
 
InstructionCoreEmitInstruction ()
 
void EmitSimpleInstruction (const char *opName)
 
void CommitSubSnippet ()
 
void CommitClump ()
 
void BeginEmitSubSnippet (ClumpParseState *subSnippet, InstructionCore *owningInstruction, Int32 argIndex)
 
void EndEmitSubSnippet (ClumpParseState *subSnippet)
 

Public Attributes

ArgumentState _argumentState
 
EventLog_pLog
 
Int32 _approximateLineNumber
 
InstructionAllocator_cia
 
Int32 _argCount
 
void * _argPointers [kMaxArguments]
 
TypeRef _argTypes [kMaxArguments]
 
Int32 _argPatches [kMaxArguments]
 
Int32 _argPatchCount
 
PatchInfo _patchInfos [kMaxPatchInfos]
 
Int32 _patchInfoCount
 
Int32 _perchCount
 
InstructionCore_perches [kMaxPerches]
 
VirtualInstrument_vi
 
VIClump_clump
 
SubString _actualArgumentName
 
TypeRef _instructionPointerType
 
TypeRef _instructionType
 
Int32 _recordNextInstructionAddress
 
size_t * _pVarArgCount
 
Boolean _bIsVI
 

Private Member Functions

void StartBuilding (VIClump *clump, InstructionCore **startLocation, InstructionAllocator *)
 
InstructionCoreAllocInstructionCore (Int32 argumentCount)
 
InstructionCoreCreateInstruction (TypeRef instructionType, Int32 argCount, void *args[])
 

Private Attributes

InstructionCore ** _pWhereToPatch
 
Int32 _totalInstructionCount
 
Int32 _totalInstructionPointerCount
 
Int32 _formalParameterIndex
 
TypeRef _formalParameterType
 
TypeRef _actualArgumentType
 

Static Private Attributes

static const Int32 kMaxPerches = 200
 
static const Int32 kMaxArguments = 100
 
static const Int32 kMaxPatchInfos = 100
 

Detailed Description

Utility class used by decoders that can decode VIs and Clumps.


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