Rewrite the internal code of get functions.

getExportVars -> getExportVarCount , getExportVarList
getExportFuncs -> getExportFuncCount , getExportFuncList
getPragmas -> getPragmaCount , getPragmaList
getFunctions -> getFuncCount, getFuncNameList
getFunctionBinary -> getFuncBinary
diff --git a/lib/bcc/ScriptCompiled.cpp b/lib/bcc/ScriptCompiled.cpp
index 5c07d99..9868580 100644
--- a/lib/bcc/ScriptCompiled.cpp
+++ b/lib/bcc/ScriptCompiled.cpp
@@ -39,56 +39,54 @@
   }
 }
 
-void ScriptCompiled::getExportVars(BCCsizei *actualVarCount,
-                                   BCCsizei maxVarCount,
-                                   BCCvoid **vars) {
-  int varCount = mExportVars.size();
-  if (actualVarCount)
-    *actualVarCount = varCount;
-  if (varCount > maxVarCount)
-    varCount = maxVarCount;
-  if (vars) {
+void ScriptCompiled::getExportVarList(size_t varListSize, void **varList) {
+  if (varList) {
+    size_t varCount = getExportVarCount();
+
+    if (varCount > varListSize) {
+      varCount = varListSize;
+    }
+
     for (ExportVarList::const_iterator
-         I = mExportVars.begin(), E = mExportVars.end(); I != E; I++) {
-      *vars++ = *I;
+         I = mExportVars.begin(), E = mExportVars.end();
+         I != E && varCount > 0; ++I, --varCount) {
+      *varList++ = *I;
     }
   }
 }
 
 
-void ScriptCompiled::getExportFuncs(BCCsizei *actualFuncCount,
-                                    BCCsizei maxFuncCount,
-                                    BCCvoid **funcs) {
-  int funcCount = mExportFuncs.size();
-  if (actualFuncCount)
-    *actualFuncCount = funcCount;
-  if (funcCount > maxFuncCount)
-    funcCount = maxFuncCount;
-  if (funcs) {
+void ScriptCompiled::getExportFuncList(size_t funcListSize, void **funcList) {
+  if (funcList) {
+    size_t funcCount = getExportFuncCount();
+
+    if (funcCount > funcListSize) {
+      funcCount = funcListSize;
+    }
+
     for (ExportFuncList::const_iterator
-         I = mExportFuncs.begin(), E = mExportFuncs.end(); I != E; I++) {
-      *funcs++ = *I;
+         I = mExportFuncs.begin(), E = mExportFuncs.end();
+         I != E && funcCount > 0; ++I, --funcCount) {
+      *funcList++ = *I;
     }
   }
 }
 
 
-void ScriptCompiled::getPragmas(BCCsizei *actualStringCount,
-                                BCCsizei maxStringCount,
-                                BCCchar **strings) {
-  int stringCount = mPragmas.size() * 2;
+void ScriptCompiled::getPragmaList(size_t pragmaListSize,
+                                   char const **keyList,
+                                   char const **valueList) {
+  size_t pragmaCount = getPragmaCount();
 
-  if (actualStringCount)
-    *actualStringCount = stringCount;
-  if (stringCount > maxStringCount)
-    stringCount = maxStringCount;
-  if (strings) {
-    size_t i = 0;
-    for (PragmaList::const_iterator it = mPragmas.begin();
-         stringCount >= 2; stringCount -= 2, it++, ++i) {
-      *strings++ = const_cast<BCCchar*>(it->first.c_str());
-      *strings++ = const_cast<BCCchar*>(it->second.c_str());
-    }
+  if (pragmaCount > pragmaListSize) {
+    pragmaCount = pragmaListSize;
+  }
+
+  for (PragmaList::const_iterator
+       I = mPragmas.begin(), E = mPragmas.end();
+       I != E && pragmaCount > 0; ++I, --pragmaCount) {
+    if (keyList) { *keyList++ = I->first.c_str(); }
+    if (valueList) { *valueList++ = I->second.c_str(); }
   }
 }
 
@@ -99,37 +97,40 @@
 }
 
 
-void ScriptCompiled::getFunctions(BCCsizei *actualFunctionCount,
-                                  BCCsizei maxFunctionCount,
-                                  BCCchar **functions) {
+void ScriptCompiled::getFuncNameList(size_t funcNameListSize,
+                                     char const **funcNameList) {
+  if (funcNameList) {
+    size_t funcCount = getFuncCount();
 
-  int functionCount = mEmittedFunctions.size();
+    if (funcCount > funcNameListSize) {
+      funcCount = funcNameListSize;
+    }
 
-  if (actualFunctionCount)
-    *actualFunctionCount = functionCount;
-  if (functionCount > maxFunctionCount)
-    functionCount = maxFunctionCount;
-  if (functions) {
     for (EmittedFunctionsMapTy::const_iterator
          I = mEmittedFunctions.begin(), E = mEmittedFunctions.end();
-         I != E && (functionCount > 0); I++, functionCount--) {
-      *functions++ = const_cast<BCCchar*>(I->first.c_str());
+         I != E && funcCount > 0; ++I, --funcCount) {
+      *funcNameList++ = I->first.c_str();
     }
   }
 }
 
 
-void ScriptCompiled::getFunctionBinary(BCCchar *funcname,
-                                       BCCvoid **base,
-                                       BCCsizei *length) {
+void ScriptCompiled::getFuncBinary(char const *funcname,
+                                   void **base,
+                                   size_t *length) {
   EmittedFunctionsMapTy::const_iterator I = mEmittedFunctions.find(funcname);
+
+#define DEREF_ASSIGN(VAR, VALUE) if (VAR) { *(VAR) = (VALUE); }
+
   if (I == mEmittedFunctions.end()) {
-    *base = NULL;
-    *length = 0;
+    DEREF_ASSIGN(base, NULL);
+    DEREF_ASSIGN(length, 0);
   } else {
-    *base = I->second->Code;
-    *length = I->second->Size;
+    DEREF_ASSIGN(base, I->second->Code);
+    DEREF_ASSIGN(length, I->second->Size);
   }
+
+#undef DEREF_ASSIGN
 }