ObjectivelyMVC 0.1.0
Object oriented MVC framework for OpenGL, SDL2 and GNU C
Public Member Functions | Data Fields | Protected Attributes
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. More...
 
SelectorSequenceinitWithSequence (SelectorSequence *self, const char *sequence)
 Initializes this SelectorSequence with the given sequence. More...
 
_Bool matchesView (const SelectorSequence *self, const View *view)
 
Array * parse (const char *rule)
 

Data Fields

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

Protected Attributes

SelectorSequenceInterface * interface
 The interface. More...
 

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 189 of file SelectorSequence.c.

189 {
190 static Class *clazz;
191 static Once once;
192
193 do_once(&once, {
194 clazz = _initialize(&(const ClassDef) {
195 .name = "SelectorSequence",
196 .superclass = _Object(),
197 .instanceSize = sizeof(SelectorSequence),
198 .interfaceOffset = offsetof(SelectorSequence, interface),
199 .interfaceSize = sizeof(SelectorSequenceInterface),
201 });
202 });
203
204 return clazz;
205}
static void initialize(Class *clazz)
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 65 of file SelectorSequence.c.

65 {
66
67 self = (SelectorSequence *) super(Object, self, init);
68 if (self) {
69
70 self->sequence = strtrim(sequence);
71 assert(self->sequence);
72
73 assert(strlen(self->sequence));
74
75 self->simpleSelectors = $$(SimpleSelector, parse, self->sequence);
76 assert(self->simpleSelectors->count);
77 }
78
79 return self;
80}
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:274
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 86 of file SelectorSequence.c.

86 {
87
88 for (size_t i = 0; i < self->simpleSelectors->count; i++) {
89 const SimpleSelector *simpleSelector = $(self->simpleSelectors, objectAtIndex, i);
90 if ($(view, matchesSelector, simpleSelector) == false) {
91 return false;
92 }
93 }
94
95 return true;
96}
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 274 of file Selector.c.

274 {
275
276 MutableArray *selectors = $$(MutableArray, arrayWithCapacity, 4);
277 assert(selectors);
278
279 if (rules) {
280
281 const char *c = rules;
282 while (*c) {
283 const size_t size = strcspn(c, ",");
284 if (size) {
285 char *rule = calloc(1, size + 1);
286 assert(rule);
287
288 strncpy(rule, c, size);
289
290 Selector *selector = $(alloc(Selector), initWithRule, rule);
291 assert(selector);
292
293 $(selectors, addObject, selector);
294
295 release(selector);
296 free(rule);
297 }
298 c += size;
299 c += strspn(c, ", \t\n");
300 }
301 }
302
303 return (Array *) selectors;
304}
static SDL_Size size(const Image *self)
Definition: Image.c:181
static Selector * initWithRule(Selector *self, const char *rule)
Definition: Selector.c:188
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: