// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #ifndef BIN_PROCESS_SCRIPT_H_ #define BIN_PROCESS_SCRIPT_H_ #include #include #include #include class CommandLineOptions { public: explicit CommandLineOptions(int max_count) : count_(0), max_count_(max_count), arguments_(NULL) { static const int kWordSize = sizeof(intptr_t); arguments_ = reinterpret_cast(malloc(max_count * kWordSize)); if (arguments_ == NULL) { max_count_ = 0; } } ~CommandLineOptions() { free(arguments_); count_ = 0; max_count_ = 0; arguments_ = NULL; } int count() const { return count_; } char** arguments() const { return arguments_; } char* GetArgument(int index) const { return (index >= 0 && index < count_) ? arguments_[index] : NULL; } void AddArgument(char* argument) { if (count_ < max_count_) { arguments_[count_] = argument; count_ += 1; } else { abort(); // We should never get into this situation. } } void operator delete(void* pointer) { abort(); } private: void* operator new(size_t size); CommandLineOptions(const CommandLineOptions&); void operator=(const CommandLineOptions&); int count_; int max_count_; char** arguments_; }; extern Dart_Result LoadScript(const char* script_name); #endif // BIN_PROCESS_SCRIPT_H_