23 #ifndef __CLRX_ASMSOURCE_H__ 24 #define __CLRX_ASMSOURCE_H__ 26 #include <CLRX/Config.h> 94 parent(_parent), lineNo(_lineNo), colNo(_colNo), file(_file)
112 source(_source), lineNo(_lineNo), colNo(_colNo)
116 LineNo _lineNo,
ColNo _colNo) : parent(_parent), source(_source),
117 lineNo(_lineNo), colNo(_colNo)
145 repeatCount(_repeatCount), repeatsNum(_repeatsNum)
161 void print(std::ostream& os, cxuint indentLevel = 0)
const;
195 std::vector<char> content;
196 std::vector<SourceTrans> sourceTranslations;
197 std::vector<LineTrans> colTranslations;
213 const std::vector<LineTrans>& colTrans,
size_t lineSize,
const char* line);
216 {
return colTranslations; }
222 {
return sourceTranslations.size(); }
225 {
return sourceTranslations[index]; }
228 {
return sourcePos; }
231 {
return args.
size(); }
268 const std::vector<LineTrans>& colTrans,
size_t lineSize,
const char* line);
271 {
return colTranslations; }
277 {
return sourceTranslations.size(); }
280 {
return sourceTranslations[index]; }
283 {
return sourcePos; }
286 {
return repeatsNum; }
308 {
return symbolName; }
311 {
return symValues[i]; }
343 : type(_type), pos(0), macroSubst(_macroSubst), source(_source), lineNo(1)
350 virtual const char* readLine(
Assembler& assembler,
size_t& lineSize) = 0;
361 LineCol translatePos(
size_t position)
const;
365 {
return colTranslations; }
372 {
return macroSubst; }
377 LineCol lineCol = translatePos(position);
378 return { macroSubst, source, lineCol.
lineNo, lineCol.
colNo };
392 enum class LineMode: cxbyte
402 std::istream* stream;
419 const char* readLine(
Assembler& assembler,
size_t& lineSize);
433 MacroLocalMap localMap;
437 size_t sourceTransIndex;
444 const MacroArgMap& argMap, uint64_t macroCount,
bool alternateMacro);
447 MacroArgMap&& argMap, uint64_t macroCount,
bool alternateMacro);
449 const char* readLine(
Assembler& assembler,
size_t& lineSize);
451 bool addLocal(
const CString& name, uint64_t localNo);
458 std::unique_ptr<const AsmRepeat> repeat;
459 uint64_t repeatCount;
461 size_t sourceTransIndex;
467 const char* readLine(
Assembler& assembler,
size_t& lineSize);
471 {
return repeatCount; }
478 std::unique_ptr<const AsmIRP> irp;
479 uint64_t repeatCount;
481 size_t sourceTransIndex;
488 const char* readLine(
Assembler& assembler,
size_t& lineSize);
492 {
return repeatCount; }
AsmRepeatInputFilter or AsmIRPInputFilter.
assembler macro aegument
Definition: AsmSource.h:173
common definitions for assembler and disassembler
main class of assembler
Definition: Assembler.h:401
line translations
Definition: AsmSource.h:165
RefPtr< const AsmSource > source
source of substituted content
Definition: AsmSource.h:125
const AsmSourcePos & getSourcePos() const
get source position
Definition: AsmSource.h:282
non copyable and non movable base structure (class)
Definition: Utilities.h:43
RefPtr< const AsmSource > source
source
Definition: AsmSource.h:246
assembler repeat
Definition: AsmSource.h:238
AsmSourceType type
type of Asm source (file or macro)
Definition: AsmSource.h:67
assembler macro
Definition: AsmSource.h:182
const size_t getArgsNum() const
get number of arguments
Definition: AsmSource.h:230
uint64_t getRepeatsNum() const
get number of repetitions
Definition: AsmSource.h:285
const SourceTrans & getSourceTrans(uint64_t index) const
get source translation
Definition: AsmSource.h:279
ColNo colNo
column number, for macro substitution and IRP points to column preprocessed line
Definition: AsmSource.h:49
AsmSourceType
source type
Definition: AsmSource.h:57
AsmMacroSubst(RefPtr< const AsmMacroSubst > _parent, RefPtr< const AsmSource > _source, LineNo _lineNo, ColNo _colNo)
constructor with parent macro substitution
Definition: AsmSource.h:115
AsmFile(const CString &_file)
constructor
Definition: AsmSource.h:87
reference pointer based on Glibmm refptr
Definition: Utilities.h:774
bool isIRPC() const
get if IRPC
Definition: AsmSource.h:313
const CString & getSymbolName() const
get number of repetitions
Definition: AsmSource.h:307
source translation
Definition: AsmSource.h:186
ssize_t position
position in joined line, can be negative if filtered line is statement
Definition: AsmSource.h:168
AsmMacroSource(RefPtr< const AsmMacroSubst > _macro, RefPtr< const AsmSource > _source)
construcror
Definition: AsmSource.h:128
AsmRepeatSource(RefPtr< const AsmSource > _source, uint64_t _repeatCount, uint64_t _repeatsNum)
constructor
Definition: AsmSource.h:143
RefPtr< const AsmSource > source
source of content where macro substituted
Definition: AsmSource.h:106
an array class
Definition: Containers.h:38
AsmSourcePos sourcePos
current source position
Definition: AsmSource.h:250
ColNo colNo
column number
Definition: AsmSource.h:157
RefPtr< const AsmMacroSubst > macro
macro substitution in which message occurred
Definition: AsmSource.h:154
CString name
name
Definition: AsmSource.h:175
AsmInputFilterType
type of AsmInputFilter
Definition: AsmSource.h:318
line and column
Definition: AsmSource.h:44
const AsmMacroArg & getArg(size_t i) const
get argument
Definition: AsmSource.h:233
LineNo lineNo
line number of top-most source
Definition: AsmSource.h:156
size_t ColNo
column number type
Definition: Utilities.h:78
LineNo lineNo
line number
Definition: AsmSource.h:188
uint64_t repeatsNum
number of all repetitions
Definition: AsmSource.h:140
LineNo lineNo
line number
Definition: AsmSource.h:244
std::vector< LineTrans > colTranslations
column translations
Definition: AsmSource.h:254
RefPtr< const AsmSource > source
source in which message occurred
Definition: AsmSource.h:155
reference countable object (only for single threading usage)
Definition: Utilities.h:750
main namespace
Definition: AsmDefs.h:38
ColNo colNo
place in line where file is included
Definition: AsmSource.h:83
const AsmSourcePos * exprSourcePos
expression sourcepos from what evaluation made
Definition: AsmSource.h:158
LineNo contentLineNo
number of content's line
Definition: AsmSource.h:249
assembler IRP
Definition: AsmSource.h:290
descriptor of assembler repetition
Definition: AsmSource.h:136
RefPtr< const AsmSource > source
source of content
Definition: AsmSource.h:138
bool vararg
is variadic argument
Definition: AsmSource.h:177
size_t getSourceTransSize() const
get source translations size
Definition: AsmSource.h:276
RefPtr< const AsmSource > source
source
Definition: AsmSource.h:189
const AsmSourcePos & getSourcePos() const
get source position
Definition: AsmSource.h:227
descriptor of file inclusion
Definition: AsmSource.h:77
AsmFile(const RefPtr< const AsmSource > _parent, LineNo _lineNo, ColNo _colNo, const CString &_file)
constructor with parent file inclustion
Definition: AsmSource.h:92
LineNo lineNo
place where file is included (0 if root)
Definition: AsmSource.h:82
RefPtr< const AsmSource > parent
parent source for this source (for file is parent file or macro substitution, for macro substitution ...
Definition: AsmSource.h:81
utilities for other libraries and programs
const CString & getSymbolValue(size_t i) const
get symbol value or string
Definition: AsmSource.h:310
RefPtr< const AsmMacroSubst > parent
parent source for this source (for file is parent file or macro substitution, for macro substitution ...
Definition: AsmSource.h:105
std::vector< SourceTrans > sourceTranslations
source translations
Definition: AsmSource.h:253
uint64_t repeatCount
number of repetition
Definition: AsmSource.h:139
bool required
is required
Definition: AsmSource.h:178
LineNo lineNo
source code line number
Definition: AsmSource.h:169
AsmMacroSubst(RefPtr< const AsmSource > _source, LineNo _lineNo, ColNo _colNo)
constructor
Definition: AsmSource.h:111
uint64_t repeatsNum
repeats number
Definition: AsmSource.h:251
descriptor assembler macro substitution
Definition: AsmSource.h:101
descriptor of macro source (used in source fields)
Definition: AsmSource.h:122
RefPtr< const AsmMacroSubst > macro
macro substitution
Definition: AsmSource.h:245
uint64_t LineNo
line number type
Definition: Utilities.h:75
const SourceTrans & getSourceTrans(uint64_t index) const
get source translations
Definition: AsmSource.h:224
size_t size() const
returns number of elements
Definition: Containers.h:169
LineNo lineNo
line number
Definition: AsmSource.h:46
const std::vector< LineTrans > & getColTranslations() const
get column translations
Definition: AsmSource.h:215
source translations
Definition: AsmSource.h:242
CString defaultValue
default value
Definition: AsmSource.h:176
std::vector< char > content
content
Definition: AsmSource.h:252
RefPtr< const AsmMacroSubst > macro
macro substition
Definition: AsmSource.h:124
size_t getSourceTransSize() const
get source translations size
Definition: AsmSource.h:221
const CString file
file path
Definition: AsmSource.h:84
ColNo colNo
place in line where macro substituted
Definition: AsmSource.h:108
descriptor of assembler source for source position
Definition: AsmSource.h:65
const std::vector< LineTrans > & getColTranslations() const
get column translations
Definition: AsmSource.h:270
simple C-string container
Definition: CString.h:38
LineNo lineNo
place where macro substituted
Definition: AsmSource.h:107
const std::vector< char > & getContent() const
get content of repetition
Definition: AsmSource.h:273
AsmSource(AsmSourceType _type)
constructor
Definition: AsmSource.h:70
const std::vector< char > & getContent() const
get content vector
Definition: AsmSource.h:218
assembler source position
Definition: AsmSource.h:152