Samond Classes Library 1.2.3-RELEASE build 192
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 - 2017 by Samond Development Corporation. All rights reserved.
7 //
8 
22 #import <scl/SCCollection.h>
23 
24 #pragma mark -
25 #pragma mark Class Constants
26 
35 #define SCStackClass @"SCStack"
36 
74 @interface SCStack : SCCollection {
75  NSMutableArray *fStack; // Internal data storage
76 }
77 
107 @property (nonatomic, readonly, assign) id topObject;
108 
111 #pragma mark -
112 #pragma mark Creating Stacks
113 + (instancetype)stackWithCoder:(NSCoder *)coder;
114 + (instancetype)stackWithContentsOfSerializedFile:(NSString *)path;
115 + (instancetype)stackWithDataDictionary:(NSDictionary *)dictionary;
116 + (instancetype)stackWithDataDictionaryFromFile:(NSString *)path;
117 + (instancetype)stackWithStream:(SCStream *)stream;
118 + (instancetype)stackWithFileStream:(NSString *)path;
119 + (instancetype)stackWithData:(NSData *)data;
120 + (instancetype)stackWithContentsOfFile:(NSString *)path;
121 + (instancetype)stackWithContentsOfURL:(NSURL *)url;
122 + (instancetype)stackWithContentsOfURLString:(NSString *)urlString;
123 
124 + (instancetype)stackWithName:(NSString *)name;
125 + (instancetype)stackWithObject:(id<SCCollectioning>)object;
126 + (instancetype)stackWithObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
127 + (instancetype)stackWithCollection:(id<SCCollection>)collection;
128 + (instancetype)stackWithArray:(SCArray *)array;
129 + (instancetype)stackWithStack:(SCStack *)stack;
130 + (instancetype)stack;
131 
132 #pragma mark -
133 #pragma mark Initializing Stacks
134 - (instancetype)initWithName:(NSString *)name;
135 - (instancetype)initWithObject:(id<SCCollectioning>)object;
136 - (instancetype)initWithObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
137 - (instancetype)initWithCollection:(id<SCCollection>)collection;
138 - (instancetype)initWithArray:(SCArray *)array;
139 - (instancetype)initWithStack:(SCStack *)stack;
140 - (instancetype)init;
141 
142 #pragma mark -
143 #pragma mark Copying Stacks
144 - (void)setStack:(SCStack *)stack;
145 
146 #pragma mark -
147 #pragma mark Comparing Stacks
148 - (BOOL)isEqualToStack:(SCStack *)stack;
149 
150 #pragma mark -
151 #pragma mark Deriving New Stacks
152 - (SCStack *)stackByPushingObject:(id<SCCollectioning>)object;
153 - (SCStack *)stackByPushingObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
154 - (SCStack *)stackByPushingCollection:(id<SCCollection>)collection;
155 - (SCStack *)stackByPushingObjectsFromArray:(SCArray *)array;
156 - (SCStack *)stackByPushingArray:(SCArray *)array;
157 - (SCStack *)stackByPushingObjectsFromStack:(SCStack *)stack;
158 - (SCStack *)stackByPushingStack:(SCStack *)stack;
159 
160 #pragma mark -
161 #pragma mark Pushing Objects
162 - (void)pushObject:(id<SCCollectioning>)object;
163 - (void)pushObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
164 - (void)pushCollection:(id<SCCollection>)collection;
165 - (void)pushObjectsFromArray:(SCArray *)array;
166 - (void)pushArray:(SCArray *)array;
167 - (void)pushObjectsFromStack:(SCStack *)stack;
168 - (void)pushStack:(SCStack *)stack;
169 
170 #pragma mark -
171 #pragma mark Poping Objects
172 - (void)pop;
173 - (id)popObject;
174 
175 #pragma mark -
176 #pragma mark Removing Objects
177 - (void)removeTopObject;
178 
179 #pragma mark -
180 #pragma mark Copying Objects
181 - (void)duplicateTopObject;
182 
183 @end
Collections communications protocol.
Definition: SCCollectioning.h:78
Abstract collections class.
Definition: SCCollection.h:97
Class SCCollection header file.
Stack of objects class.
Definition: SCStack.h:74
Array class.
Definition: SCArray.h:81
Abstract parent class of the stream classes hierarchy.
Definition: SCStream.h:238