Doxygen
Loading...
Searching...
No Matches
SymbolModifiers Struct Reference

Holds yyextra->modifiers (ie attributes) for one symbol (variable, function, etc). More...

Collaboration diagram for SymbolModifiers:

Public Types

enum  Protection { NONE_P , PUBLIC , PRIVATE }
enum  Direction { NONE_D , IN , OUT , INOUT }

Public Member Functions

 SymbolModifiers ()
SymbolModifiersoperator|= (const SymbolModifiers &mdfs)
SymbolModifiersoperator|= (QCString mdfrString)

Public Attributes

QCString type
 This is only used with function return value.
QCString returnName
Protection protection
Direction direction
bool optional
bool protect
QCString dimension
bool allocatable
bool external
bool intrinsic
bool parameter
bool pointer
bool target
bool save
bool deferred
bool nonoverridable
bool nopass
bool pass
bool contiguous
bool volat
bool value
QCString passVar
QCString bindVar

Detailed Description

Holds yyextra->modifiers (ie attributes) for one symbol (variable, function, etc).

Definition at line 98 of file fortranscanner.l.

Member Enumeration Documentation

◆ Direction

Enumerator
NONE_D 
IN 
OUT 
INOUT 

Definition at line 101 of file fortranscanner.l.

101{NONE_D, IN, OUT, INOUT};

◆ Protection

Enumerator
NONE_P 
PUBLIC 
PRIVATE 

Definition at line 100 of file fortranscanner.l.

100{NONE_P, PUBLIC, PRIVATE};

Constructor & Destructor Documentation

◆ SymbolModifiers()

SymbolModifiers::SymbolModifiers ( )
inline

Definition at line 127 of file fortranscanner.l.

132 bindVar() {}
#define FALSE
Definition qcstring.h:34
QCString type
This is only used with function return value.
Protection protection

References allocatable, bindVar, contiguous, deferred, dimension, direction, external, FALSE, intrinsic, NONE_D, NONE_P, nonoverridable, nopass, optional, parameter, pass, passVar, pointer, protect, protection, returnName, save, target, type, value, and volat.

Referenced by operator|=(), and operator|=().

Member Function Documentation

◆ operator|=() [1/2]

SymbolModifiers & SymbolModifiers::operator|= ( const SymbolModifiers & mdfs)

Adds passed yyextra->modifiers to these yyextra->modifiers.

Definition at line 2261 of file fortranscanner.l.

2262{
2263 if (mdfs.protection!=NONE_P) protection = mdfs.protection;
2264 if (mdfs.direction!=NONE_D) direction = mdfs.direction;
2265 optional |= mdfs.optional;
2266 if (!mdfs.dimension.isEmpty()) dimension = mdfs.dimension;
2267 allocatable |= mdfs.allocatable;
2268 external |= mdfs.external;
2269 intrinsic |= mdfs.intrinsic;
2270 protect |= mdfs.protect;
2271 parameter |= mdfs.parameter;
2272 pointer |= mdfs.pointer;
2273 target |= mdfs.target;
2274 save |= mdfs.save;
2275 deferred |= mdfs.deferred;
2277 nopass |= mdfs.nopass;
2278 pass |= mdfs.pass;
2279 passVar = mdfs.passVar;
2280 bindVar = mdfs.bindVar;
2281 contiguous |= mdfs.contiguous;
2282 volat |= mdfs.volat;
2283 value |= mdfs.value;
2284 return *this;
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163
2285}

References allocatable, bindVar, contiguous, deferred, dimension, direction, external, intrinsic, QCString::isEmpty(), NONE_D, NONE_P, nonoverridable, nopass, optional, parameter, pass, passVar, pointer, protect, protection, save, SymbolModifiers(), target, value, and volat.

◆ operator|=() [2/2]

SymbolModifiers & SymbolModifiers::operator|= ( QCString mdfStringArg)

Extracts and adds passed modifier to these yyextra->modifiers.

Definition at line 2288 of file fortranscanner.l.

2289{
2290 QCString mdfString = mdfStringArg.lower();
2291 SymbolModifiers newMdf;
QCString lower() const
Definition qcstring.h:249
2292
2293 if (mdfString.find("dimension")==0)
2294 {
2295 newMdf.dimension=mdfString;
2296 }
2297 else if (mdfString.contains("intent"))
2298 {
2299 QCString tmp = extractFromParens(mdfString);
2300 bool isin = tmp.contains("in")!=0;
2301 bool isout = tmp.contains("out")!=0;
2302 if (isin && isout) newMdf.direction = SymbolModifiers::INOUT;
2303 else if (isin) newMdf.direction = SymbolModifiers::IN;
2304 else if (isout) newMdf.direction = SymbolModifiers::OUT;
2305 }
2306 else if (mdfString=="public")
2307 {
2309 }
2310 else if (mdfString=="private")
2311 {
2313 }
2314 else if (mdfString=="protected")
2315 {
2316 newMdf.protect = TRUE;
2317 }
2318 else if (mdfString=="optional")
2319 {
2320 newMdf.optional = TRUE;
2321 }
2322 else if (mdfString=="allocatable")
2323 {
2324 newMdf.allocatable = TRUE;
2325 }
2326 else if (mdfString=="external")
2327 {
2328 newMdf.external = TRUE;
2329 }
2330 else if (mdfString=="intrinsic")
2331 {
2332 newMdf.intrinsic = TRUE;
2333 }
2334 else if (mdfString=="parameter")
2335 {
2336 newMdf.parameter = TRUE;
2337 }
2338 else if (mdfString=="pointer")
2339 {
2340 newMdf.pointer = TRUE;
2341 }
2342 else if (mdfString=="target")
2343 {
2344 newMdf.target = TRUE;
2345 }
2346 else if (mdfString=="save")
2347 {
2348 newMdf.save = TRUE;
2349 }
2350 else if (mdfString=="nopass")
2351 {
2352 newMdf.nopass = TRUE;
2353 }
2354 else if (mdfString=="deferred")
2355 {
2356 newMdf.deferred = TRUE;
2357 }
2358 else if (mdfString=="non_overridable")
2359 {
2360 newMdf.nonoverridable = TRUE;
2361 }
2362 else if (mdfString=="contiguous")
2363 {
2364 newMdf.contiguous = TRUE;
2365 }
2366 else if (mdfString=="volatile")
2367 {
2368 newMdf.volat = TRUE;
2369 }
2370 else if (mdfString=="value")
2371 {
2372 newMdf.value = TRUE;
2373 }
2374 else if (mdfString.contains("pass"))
2375 {
2376 newMdf.pass = TRUE;
2377 if (mdfString.contains("("))
2378 newMdf.passVar = extractFromParens(mdfString);
2379 else
2380 newMdf.passVar = "";
2381 }
2382 else if (mdfString.startsWith("bind"))
2383 {
2384 // we need here the original string as we want to don't want to have the lowercase name between the quotes of the name= part
2385 newMdf.bindVar = extractBind(mdfStringArg);
2386 }
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
bool startsWith(const char *s) const
Definition qcstring.h:507
int contains(char c, bool cs=TRUE) const
Definition qcstring.cpp:148
static QCString extractFromParens(const QCString &name)
static QCString extractBind(const QCString &name)
#define TRUE
Definition qcstring.h:37
2387
2388 (*this) |= newMdf;
2389 return *this;
2390}

References allocatable, bindVar, QCString::contains(), contiguous, deferred, dimension, direction, external, extractBind(), extractFromParens(), QCString::find(), IN, INOUT, intrinsic, QCString::lower(), nonoverridable, nopass, optional, OUT, parameter, pass, passVar, pointer, PRIVATE, protect, protection, PUBLIC, save, QCString::startsWith(), SymbolModifiers(), target, TRUE, value, and volat.

Member Data Documentation

◆ allocatable

bool SymbolModifiers::allocatable

Definition at line 110 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ bindVar

QCString SymbolModifiers::bindVar

Definition at line 125 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ contiguous

bool SymbolModifiers::contiguous

Definition at line 121 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ deferred

bool SymbolModifiers::deferred

◆ dimension

QCString SymbolModifiers::dimension

Definition at line 109 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ direction

Direction SymbolModifiers::direction

Definition at line 106 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ external

bool SymbolModifiers::external

Definition at line 111 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ intrinsic

bool SymbolModifiers::intrinsic

Definition at line 112 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ nonoverridable

bool SymbolModifiers::nonoverridable

◆ nopass

bool SymbolModifiers::nopass

◆ optional

bool SymbolModifiers::optional

Definition at line 107 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ parameter

bool SymbolModifiers::parameter

Definition at line 113 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ pass

bool SymbolModifiers::pass

Definition at line 120 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ passVar

QCString SymbolModifiers::passVar

Definition at line 124 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ pointer

bool SymbolModifiers::pointer

Definition at line 114 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ protect

bool SymbolModifiers::protect

Definition at line 108 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ protection

Protection SymbolModifiers::protection

◆ returnName

QCString SymbolModifiers::returnName

Definition at line 104 of file fortranscanner.l.

Referenced by SymbolModifiers().

◆ save

bool SymbolModifiers::save

Definition at line 116 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ target

bool SymbolModifiers::target

Definition at line 115 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ type

QCString SymbolModifiers::type

This is only used with function return value.

Definition at line 104 of file fortranscanner.l.

Referenced by SymbolModifiers().

◆ value

bool SymbolModifiers::value

Definition at line 123 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().

◆ volat

bool SymbolModifiers::volat

Definition at line 122 of file fortranscanner.l.

Referenced by applyModifiers(), operator|=(), operator|=(), and SymbolModifiers().


The documentation for this struct was generated from the following file: