aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCArray.h
blob: 7e82ad9ed3c01155d27698fd45e626919f274a42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef MAILCORE_MCARRAY_H

#define MAILCORE_MCARRAY_H

#include <MailCore/MCObject.h>

#ifdef __cplusplus

typedef struct carray_s carray;

namespace mailcore {
    
    class String;
    
    class MAILCORE_EXPORT Array : public Object {
    public:
        Array();
        virtual ~Array();
        
        static Array * array();
        static Array * arrayWithObject(Object * obj);
        
        virtual unsigned int count();
        virtual void addObject(Object * obj);
        virtual void removeObjectAtIndex(unsigned int idx);
        virtual void removeObject(Object * obj);
        virtual int indexOfObject(Object * obj);
        virtual Object * objectAtIndex(unsigned int idx);
        virtual void replaceObject(unsigned int idx, Object * obj);
        virtual void insertObject(unsigned int idx, Object * obj);
        virtual void removeAllObjects();
        
        virtual void addObjectsFromArray(Array * array);
        virtual Object * lastObject();
        virtual void removeLastObject();
        virtual bool containsObject(Object * obj);
        
        virtual Array * sortedArray(int (* compare)(void * a, void * b, void * context), void * context);
        virtual void sortArray(int (* compare)(void * a, void * b, void * context), void * context);
        virtual String * componentsJoinedByString(String * delimiter);
        
    public: // subclass behavior
        Array(Array * o);
        virtual String * description();
        virtual Object * copy();
        virtual HashMap * serializable();
        virtual void importSerializable(HashMap * serializable);
        
    private:
        carray * mArray;
        void init();
    };
    
}

#endif

#endif