Samond Classes Library 1.2.6-STABLE build 219
SCStack.h
Go to the documentation of this file.
1 //
2 // SCStack.h
3 // scl
4 //
5 // Created by Viacheslav Smolensky on 13.04.12.
6 // Copyright (c) 2007 - 2018 by Samond Development Corporation. All rights reserved.
7 //
8 
22 #import <Foundation/Foundation.h>
23 #import <scl/NSArray+SCArray.h>
25 #import <scl/SCCollection.h>
26 
27 #pragma mark -
28 #pragma mark Class Constants
29 
38 #define SCStackClass @"SCStack"
39 
77 @interface SCStack : SCCollection {
78  NSMutableArray *_stack; // Internal data storage
79 }
80 
110 @property (nonatomic, readonly, assign) id topObject;
111 
114 #pragma mark -
115 #pragma mark Creating Stacks
116 + (instancetype)stackWithCoder:(NSCoder *)coder;
117 + (instancetype)stackWithContentsOfSerializedFile:(NSString *)path;
118 + (instancetype)stackWithDataDictionary:(NSDictionary *)dictionary;
119 + (instancetype)stackWithDataDictionaryFromFile:(NSString *)path;
120 + (instancetype)stackWithStream:(SCStream *)stream;
121 + (instancetype)stackWithFileStream:(NSString *)path;
122 + (instancetype)stackWithData:(NSData *)data;
123 + (instancetype)stackWithContentsOfFile:(NSString *)path;
124 + (instancetype)stackWithContentsOfURL:(NSURL *)url;
125 + (instancetype)stackWithContentsOfURLString:(NSString *)urlString;
126 
127 + (instancetype)stackWithName:(NSString *)name;
128 + (instancetype)stackWithObject:(id<SCCollectioning>)object;
129 + (instancetype)stackWithObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
130 + (instancetype)stackWithCollection:(id<SCCollection>)collection;
131 + (instancetype)stackWithArray:(SCArray *)array;
132 + (instancetype)stackWithStack:(SCStack *)stack;
133 + (instancetype)stack;
134 
135 #pragma mark -
136 #pragma mark Initializing Stacks
137 - (instancetype)initWithName:(NSString *)name;
138 - (instancetype)initWithObject:(id<SCCollectioning>)object;
139 - (instancetype)initWithObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
140 - (instancetype)initWithCollection:(id<SCCollection>)collection;
141 - (instancetype)initWithArray:(SCArray *)array;
142 - (instancetype)initWithStack:(SCStack *)stack;
143 - (instancetype)init;
144 
145 #pragma mark -
146 #pragma mark Copying Stacks
147 - (void)setStack:(SCStack *)stack;
148 
149 #pragma mark -
150 #pragma mark Comparing Stacks
151 - (BOOL)isEqualToStack:(SCStack *)stack;
152 
153 #pragma mark -
154 #pragma mark Deriving New Stacks
155 - (SCStack *)stackByPushingObject:(id<SCCollectioning>)object;
156 - (SCStack *)stackByPushingObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
157 - (SCStack *)stackByPushingCollection:(id<SCCollection>)collection;
158 - (SCStack *)stackByPushingObjectsFromArray:(SCArray *)array;
159 - (SCStack *)stackByPushingArray:(SCArray *)array;
160 - (SCStack *)stackByPushingObjectsFromStack:(SCStack *)stack;
161 - (SCStack *)stackByPushingStack:(SCStack *)stack;
162 
163 #pragma mark -
164 #pragma mark Pushing Objects
165 - (void)pushObject:(id<SCCollectioning>)object;
166 - (void)pushObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
167 - (void)pushCollection:(id<SCCollection>)collection;
168 - (void)pushObjectsFromArray:(SCArray *)array;
169 - (void)pushArray:(SCArray *)array;
170 - (void)pushObjectsFromStack:(SCStack *)stack;
171 - (void)pushStack:(SCStack *)stack;
172 
173 #pragma mark -
174 #pragma mark Poping Objects
175 - (void)pop;
176 - (id)popObject;
177 
178 #pragma mark -
179 #pragma mark Removing Objects
180 - (void)removeTopObject;
181 
182 #pragma mark -
183 #pragma mark Copying Objects
184 - (void)duplicateTopObject;
185 
186 @end
Caregory NSArray(SCArray) header file.
Collections communications protocol.
Definition: SCCollectioning.h:79
Category NSDictionary(SCDictionary) header file.
Abstract collections class.
Definition: SCCollection.h:98
Class SCCollection header file.
Stack of objects class.
Definition: SCStack.h:77
Array class.
Definition: SCArray.h:84
Abstract parent class of the stream classes hierarchy.
Definition: SCStream.h:224