def generate_arrayclass(self, arrayclass, dirpath, namespace, stringtype):
		walker = JSONArrayClassWalker()

		cppheader = CppHeaderHandler(namespace, stringtype)
		walker.json_handlers.append(cppheader)
		cppbodybuilder = CppBodyBuilder(namespace, stringtype)
		walker.json_handlers.extend(cppbodybuilder.handlers)

		walker.walk(arrayclass)

		cppheader.save_to_dir(dirpath)
		cppbodybuilder.save_to_dir(dirpath)
	#print "array_types: ", array_types

	typename, is_multiple = cur_class
	if JSONXSDConstant.is_basic_type(typename) and not is_multiple:
		#single basic/simple type
		exit(0)

	classname = JSONXSDConstant.get_cpp_class_name(typename, is_multiple)
	if options.gentest:
		cpptest = CppTest(classname, options.namespace, options.stringtype)
		cpptest.savefile(os.path.join(options.dstdir, cpptest.filename))

	for typename, is_multiple in array_types:
		classname = JSONXSDConstant.get_cpp_class_name(typename, is_multiple)
		detailCpp = JSONDetailCppClass()
		detailCpp.save_to_dir(classname, options.dstdir, options.namespace, options.stringtype)

	for typename, is_multiple in dep_types:
		walker = JSONXSDWalker(schema)

		cppheader = CppHeaderHandler(options.namespace, options.stringtype)
		walker.json_handlers.append(cppheader)
		cppbodybuilder = CppBodyBuilder(options.namespace, options.stringtype)
		walker.json_handlers.extend(cppbodybuilder.handlers)

		#print "walking " + typename + ", " + str(is_multiple)
		walker.walk(typename, is_multiple)
		cppheader.save_to_dir(options.dstdir)
		cppbodybuilder.save_to_dir(options.dstdir)