ObjectivelyMVC
Object oriented MVC framework for SDL3 and GNU C
Loading...
Searching...
No Matches
SelectorSequence Struct Reference

SelectorSequences are comprised of one or more SimpleSelectors. More...

#include <SelectorSequence.h>

Inheritance diagram for SelectorSequence:

Public Member Functions

Class * _SelectorSequence (void)
 The SelectorSequence archetype.
 
SelectorSequenceinitWithSequence (SelectorSequence *self, const char *sequence)
 Initializes this SelectorSequence with the given sequence.
 
bool matchesView (const SelectorSequence *self, const View *view)
 
Array * parse (const char *rule)
 

Data Fields

SequenceCombinator left
 The combinators.
 
Object object
 The superclass.
 
SequenceCombinator right
 
char * sequence
 The sequence, as provided by the user.
 
Array * simpleSelectors
 The SimpleSelectors comprising this SelectorSequence.
 

Protected Attributes

SelectorSequenceInterface * interface
 The interface.
 

Detailed Description

SelectorSequences are comprised of one or more SimpleSelectors.

Definition at line 55 of file SelectorSequence.h.

Member Function Documentation

◆ _SelectorSequence()

Class * _SelectorSequence ( void  )

The SelectorSequence archetype.

Returns
The SelectorSequence Class.

Definition at line 190 of file SelectorSequence.c.

190 {
191 static Class *clazz;
192 static Once once;
193
194 do_once(&once, {
195 clazz = _initialize(&(const ClassDef) {
196 .name = "SelectorSequence",
197 .superclass = _Object(),
198 .instanceSize = sizeof(SelectorSequence),
199 .interfaceOffset = offsetof(SelectorSequence, interface),
200 .interfaceSize = sizeof(SelectorSequenceInterface),
202 });
203 });
204
205 return clazz;
206}
static void initialize(Class *clazz)
Definition Box.c:123
SelectorSequences are comprised of one or more SimpleSelectors.
SelectorSequenceInterface * interface
The interface.

◆ initWithSequence()

SelectorSequence * initWithSequence ( SelectorSequence self,
const char *  sequence 
)

Initializes this SelectorSequence with the given sequence.

Parameters
selfThe SelectorSequence.
sequenceA C-string specifying a sequence of SimpleSelectors.
Returns
The initialized SelectorSequence, or NULL on error.

Definition at line 66 of file SelectorSequence.c.

66 {
67
68 self = (SelectorSequence *) super(Object, self, init);
69 if (self) {
70
71 self->sequence = strtrim(sequence);
72 assert(self->sequence);
73
74 assert(strlen(self->sequence));
75
76 self->simpleSelectors = $$(SimpleSelector, parse, self->sequence);
77 assert(self->simpleSelectors->count);
78 }
79
80 return self;
81}
static View * init(View *self)
Definition Box.c:67
char * sequence
The sequence, as provided by the user.
Array * simpleSelectors
The SimpleSelectors comprising this SelectorSequence.
Array * parse(const char *rule)
Definition Selector.c:291
The SimpleSelector type.

◆ matchesView()

bool matchesView ( const SelectorSequence self,
const View view 
)
Parameters
selfThe SelectorSequence.
viewThe View.
Returns
True if all SimpleSelectors in this SelectorSequence match the given View, false otherwise.

Definition at line 87 of file SelectorSequence.c.

87 {
88
89 for (size_t i = 0; i < self->simpleSelectors->count; i++) {
90 const SimpleSelector *simpleSelector = $(self->simpleSelectors, objectAtIndex, i);
91 if ($(view, matchesSelector, simpleSelector) == false) {
92 return false;
93 }
94 }
95
96 return true;
97}
static bool matchesSelector(const View *self, const SimpleSelector *simpleSelector)

◆ parse()

Array * parse ( const char *  rule)
Parameters
ruleA C-string specifying a Selector rule.
Returns
The parsed SelectorSequences.

Definition at line 291 of file Selector.c.

291 {
292
293 Array *selectors = $$(Array, arrayWithCapacity, 4);
294 assert(selectors);
295
296 if (rules) {
297
298 const char *c = rules;
299 while (*c) {
300 const size_t size = strcspn(c, ",");
301 if (size) {
302 char *rule = calloc(1, size + 1);
303 assert(rule);
304
305 strncpy(rule, c, size);
306
307 Selector *selector = $(alloc(Selector), initWithRule, rule);
308 assert(selector);
309
310 $(selectors, addObject, selector);
311
312 release(selector);
313 free(rule);
314 }
315 c += size;
316 c += strspn(c, ", \t\n");
317 }
318 }
319
320 return (Array *) selectors;
321}
static SDL_Size size(const Image *self)
Definition Image.c:181
static Selector * initWithRule(Selector *self, const char *rule)
Definition Selector.c:190
Selectors are comprised of one or more SelectorSequences.
Definition Selector.h:49

Field Documentation

◆ interface

SelectorSequenceInterface* SelectorSequence::interface
protected

The interface.

Definition at line 66 of file SelectorSequence.h.

◆ left

SequenceCombinator SelectorSequence::left

The combinators.

Definition at line 71 of file SelectorSequence.h.

◆ object

Object SelectorSequence::object

The superclass.

Definition at line 60 of file SelectorSequence.h.

◆ right

SequenceCombinator SelectorSequence::right

Definition at line 71 of file SelectorSequence.h.

◆ sequence

char* SelectorSequence::sequence

The sequence, as provided by the user.

Definition at line 81 of file SelectorSequence.h.

◆ simpleSelectors

Array* SelectorSequence::simpleSelectors

The SimpleSelectors comprising this SelectorSequence.

Definition at line 76 of file SelectorSequence.h.


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