23 #ifndef __CLRX_ASMSOURCE_H__ 24 #define __CLRX_ASMSOURCE_H__ 95 parent(_parent), lineNo(_lineNo), colNo(_colNo), file(_file)
113 source(_source), lineNo(_lineNo), colNo(_colNo)
117 LineNo _lineNo,
ColNo _colNo) : parent(_parent), source(_source),
118 lineNo(_lineNo), colNo(_colNo)
146 repeatCount(_repeatCount), repeatsNum(_repeatsNum)
162 void print(std::ostream& os,
cxuint indentLevel = 0)
const;
196 std::vector<char> content;
197 std::vector<SourceTrans> sourceTranslations;
198 std::vector<LineTrans> colTranslations;
214 const std::vector<LineTrans>& colTrans,
size_t lineSize,
const char* line);
217 {
return colTranslations; }
223 {
return sourceTranslations.size(); }
226 {
return sourceTranslations[index]; }
229 {
return sourcePos; }
232 {
return args.
size(); }
270 const std::vector<LineTrans>& colTrans,
size_t lineSize,
const char* line);
273 {
return colTranslations; }
279 {
return sourceTranslations.size(); }
282 {
return sourceTranslations[index]; }
285 {
return sourcePos; }
288 {
return repeatsNum; }
296 std::unique_ptr<AsmExpression> condExpr;
297 std::unique_ptr<AsmExpression> nextExpr;
307 {
return iterSymEntry; }
310 {
return condExpr.get(); }
313 {
return nextExpr.get(); }
335 {
return symbolName; }
338 {
return symValues[i]; }
370 : type(_type), pos(0), macroSubst(_macroSubst), source(_source), lineNo(1)
377 virtual const char* readLine(
Assembler& assembler,
size_t& lineSize) = 0;
388 LineCol translatePos(
size_t position)
const;
392 {
return colTranslations; }
399 {
return macroSubst; }
404 LineCol lineCol = translatePos(position);
405 return { macroSubst, source, lineCol.
lineNo, lineCol.
colNo };
419 enum class LineMode:
cxbyte 429 std::istream* stream;
446 const char* readLine(
Assembler& assembler,
size_t& lineSize);
460 MacroLocalMap localMap;
464 size_t sourceTransIndex;
471 const MacroArgMap& argMap, uint64_t macroCount,
bool alternateMacro);
474 MacroArgMap&& argMap, uint64_t macroCount,
bool alternateMacro);
476 const char* readLine(
Assembler& assembler,
size_t& lineSize);
478 bool addLocal(
const CString& name, uint64_t localNo);
485 std::unique_ptr<const AsmRepeat> repeat;
486 uint64_t repeatCount;
488 size_t sourceTransIndex;
494 const char* readLine(
Assembler& assembler,
size_t& lineSize);
498 {
return repeatCount; }
508 const char* readLine(
Assembler& assembler,
size_t& lineSize);
515 std::unique_ptr<const AsmIRP> irp;
516 uint64_t repeatCount;
518 size_t sourceTransIndex;
525 const char* readLine(
Assembler& assembler,
size_t& lineSize);
529 {
return repeatCount; }
AsmRepeatInputFilter or AsmIRPInputFilter.
assembler macro aegument
Definition: AsmSource.h:174
common definitions for assembler and disassembler
main class of assembler
Definition: Assembler.h:404
line translations
Definition: AsmSource.h:166
RefPtr< const AsmSource > source
source of substituted content
Definition: AsmSource.h:126
const AsmSourcePos & getSourcePos() const
get source position
Definition: AsmSource.h:284
non copyable and non movable base structure (class)
Definition: Utilities.h:43
assembler expression class
Definition: AsmDefs.h:301
RefPtr< const AsmSource > source
source
Definition: AsmSource.h:247
assembler repeat
Definition: AsmSource.h:239
AsmSourceType type
type of Asm source (file or macro)
Definition: AsmSource.h:68
assembler macro
Definition: AsmSource.h:183
const size_t getArgsNum() const
get number of arguments
Definition: AsmSource.h:231
uint64_t getRepeatsNum() const
get number of repetitions
Definition: AsmSource.h:287
const SourceTrans & getSourceTrans(uint64_t index) const
get source translation
Definition: AsmSource.h:281
ColNo colNo
column number, for macro substitution and IRP points to column preprocessed line
Definition: AsmSource.h:50
AsmSourceType
source type
Definition: AsmSource.h:58
AsmMacroSubst(RefPtr< const AsmMacroSubst > _parent, RefPtr< const AsmSource > _source, LineNo _lineNo, ColNo _colNo)
constructor with parent macro substitution
Definition: AsmSource.h:116
AsmFile(const CString &_file)
constructor
Definition: AsmSource.h:88
reference pointer based on Glibmm refptr
Definition: Utilities.h:786
bool isIRPC() const
get if IRPC
Definition: AsmSource.h:340
const CString & getSymbolName() const
get number of repetitions
Definition: AsmSource.h:334
source translation
Definition: AsmSource.h:187
ssize_t position
position in joined line, can be negative if filtered line is statement
Definition: AsmSource.h:169
AsmMacroSource(RefPtr< const AsmMacroSubst > _macro, RefPtr< const AsmSource > _source)
construcror
Definition: AsmSource.h:129
AsmRepeatSource(RefPtr< const AsmSource > _source, uint64_t _repeatCount, uint64_t _repeatsNum)
constructor
Definition: AsmSource.h:144
RefPtr< const AsmSource > source
source of content where macro substituted
Definition: AsmSource.h:107
an array class
Definition: Containers.h:38
AsmSourcePos sourcePos
current source position
Definition: AsmSource.h:251
ColNo colNo
column number
Definition: AsmSource.h:158
const AsmExpression * getNextExpr() const
get next expression
Definition: AsmSource.h:312
RefPtr< const AsmMacroSubst > macro
macro substitution in which message occurred
Definition: AsmSource.h:155
CString name
name
Definition: AsmSource.h:176
AsmInputFilterType
type of AsmInputFilter
Definition: AsmSource.h:345
line and column
Definition: AsmSource.h:45
const AsmMacroArg & getArg(size_t i) const
get argument
Definition: AsmSource.h:234
LineNo lineNo
line number of top-most source
Definition: AsmSource.h:157
size_t ColNo
column number type
Definition: Utilities.h:78
LineNo lineNo
line number
Definition: AsmSource.h:189
assembler repeat 'for'
Definition: AsmSource.h:292
uint64_t repeatsNum
number of all repetitions
Definition: AsmSource.h:141
LineNo lineNo
line number
Definition: AsmSource.h:245
unsigned char cxbyte
unsigned byte
Definition: Config.h:215
std::vector< LineTrans > colTranslations
column translations
Definition: AsmSource.h:255
RefPtr< const AsmSource > source
source in which message occurred
Definition: AsmSource.h:156
reference countable object (only for single threading usage)
Definition: Utilities.h:762
main namespace
Definition: AsmDefs.h:38
ColNo colNo
place in line where file is included
Definition: AsmSource.h:84
const AsmSourcePos * exprSourcePos
expression sourcepos from what evaluation made
Definition: AsmSource.h:159
LineNo contentLineNo
number of content's line
Definition: AsmSource.h:250
unsigned int cxuint
unsigned int
Definition: Config.h:223
assembler IRP
Definition: AsmSource.h:317
descriptor of assembler repetition
Definition: AsmSource.h:137
RefPtr< const AsmSource > source
source of content
Definition: AsmSource.h:139
bool vararg
is variadic argument
Definition: AsmSource.h:178
size_t getSourceTransSize() const
get source translations size
Definition: AsmSource.h:278
RefPtr< const AsmSource > source
source
Definition: AsmSource.h:190
const AsmSourcePos & getSourcePos() const
get source position
Definition: AsmSource.h:228
descriptor of file inclusion
Definition: AsmSource.h:78
AsmFile(const RefPtr< const AsmSource > _parent, LineNo _lineNo, ColNo _colNo, const CString &_file)
constructor with parent file inclustion
Definition: AsmSource.h:93
LineNo lineNo
place where file is included (0 if root)
Definition: AsmSource.h:83
RefPtr< const AsmSource > parent
parent source for this source (for file is parent file or macro substitution, for macro substitution ...
Definition: AsmSource.h:82
utilities for other libraries and programs
const CString & getSymbolValue(size_t i) const
get symbol value or string
Definition: AsmSource.h:337
RefPtr< const AsmMacroSubst > parent
parent source for this source (for file is parent file or macro substitution, for macro substitution ...
Definition: AsmSource.h:106
std::vector< SourceTrans > sourceTranslations
source translations
Definition: AsmSource.h:254
uint64_t repeatCount
number of repetition
Definition: AsmSource.h:140
bool required
is required
Definition: AsmSource.h:179
LineNo lineNo
source code line number
Definition: AsmSource.h:170
AsmMacroSubst(RefPtr< const AsmSource > _source, LineNo _lineNo, ColNo _colNo)
constructor
Definition: AsmSource.h:112
uint64_t repeatsNum
repeats number
Definition: AsmSource.h:252
descriptor assembler macro substitution
Definition: AsmSource.h:102
descriptor of macro source (used in source fields)
Definition: AsmSource.h:123
RefPtr< const AsmMacroSubst > macro
macro substitution
Definition: AsmSource.h:246
uint64_t LineNo
line number type
Definition: Utilities.h:75
const SourceTrans & getSourceTrans(uint64_t index) const
get source translations
Definition: AsmSource.h:225
const AsmExpression * getCondExpr() const
get condition expression
Definition: AsmSource.h:309
size_t size() const
returns number of elements
Definition: Containers.h:169
LineNo lineNo
line number
Definition: AsmSource.h:47
const std::vector< LineTrans > & getColTranslations() const
get column translations
Definition: AsmSource.h:216
source translations
Definition: AsmSource.h:243
CString defaultValue
default value
Definition: AsmSource.h:177
std::vector< char > content
content
Definition: AsmSource.h:253
RefPtr< const AsmMacroSubst > macro
macro substition
Definition: AsmSource.h:125
const void * getIterSymEntry() const
get iteration symbol entry
Definition: AsmSource.h:306
size_t getSourceTransSize() const
get source translations size
Definition: AsmSource.h:222
const CString file
file path
Definition: AsmSource.h:85
ColNo colNo
place in line where macro substituted
Definition: AsmSource.h:109
descriptor of assembler source for source position
Definition: AsmSource.h:66
const std::vector< LineTrans > & getColTranslations() const
get column translations
Definition: AsmSource.h:272
simple C-string container
Definition: CString.h:38
LineNo lineNo
place where macro substituted
Definition: AsmSource.h:108
const std::vector< char > & getContent() const
get content of repetition
Definition: AsmSource.h:275
AsmSource(AsmSourceType _type)
constructor
Definition: AsmSource.h:71
const std::vector< char > & getContent() const
get content vector
Definition: AsmSource.h:219
assembler source position
Definition: AsmSource.h:153