36 GrowableArray<char*>* _array;
37 public:
38 StringArrayArgument() {
39 _array = new(ResourceObj::C_HEAP, mtInternal)GrowableArray<char *>(32, true);
40 assert(_array != NULL, "Sanity check");
41 }
42 void add(const char* str, size_t len) {
43 if (str != NULL) {
44 char* ptr = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
45 strncpy(ptr, str, len);
46 ptr[len] = 0;
47 _array->append(ptr);
48 }
49 }
50 GrowableArray<char*>* array() {
51 return _array;
52 }
53 ~StringArrayArgument() {
54 for (int i=0; i<_array->length(); i++) {
55 if(_array->at(i) != NULL) { // Safety check
56 FREE_C_HEAP_ARRAY(char, _array->at(i), mtInternal);
57 }
58 }
59 delete _array;
60 }
61 };
62
63 class NanoTimeArgument {
64 public:
65 jlong _nanotime;
66 jlong _time;
67 char _unit[3];
68 };
69
70 class MemorySizeArgument {
71 public:
72 u8 _size;
73 u8 _val;
74 char _multiplier;
75 };
76
|
36 GrowableArray<char*>* _array;
37 public:
38 StringArrayArgument() {
39 _array = new(ResourceObj::C_HEAP, mtInternal)GrowableArray<char *>(32, true);
40 assert(_array != NULL, "Sanity check");
41 }
42 void add(const char* str, size_t len) {
43 if (str != NULL) {
44 char* ptr = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
45 strncpy(ptr, str, len);
46 ptr[len] = 0;
47 _array->append(ptr);
48 }
49 }
50 GrowableArray<char*>* array() {
51 return _array;
52 }
53 ~StringArrayArgument() {
54 for (int i=0; i<_array->length(); i++) {
55 if(_array->at(i) != NULL) { // Safety check
56 FREE_C_HEAP_ARRAY(char, _array->at(i));
57 }
58 }
59 delete _array;
60 }
61 };
62
63 class NanoTimeArgument {
64 public:
65 jlong _nanotime;
66 jlong _time;
67 char _unit[3];
68 };
69
70 class MemorySizeArgument {
71 public:
72 u8 _size;
73 u8 _val;
74 char _multiplier;
75 };
76
|