23 #ifndef __CLRX_ASMSOURCE_H__ 24 #define __CLRX_ASMSOURCE_H__ 95 parent(_parent), lineNo(_lineNo), colNo(_colNo), file(_file)
143 repeatCount(_repeatCount), repeatsNum(_repeatsNum)
159 void print(std::ostream& os,
cxuint indentLevel = 0)
const;
193 std::vector<char> content;
194 std::vector<SourceTrans> sourceTranslations;
195 std::vector<LineTrans> colTranslations;
211 const std::vector<LineTrans>& colTrans,
size_t lineSize,
const char* line);
214 {
return colTranslations; }
220 {
return sourceTranslations.size(); }
223 {
return sourceTranslations[index]; }
226 {
return sourcePos; }
229 {
return args.
size(); }
267 const std::vector<LineTrans>& colTrans,
size_t lineSize,
const char* line);
270 {
return colTranslations; }
276 {
return sourceTranslations.size(); }
279 {
return sourceTranslations[index]; }
282 {
return sourcePos; }
285 {
return repeatsNum; }
293 std::unique_ptr<AsmExpression> condExpr;
294 std::unique_ptr<AsmExpression> nextExpr;
304 {
return iterSymEntry; }
307 {
return condExpr.get(); }
310 {
return nextExpr.get(); }
332 {
return symbolName; }
335 {
return symValues[i]; }
367 : type(_type), pos(0), macroSubst(_macroSubst), source(_source), lineNo(1)
374 virtual const char* readLine(
Assembler& assembler,
size_t& lineSize) = 0;
385 LineCol translatePos(
size_t position)
const;
389 {
return colTranslations; }
396 {
return macroSubst; }
401 LineCol lineCol = translatePos(position);
402 return { macroSubst, source, lineCol.
lineNo, lineCol.
colNo };
416 enum class LineMode:
cxbyte 426 std::istream* stream;
443 const char* readLine(
Assembler& assembler,
size_t& lineSize);
457 MacroLocalMap localMap;
461 size_t sourceTransIndex;
468 const MacroArgMap& argMap, uint64_t macroCount,
bool alternateMacro);
471 MacroArgMap&& argMap, uint64_t macroCount,
bool alternateMacro);
473 const char* readLine(
Assembler& assembler,
size_t& lineSize);
475 bool addLocal(
const CString& name, uint64_t localNo);
482 std::unique_ptr<const AsmRepeat> repeat;
483 uint64_t repeatCount;
485 size_t sourceTransIndex;
491 const char* readLine(
Assembler& assembler,
size_t& lineSize);
495 {
return repeatCount; }
505 const char* readLine(
Assembler& assembler,
size_t& lineSize);
512 std::unique_ptr<const AsmIRP> irp;
513 uint64_t repeatCount;
515 size_t sourceTransIndex;
522 const char* readLine(
Assembler& assembler,
size_t& lineSize);
526 {
return repeatCount; }
552 std::vector<Item> items;
554 std::vector<Chunk> chunks;
559 void pushSourcePos(
size_t offset,
const AsmSourcePos& sourcePos);
562 {
return readPos.chunkPos < chunks.size() && (readPos.chunkPos+1 != chunks.size() ||
563 readPos.itemPos < chunks.back().items.size()); }
565 std::pair<size_t, AsmSourcePos> nextSourcePos(
ReadPos& rPos);
567 ReadPos findPositionByOffset(
size_t offset)
const;
AsmRepeatInputFilter or AsmIRPInputFilter.
assembler macro aegument
Definition: AsmSource.h:171
common definitions for assembler and disassembler
main class of assembler
Definition: Assembler.h:516
line translations
Definition: AsmSource.h:163
RefPtr< const AsmSource > source
source of substituted content
Definition: AsmSource.h:123
const AsmSourcePos & getSourcePos() const
get source position
Definition: AsmSource.h:281
non copyable and non movable base structure (class)
Definition: Utilities.h:46
assembler expression class
Definition: AsmDefs.h:286
RefPtr< const AsmSource > source
source
Definition: AsmSource.h:244
assembler repeat
Definition: AsmSource.h:236
AsmSourceType type
type of Asm source (file or macro)
Definition: AsmSource.h:69
assembler macro
Definition: AsmSource.h:180
const size_t getArgsNum() const
get number of arguments
Definition: AsmSource.h:228
uint64_t getRepeatsNum() const
get number of repetitions
Definition: AsmSource.h:284
const SourceTrans & getSourceTrans(uint64_t index) const
get source translation
Definition: AsmSource.h:278
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
AsmFile(const CString &_file)
constructor
Definition: AsmSource.h:88
reference pointer based on Glibmm refptr
Definition: Utilities.h:860
bool isIRPC() const
get if IRPC
Definition: AsmSource.h:337
const CString & getSymbolName() const
get number of repetitions
Definition: AsmSource.h:331
size_t uniqueId
unique id for equality
Definition: AsmSource.h:68
source translation
Definition: AsmSource.h:184
ssize_t position
position in joined line, can be negative if filtered line is statement
Definition: AsmSource.h:166
AsmMacroSource(RefPtr< const AsmMacroSubst > _macro, RefPtr< const AsmSource > _source)
construcror
Definition: AsmSource.h:126
AsmRepeatSource(RefPtr< const AsmSource > _source, uint64_t _repeatCount, uint64_t _repeatsNum)
constructor
Definition: AsmSource.h:141
RefPtr< const AsmSource > source
source of content where macro substituted
Definition: AsmSource.h:108
an array class
Definition: Containers.h:41
AsmSourcePos sourcePos
current source position
Definition: AsmSource.h:248
ColNo colNo
column number
Definition: AsmSource.h:155
const AsmExpression * getNextExpr() const
get next expression
Definition: AsmSource.h:309
RefPtr< const AsmMacroSubst > macro
macro substitution in which message occurred
Definition: AsmSource.h:152
CString name
name
Definition: AsmSource.h:173
AsmInputFilterType
type of AsmInputFilter
Definition: AsmSource.h:342
Definition: AsmSource.h:533
line and column
Definition: AsmSource.h:45
const AsmMacroArg & getArg(size_t i) const
get argument
Definition: AsmSource.h:231
LineNo lineNo
line number of top-most source
Definition: AsmSource.h:154
size_t ColNo
column number type
Definition: Utilities.h:81
LineNo lineNo
line number
Definition: AsmSource.h:186
assembler repeat 'for'
Definition: AsmSource.h:289
uint64_t repeatsNum
number of all repetitions
Definition: AsmSource.h:138
LineNo lineNo
line number
Definition: AsmSource.h:242
unsigned char cxbyte
unsigned byte
Definition: Config.h:229
std::vector< LineTrans > colTranslations
column translations
Definition: AsmSource.h:252
RefPtr< const AsmSource > source
source in which message occurred
Definition: AsmSource.h:153
reference countable object (only for single threading usage)
Definition: Utilities.h:836
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:156
LineNo contentLineNo
number of content's line
Definition: AsmSource.h:247
unsigned int cxuint
unsigned int
Definition: Config.h:237
assembler IRP
Definition: AsmSource.h:314
descriptor of assembler repetition
Definition: AsmSource.h:134
RefPtr< const AsmSource > source
source of content
Definition: AsmSource.h:136
bool vararg
is variadic argument
Definition: AsmSource.h:175
size_t getSourceTransSize() const
get source translations size
Definition: AsmSource.h:275
RefPtr< const AsmSource > source
source
Definition: AsmSource.h:187
const AsmSourcePos & getSourcePos() const
get source position
Definition: AsmSource.h:225
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:334
class holds source position for section offset
Definition: AsmSource.h:530
std::vector< SourceTrans > sourceTranslations
source translations
Definition: AsmSource.h:251
uint64_t repeatCount
number of repetition
Definition: AsmSource.h:137
bool required
is required
Definition: AsmSource.h:176
LineNo lineNo
source code line number
Definition: AsmSource.h:167
uint64_t repeatsNum
repeats number
Definition: AsmSource.h:249
descriptor assembler macro substitution
Definition: AsmSource.h:102
size_t uniqueId
unique id for equality parent source for this source (for file is parent file or macro substitution...
Definition: AsmSource.h:104
descriptor of macro source (used in source fields)
Definition: AsmSource.h:120
RefPtr< const AsmMacroSubst > macro
macro substitution
Definition: AsmSource.h:243
uint64_t LineNo
line number type
Definition: Utilities.h:78
const SourceTrans & getSourceTrans(uint64_t index) const
get source translations
Definition: AsmSource.h:222
const AsmExpression * getCondExpr() const
get condition expression
Definition: AsmSource.h:306
size_t size() const
returns number of elements
Definition: Containers.h:172
LineNo lineNo
line number
Definition: AsmSource.h:47
const std::vector< LineTrans > & getColTranslations() const
get column translations
Definition: AsmSource.h:213
source translations
Definition: AsmSource.h:240
CString defaultValue
default value
Definition: AsmSource.h:174
std::vector< char > content
content
Definition: AsmSource.h:250
RefPtr< const AsmMacroSubst > macro
macro substition
Definition: AsmSource.h:122
const void * getIterSymEntry() const
get iteration symbol entry
Definition: AsmSource.h:303
size_t getSourceTransSize() const
get source translations size
Definition: AsmSource.h:219
const CString file
file path
Definition: AsmSource.h:85
ColNo colNo
place in line where macro substituted
Definition: AsmSource.h:110
descriptor of assembler source for source position
Definition: AsmSource.h:66
const std::vector< LineTrans > & getColTranslations() const
get column translations
Definition: AsmSource.h:269
simple C-string container
Definition: CString.h:38
LineNo lineNo
place where macro substituted
Definition: AsmSource.h:109
const std::vector< char > & getContent() const
get content of repetition
Definition: AsmSource.h:272
const std::vector< char > & getContent() const
get content vector
Definition: AsmSource.h:216
assembler source position
Definition: AsmSource.h:150
bool hasNext(const ReadPos &readPos) const
return true if has next
Definition: AsmSource.h:561